Skip to content

Commit

Permalink
[fix](planner)fix bug of bound conjunct to wrong tuple (#28811)
Browse files Browse the repository at this point in the history
this fix bug introduced by #28656
  • Loading branch information
starocean999 authored Dec 21, 2023
1 parent 4f1aebb commit a16680c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1335,12 +1335,12 @@ public void registerConjuncts(Expr e, boolean fromHavingClause) throws AnalysisE
public void registerConjuncts(Expr e, boolean fromHavingClause, List<TupleId> ids) throws AnalysisException {
for (Expr conjunct : e.getConjuncts()) {
registerConjunct(conjunct);
if (!e.isConstant()) {
if (!conjunct.isConstant()) {
ArrayList<TupleId> tupleIds = Lists.newArrayList();
ArrayList<SlotId> slotIds = Lists.newArrayList();
e.getIds(tupleIds, slotIds);
conjunct.getIds(tupleIds, slotIds);
if (tupleIds.isEmpty() && slotIds.isEmpty()) {
e.setBoundTupleIds(ids);
conjunct.setBoundTupleIds(ids);
}
}
if (ids != null) {
Expand Down
6 changes: 6 additions & 0 deletions regression-test/suites/correctness_p0/test_rand_filter.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,11 @@ suite("test_rand_filter") {
sql("""select * from test_rand_filter_t where rand() < 0.5 union all select * from test_rand_filter_t where rand() > 0.3;""")
notContains("AND")
}
explain {
sql("""select * from test_rand_filter_t
union all (select * from test_rand_filter_t where rand() < 0.3)
union all (select * from test_rand_filter_t where a > 5 and rand() < 0.4);""")
notContains("rand() < 0.3 AND rand() < 0.4")
}
sql """ DROP TABLE IF EXISTS test_rand_filter_t """
}

0 comments on commit a16680c

Please sign in to comment.