From 425c00a0d1a2e651d84d2fd5911b544c369e6ca8 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Sat, 30 Mar 2024 10:13:51 +0800 Subject: [PATCH] [fix](agg) incorrect result with having conjuncts and limit (#33040) --- be/src/pipeline/exec/aggregation_sink_operator.cpp | 3 ++- regression-test/data/nereids_p0/aggregate/aggregate.out | 2 ++ .../suites/nereids_p0/aggregate/aggregate.groovy | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/be/src/pipeline/exec/aggregation_sink_operator.cpp b/be/src/pipeline/exec/aggregation_sink_operator.cpp index 64c946e6da..6e0042da7d 100644 --- a/be/src/pipeline/exec/aggregation_sink_operator.cpp +++ b/be/src/pipeline/exec/aggregation_sink_operator.cpp @@ -631,7 +631,8 @@ AggSinkOperatorX::AggSinkOperatorX(ObjectPool* pool, int operator_id, const TPla _is_first_phase(tnode.agg_node.__isset.is_first_phase && tnode.agg_node.is_first_phase), _pool(pool), _limit(tnode.limit), - _have_conjuncts(tnode.__isset.vconjunct && !tnode.vconjunct.nodes.empty()), + _have_conjuncts((tnode.__isset.vconjunct && !tnode.vconjunct.nodes.empty()) || + (tnode.__isset.conjuncts && !tnode.conjuncts.empty())), _partition_exprs(tnode.__isset.distribute_expr_lists ? tnode.distribute_expr_lists[0] : std::vector {}), _is_colocate(tnode.agg_node.__isset.is_colocate && tnode.agg_node.is_colocate) {} diff --git a/regression-test/data/nereids_p0/aggregate/aggregate.out b/regression-test/data/nereids_p0/aggregate/aggregate.out index 584fc855e0..f81a14f0ce 100644 --- a/regression-test/data/nereids_p0/aggregate/aggregate.out +++ b/regression-test/data/nereids_p0/aggregate/aggregate.out @@ -377,3 +377,5 @@ TESTING AGAIN -- !select_quantile_percent -- 5000.0 +-- !having_with_limit -- +7 -32767.0 diff --git a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy index 2446fcf092..760333f3e7 100644 --- a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy +++ b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy @@ -343,4 +343,10 @@ suite("aggregate") { """ exception "aggregate function cannot contain aggregate parameters" } + + sql " set parallel_pipeline_task_num = 1; " + sql " set enable_pipeline_x_engine = 1; " + qt_having_with_limit """ + select k1 as k, avg(k2) as k2 from tempbaseall group by k1 having k2 < -32765 limit 1; + """ }