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

Commit 5e067be

Browse files
authored
apply rule works for expr instead of group (#44)
Signed-off-by: AveryQi115 <[email protected]>
1 parent 90d254b commit 5e067be

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

optd-core/src/cascades/tasks/apply_rule.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ fn match_node<T: RelNodeTyp>(
125125
picks
126126
}
127127

128+
fn match_and_pick_expr<T: RelNodeTyp>(
129+
matcher: &RuleMatcher<T>,
130+
expr_id: ExprId,
131+
optimizer: &CascadesOptimizer<T>,
132+
) -> Vec<HashMap<usize, RelNode<T>>> {
133+
let node = optimizer.get_expr_memoed(expr_id);
134+
match_and_pick(matcher, node, optimizer)
135+
}
136+
128137
fn match_and_pick_group<T: RelNodeTyp>(
129138
matcher: &RuleMatcher<T>,
130139
group_id: GroupId,
@@ -183,7 +192,7 @@ impl<T: RelNodeTyp> Task<T> for ApplyRuleTask {
183192
trace!(event = "task_begin", task = "apply_rule", expr_id = %self.expr_id, rule_id = %self.rule_id, rule = %rule.name());
184193
let group_id = optimizer.get_group_id(self.expr_id);
185194
let mut tasks = vec![];
186-
let binding_exprs = match_and_pick_group(rule.matcher(), group_id, optimizer);
195+
let binding_exprs = match_and_pick_expr(rule.matcher(), self.expr_id, optimizer);
187196
for expr in binding_exprs {
188197
let applied = rule.apply(optimizer, expr);
189198
for expr in applied {

0 commit comments

Comments
 (0)