This is an automated email from the ASF dual-hosted git repository.
kxiao 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 ed713c2e2d6 [FIX](func) fix count distinct do not support
arr/map/struct (#25483)
ed713c2e2d6 is described below
commit ed713c2e2d6c05e38a67d26d862a2e8604674768
Author: amory <[email protected]>
AuthorDate: Thu Oct 19 14:04:50 2023 +0800
[FIX](func) fix count distinct do not support arr/map/struct (#25483)
---
.../apache/doris/analysis/FunctionCallExpr.java | 5 +-
...test_count_distinct_with_collection_type.groovy | 67 ++++++++++++++++++++++
2 files changed, 71 insertions(+), 1 deletion(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 4a3e06f0ee1..628b514bca5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -1368,7 +1368,10 @@ public class FunctionCallExpr extends Expr {
// TODO: fix how we equal count distinct.
fn = getBuiltinFunction(fnName.getFunction(), new Type[0],
Function.CompareMode.IS_NONSTRICT_SUPERTYPE_OF);
type = fn.getReturnType();
-
+ if (children.get(0).type.isComplexType()) {
+ throw new AnalysisException("The pattern params of " + fnName
+ " function can not support "
+ + children.get(0).type);
+ }
// Make sure BE doesn't see any TYPE_NULL exprs
for (int i = 0; i < children.size(); ++i) {
if (getChild(i).getType().isNull()) {
diff --git
a/regression-test/suites/query_p0/sql_functions/aggregate_functions/test_count_distinct_with_collection_type.groovy
b/regression-test/suites/query_p0/sql_functions/aggregate_functions/test_count_distinct_with_collection_type.groovy
new file mode 100644
index 00000000000..96cdc229de8
--- /dev/null
+++
b/regression-test/suites/query_p0/sql_functions/aggregate_functions/test_count_distinct_with_collection_type.groovy
@@ -0,0 +1,67 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_count_distinct_with_collection_type", "p0") {
+ sql """ set enable_nereids_planner=false;"""
+
+ // not support array/map/struct
+ sql " drop table if exists test_collection_type;"
+ sql """ CREATE TABLE IF NOT EXISTS `test_collection_type` (
+ `id` int(11) NULL,
+ `a` array<text> NULL,
+ `m` map<text, int> NULL,
+ `s` STRUCT<f1:INT, f2:VARCHAR(30), f3: DECIMAL> NULL,
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ COMMENT 'OLAP'
+ DISTRIBUTED BY HASH(`id`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "min_load_replica_num" = "-1",
+ "is_being_synced" = "false",
+ "storage_format" = "V2",
+ "light_schema_change" = "true",
+ "disable_auto_compaction" = "false",
+ "enable_single_replica_compaction" = "false"
+ ); """
+
+ test {
+ sql"""select count(distinct a) from test_collection_type;"""
+ check{result, exception, startTime, endTime ->
+ assertTrue(exception != null)
+ logger.info(exception.message)
+ }
+ }
+
+ test {
+ sql"""select count(distinct m) from test_collection_type;"""
+ check{result, exception, startTime, endTime ->
+ assertTrue(exception != null)
+ logger.info(exception.message)
+ }
+ }
+
+ test {
+ sql"""select count(distinct s) from test_collection_type;"""
+ check{result, exception, startTime, endTime ->
+ assertTrue(exception != null)
+ logger.info(exception.message)
+ }
+ }
+
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]