-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split ColumnOp
into one with row indices and one with FieldName
& other enabled changes
#1207
Conversation
2ca64d3
to
754654c
Compare
27c19aa
to
e4f8dd9
Compare
340516e
to
7aaa0ef
Compare
ColumnOp
into one with row indices and one with FieldName
ColumnOp
into one with row indices and one with FieldName
& other enabled changes
benchmarks please |
Criterion benchmark resultsCriterion benchmark reportYOU SHOULD PROBABLY IGNORE THESE RESULTS. Criterion is a wall time based benchmarking system that is extremely noisy when run on CI. We collect these results for longitudinal analysis, but they are not reliable for comparing individual PRs. Go look at the callgrind report instead. empty
insert_1
insert_bulk
iterate
find_unique
filter
serialize
stdb_module_large_arguments
stdb_module_print_bulk
remaining
|
Callgrind benchmark resultsCallgrind Benchmark ReportThese benchmarks were run using callgrind, Measurement changes larger than five percent are in bold. In-memory benchmarkscallgrind: empty transaction
callgrind: filter
callgrind: insert bulk
callgrind: iterate
callgrind: serialize_product_value
callgrind: update bulk
On-disk benchmarkscallgrind: empty transaction
callgrind: filter
callgrind: insert bulk
callgrind: iterate
callgrind: serialize_product_value
callgrind: update bulk
|
cf8e041
to
c1d8311
Compare
7aaa0ef
to
3ccfeac
Compare
5bc3f77
to
8ca55bf
Compare
3ccfeac
to
3968f4f
Compare
8ca55bf
to
a53bb88
Compare
74f913e
to
13eca30
Compare
a53bb88
to
72b74e4
Compare
13eca30
to
9227167
Compare
2. Shrink SqlAst to 80 bytes, so it can be passed in registers 3. Store end-result Header in IndexSemiJoin 4. Remove operational use of Header in ColumnOp & build_query 5. Simplify RowRef::{get, project, project_owned}
1. Make IndexSemiJoin::filter infallible. 2. Make ColumnOp::compare and friends infallible. 3. Make RowRef::{get, project, project_owned} infallible.
2. Document RelValue::{get, read_or_take_column, project_owned} 3. Refactor optimize_select 4. Ensure in optimize_select that conditions are merged with preceding selects
9227167
to
aed0b12
Compare
Description of Changes
The main goal of this PR
This PR has some main goals, while other changes are less important and are done as additional work (see commit descriptions). I recommend reviewing this PR commit by commit after having reviewed #1166 upon which this PR is based.
In this PR, we want to:
build_query
and query execution work on aColumnOp
that storesColId
rather thanFieldName
(23e00d2). The previous version ofColumnOp
is now calledFieldOp
and usesFieldName
as before. This type is used by SQL compilation and query planning and is eventually compiled down to aColumnOp
. This means thatHeader
is no longer used byColumnOp
norbuild_query
.build_query
itself (20340c8) and query execution infallible (3415702 and 986d80e). To make this possible, we must ensure that we only getbool
s where anything else does not make sense (977b5bb).IndexSemiJoin
into left and right versions (e0c12ce and 3968f4f). This enables us to make both versions less branchy and to significantly shrink the size of the right case (312 bytes vs 64).Benchmarks
Benchmarks relative to based master on i7-7700K, 64GB RAM:
API and ABI breaking changes
None
Expected complexity level and risk
2, large diff in terms of query planning and execution, but each change isn't as huge.
Testing
Existing tests have been tweaked to fit the changes.