Repository navigation
characterization tests and atime overhead guard for [ modularization - #7931
ben-schwen wants to merge 2 commits into
Conversation
1856d0e to
a2e6a4a
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7931 +/- ##
=======================================
Coverage 99.08% 99.09%
=======================================
Files 88 88
Lines 17420 17420
=======================================
+ Hits 17261 17262 +1
+ Misses 159 158 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Aside -- are you using |
Nah I'm doing it quite old school. I have a development branch where I do everything and push a lot locally. Before pushing to github I cherry-pick and squash manually. |
|
well consider this my shameless plug for |
|
you guys don’t use magit ??!! (emacs joke) |
…852) Pins down behaviour that the upcoming refactor of [.data.table could silently change: resolution of i/j/by/on/.SDcols/env= in the calling frame (incl. nested closures), .N shadowing in the caller, early returns, missing() semantics (including arguments substituted to the empty symbol via env=), forms of i, forms of j with with=FALSE and also forms of by. joins combined with by=.EACHI/:=/roll, and := forms. Also covers some previously uncovered lines (mult='error' without duplicates, datatable.join.many=FALSE, := on key column). Adds an atime test measuring the per-call overhead of [.
a2e6a4a to
9a0901b
Compare
|
Error on CI is To reproduce locally I did tinfo <- atime::atime_pkg_test_info("~/R/data.table")
tcall <- tinfo$test.call[["DT[i,j,by] per-call overhead for #852"]]
options(datatable.verbose=TRUE)
tres <- eval(tcall)and I got This is happening when i is used at same time as by: (the issue does not happen in the other two usages in the test case, because they do not use i with by) data.table:::`[.data.table`(dt, a > 2L, .(s = sum(v)), by = g)which calls this code in xss = `[.data.table`(x,irows,allbyvars,with=FALSE,nomatch=nomatch,mult=mult,roll=roll,rollends=rollends)
} else {
if (verbose) catf("i clause present but columns used in by not detected. Having to subset all columns before evaluating 'by': '%s'\n", deparse(by))
xss = `[.data.table`(x,irows,nomatch=nomatch,mult=mult,roll=roll,rolI think the issue is that cedta thinks these recursive calls are not dt-aware? Not sure how to fix. |
Yes. I hope my fix works, fingers crossed :D |
(Plot image upload to picrd.com failed; download the artifact below to view plots) Generated via commit 08f3c81 Download link for the artifact containing the test results: ↓ atime-results.zip
|
Towards #852
This PR is the starting point of modularizing [.
I will build it as stack on top of each other. I moved the tests to a new script since [ is such a central piece that I thought it deserves its own place. Moreover, it gives us the chance to set them as optional.