[fix](planner)group_concat lost order by info in second phase merge agg (#16479)
This commit is contained in:
@ -558,8 +558,10 @@ public final class AggregateInfo extends AggregateInfoBase {
|
||||
Preconditions.checkState(inputExpr.isAggregateFunction());
|
||||
Expr aggExprParam =
|
||||
new SlotRef(inputDesc.getSlots().get(i + getGroupingExprs().size()));
|
||||
FunctionCallExpr aggExpr = FunctionCallExpr.createMergeAggCall(
|
||||
inputExpr, Lists.newArrayList(aggExprParam), inputExpr.getFnParams().exprs());
|
||||
FunctionParams fnParams = inputExpr.getAggFnParams();
|
||||
FunctionCallExpr aggExpr =
|
||||
FunctionCallExpr.createMergeAggCall(inputExpr, Lists.newArrayList(aggExprParam),
|
||||
fnParams != null ? fnParams.exprs() : inputExpr.getFnParams().exprs());
|
||||
aggExpr.analyzeNoThrow(analyzer);
|
||||
// do not need analyze in merge stage, just do mark for BE get right function
|
||||
aggExpr.setOrderByElements(inputExpr.getOrderByElements());
|
||||
@ -691,6 +693,7 @@ public final class AggregateInfo extends AggregateInfoBase {
|
||||
new SlotRef(inputDesc.getSlots().get(i + getGroupingExprs().size()));
|
||||
FunctionCallExpr aggExpr = FunctionCallExpr.createMergeAggCall(
|
||||
inputExpr, Lists.newArrayList(aggExprParam), inputExpr.getFnParams().exprs());
|
||||
aggExpr.setOrderByElements(inputExpr.getOrderByElements());
|
||||
secondPhaseAggExprs.add(aggExpr);
|
||||
}
|
||||
Preconditions.checkState(
|
||||
|
||||
@ -221,6 +221,10 @@ public class FunctionCallExpr extends Expr {
|
||||
this.aggFnParams = aggFnParams;
|
||||
}
|
||||
|
||||
public FunctionParams getAggFnParams() {
|
||||
return aggFnParams;
|
||||
}
|
||||
|
||||
public void setIsAnalyticFnCall(boolean v) {
|
||||
isAnalyticFnCall = v;
|
||||
}
|
||||
|
||||
@ -41,8 +41,6 @@ public class GroupConcat extends NullableAggregateFunction
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT).args(VarcharType.SYSTEM_DEFAULT),
|
||||
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
|
||||
.args(VarcharType.SYSTEM_DEFAULT, VarcharType.SYSTEM_DEFAULT),
|
||||
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
|
||||
.varArgs(VarcharType.SYSTEM_DEFAULT, AnyDataType.INSTANCE),
|
||||
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
|
||||
|
||||
@ -85,3 +85,6 @@ false
|
||||
25699 1989
|
||||
2147483647 255:1991:32767:32767
|
||||
|
||||
-- !select --
|
||||
12 false, false, false, false, false, false, false, false, true, true, true, true, true, true, true
|
||||
|
||||
|
||||
@ -45,6 +45,9 @@ false
|
||||
25699 1989
|
||||
2147483647 255:1991:32767:32767
|
||||
|
||||
-- !select --
|
||||
12 false, false, false, false, false, false, false, false, true, true, true, true, true, true, true
|
||||
|
||||
-- !select --
|
||||
\N \N
|
||||
103 255
|
||||
|
||||
@ -55,4 +55,7 @@ suite("test_group_concat") {
|
||||
qt_select """
|
||||
SELECT abs(k3), group_concat(distinct cast(abs(k2) as char), ":" order by abs(k1), k2) FROM test_query_db.baseall group by abs(k3) order by abs(k3);
|
||||
"""
|
||||
qt_select """
|
||||
SELECT count(distinct k7), group_concat(k6 order by k6) FROM test_query_db.baseall;
|
||||
"""
|
||||
}
|
||||
|
||||
@ -37,6 +37,9 @@ suite("test_group_concat") {
|
||||
qt_select """
|
||||
SELECT abs(k3), group_concat(distinct cast(abs(k2) as char), ":" order by abs(k1), k2) FROM test_query_db.baseall group by abs(k3) order by abs(k3);
|
||||
"""
|
||||
qt_select """
|
||||
SELECT count(distinct k7), group_concat(k6 order by k6) FROM test_query_db.baseall;
|
||||
"""
|
||||
|
||||
sql "set enable_nereids_planner=true"
|
||||
sql "set enable_vectorized_engine=true"
|
||||
|
||||
Reference in New Issue
Block a user