Skip to content
This repository has been archived by the owner on Jan 7, 2025. It is now read-only.

feat: Filter Pushdown Rule #140

Merged
merged 46 commits into from
Apr 9, 2024
Merged
Changes from 1 commit
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
8f09e0e
Add recursive logic, and add filter/sort transpose logic
jurplel Feb 23, 2024
e84a576
change a couple notes
jurplel Feb 23, 2024
097029a
Modularize projection rewriting code from ProjectionPullUpJoin rule (…
jurplel Mar 12, 2024
b5e881f
Hardcoded filter/sort test
jurplel Mar 17, 2024
67e9632
push past projection w/ broken test
jurplel Mar 17, 2024
330cdac
Implement filter merge
jurplel Mar 17, 2024
64d5572
More prog on join
jurplel Mar 18, 2024
6020a31
merge
jurplel Mar 18, 2024
bc100ed
Publicize flattened_nested_logical
jurplel Mar 18, 2024
abbd6b7
Fix filter merge
jurplel Mar 18, 2024
f78f37b
Join progress
jurplel Mar 18, 2024
9c9c515
Add dummy cost model
jurplel Mar 21, 2024
f4a8506
dummmy catalog + dummy optimizer method
jurplel Mar 21, 2024
e7d4c35
Join test start
jurplel Mar 22, 2024
609233d
Filter pushdown is beginning to work
jurplel Mar 23, 2024
bb3d1a2
Working testing infra + all tests working!
jurplel Mar 25, 2024
9cb0894
Fix projection mistake
jurplel Mar 25, 2024
038db19
restructure predicate traversal
jurplel Mar 25, 2024
5023c2a
Push filter past agg
jurplel Mar 25, 2024
dacc205
Merge w/ main
jurplel Mar 25, 2024
924649b
Remove print
jurplel Mar 25, 2024
16650a3
two stage heuristic
AveryQi115 Mar 26, 2024
72e1484
Merge remote-tracking branch 'origin/main' into bowad/filter_pushdown
jurplel Mar 26, 2024
7d1768e
merge w/ two-stage
jurplel Mar 26, 2024
5d71f67
Revise testing infra and port filter pushdown to it
jurplel Mar 26, 2024
927717f
Make categorize_conds_helper more flexible
jurplel Mar 26, 2024
2e906c8
Fix crashes related to List
jurplel Mar 26, 2024
88397f4
Improve generation of singleton expressions
jurplel Mar 26, 2024
7f2f942
Update tpc-h sqlplannertest with filter pushdown run
jurplel Mar 26, 2024
52f9408
non-merging merge
jurplel Mar 26, 2024
c701b14
More polish + rewrite a join helper as rewrite_column_refs
jurplel Mar 27, 2024
73e4e23
rewrite one more thing as rewrite_column_refs
jurplel Mar 27, 2024
4b4322a
clippy fix
jurplel Mar 27, 2024
b407d8a
fmt fix
jurplel Mar 27, 2024
db56f27
Fmt fix again
jurplel Mar 27, 2024
e60e3eb
Additional documentation for rewrite_column_refs
jurplel Mar 27, 2024
5cae5b3
Remove old TODOs in filter_pushdown.rs
jurplel Mar 27, 2024
9fdaa25
Separate filter pushdown rules (includes helper modifications)
jurplel Mar 28, 2024
e84ffd9
merge for some reason
jurplel Mar 28, 2024
6119dbb
Get children from groups, now
jurplel Mar 28, 2024
53098e6
Change rules to cost-based
jurplel Mar 28, 2024
d3b1882
Missed a spot with group conversions
jurplel Mar 28, 2024
5e9b482
Address most comments
jurplel Mar 30, 2024
647614d
Finally address yilang412 comments
jurplel Apr 9, 2024
ca108ca
Merge remote-tracking branch 'origin/main' into bowad/filter_pushdown
jurplel Apr 9, 2024
d5bc7f9
Merge
jurplel Apr 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Remove old TODOs in filter_pushdown.rs
  • Loading branch information
jurplel authored Mar 27, 2024
commit 5cae5b3d1e7035581c79161ea21a1e04c1d785e2
4 changes: 0 additions & 4 deletions optd-datafusion-repr/src/rules/filter_pushdown.rs
Original file line number Diff line number Diff line change
@@ -136,7 +136,6 @@ fn filter_project_transpose(
let old_proj = LogicalProjection::from_rel_node(child.into()).unwrap();
let cond_as_expr = Expr::from_rel_node(cond.into()).unwrap();

// TODO: Implement get_property in heuristics optimizer
let projection_schema_len = optimizer
.get_property::<SchemaPropertyBuilder>(old_proj.clone().into_rel_node(), 0)
.len();
@@ -356,7 +355,6 @@ fn apply_filter_pushdown(
let mut result_from_this_step = match child.typ {
OptRelNodeTyp::Projection => filter_project_transpose(optimizer, child, cond),
OptRelNodeTyp::Filter => filter_merge(optimizer, child, cond),
// OptRelNodeTyp::Scan => todo!(), // TODO: Add predicate field to scan node
OptRelNodeTyp::Join(_) => filter_join_transpose(optimizer, child, cond),
OptRelNodeTyp::Sort => filter_sort_transpose(optimizer, child, cond),
OptRelNodeTyp::Agg => filter_agg_transpose(optimizer, child, cond),
@@ -372,7 +370,6 @@ fn apply_filter_pushdown(
let child_as_filter = LogicalFilter::from_rel_node(child.clone()).unwrap();
let childs_child = child_as_filter.child().into_rel_node().as_ref().clone();
let childs_cond = child_as_filter.cond().into_rel_node().as_ref().clone();
// @todo: make this iterative?
let result = apply_filter_pushdown(
optimizer,
FilterPushdownRulePicks {
@@ -432,7 +429,6 @@ mod tests {

#[test]
fn filter_merge() {
// TODO: write advanced proj with more expr that need to be transformed
let mut test_optimizer = new_test_optimizer(Arc::new(FilterPushdownRule::new()));

let scan = LogicalScan::new("customer".into());
Loading