diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java index 02fbc137b36027..6329882d862ac9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java @@ -1271,12 +1271,12 @@ public void registerConjuncts(Expr e, boolean fromHavingClause) throws AnalysisE public void registerConjuncts(Expr e, boolean fromHavingClause, List ids) throws AnalysisException { for (Expr conjunct : e.getConjuncts()) { registerConjunct(conjunct); - if (!e.isConstant()) { + if (!conjunct.isConstant()) { ArrayList tupleIds = Lists.newArrayList(); ArrayList 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) { diff --git a/regression-test/suites/correctness_p0/test_rand_filter.groovy b/regression-test/suites/correctness_p0/test_rand_filter.groovy index ccad3161caf2ce..40f5e1fe2096ad 100644 --- a/regression-test/suites/correctness_p0/test_rand_filter.groovy +++ b/regression-test/suites/correctness_p0/test_rand_filter.groovy @@ -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 """ }