You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/06/20 13:00:26 UTC
[doris] branch master updated: [Fix](Planner) Fix group concat with multi distinct and segs (#20912)
This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f10258577b [Fix](Planner) Fix group concat with multi distinct and segs (#20912)
f10258577b is described below
commit f10258577b02bc10c5076f0fad67a635eb9a269f
Author: LiBinfeng <46...@users.noreply.github.com>
AuthorDate: Tue Jun 20 21:00:18 2023 +0800
[Fix](Planner) Fix group concat with multi distinct and segs (#20912)
Problem:
when use select group_concat(distinct a, 'seg1'), group_concat(distinct b, 'seg2') ... Error would rised
Reason:
Group_concat function regard 'seg' as arguments also, so multi distinct column error would rised
Solved:
let Multi Distinct group_concat function only get first argument as real argument
---
.../src/main/java/org/apache/doris/analysis/AggregateInfo.java | 8 ++++++--
regression-test/data/query_p0/group_concat/test_group_concat.out | 4 ++++
.../suites/query_p0/group_concat/test_group_concat.groovy | 9 +++++++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
index 4c8e62397a..7d00bf5291 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
@@ -283,7 +283,9 @@ public final class AggregateInfo extends AggregateInfoBase {
}
ArrayList<Expr> expr0Children = Lists.newArrayList();
- if (distinctAggExprs.get(0).getFnName().getFunction().equalsIgnoreCase("group_concat")) {
+ if (distinctAggExprs.get(0).getFnName().getFunction().equalsIgnoreCase("group_concat")
+ || distinctAggExprs.get(0).getFnName().getFunction()
+ .equalsIgnoreCase("multi_distinct_group_concat")) {
// Ignore separator parameter, otherwise the same would have to be present for all
// other distinct aggregates as well.
// TODO: Deal with constant exprs more generally, instead of special-casing
@@ -297,7 +299,9 @@ public final class AggregateInfo extends AggregateInfoBase {
boolean hasMultiDistinct = false;
for (int i = 1; i < distinctAggExprs.size(); ++i) {
ArrayList<Expr> exprIChildren = Lists.newArrayList();
- if (distinctAggExprs.get(i).getFnName().getFunction().equalsIgnoreCase("group_concat")) {
+ if (distinctAggExprs.get(i).getFnName().getFunction().equalsIgnoreCase("group_concat")
+ || distinctAggExprs.get(i).getFnName().getFunction()
+ .equalsIgnoreCase("multi_distinct_group_concat")) {
exprIChildren.add(distinctAggExprs.get(i).getChild(0).ignoreImplicitCast());
} else {
for (Expr expr : distinctAggExprs.get(i).getChildren()) {
diff --git a/regression-test/data/query_p0/group_concat/test_group_concat.out b/regression-test/data/query_p0/group_concat/test_group_concat.out
index 2895251f01..7153ce1be3 100644
--- a/regression-test/data/query_p0/group_concat/test_group_concat.out
+++ b/regression-test/data/query_p0/group_concat/test_group_concat.out
@@ -35,6 +35,10 @@ false
1 2
1 2
+-- !select_12 --
+1 2
+1 2
+
-- !select_group_concat_order_by_all_data --
1 1 1
1 1 11
diff --git a/regression-test/suites/query_p0/group_concat/test_group_concat.groovy b/regression-test/suites/query_p0/group_concat/test_group_concat.groovy
index 41069a2db8..b37c28d01b 100644
--- a/regression-test/suites/query_p0/group_concat/test_group_concat.groovy
+++ b/regression-test/suites/query_p0/group_concat/test_group_concat.groovy
@@ -81,6 +81,15 @@ suite("test_group_concat") {
b2;
"""
+ qt_select_12 """
+ select
+ group_concat( distinct b1, '?'), group_concat( distinct b3, '?')
+ from
+ table_group_concat
+ group by
+ b2;
+ """
+
sql """ drop table table_group_concat """
sql """create table table_group_concat ( b1 varchar(10) not null, b2 int not null, b3 varchar(10) not null )
ENGINE=OLAP
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org