From 9f97cd029fd753f0551b056227817fb2b14eff74 Mon Sep 17 00:00:00 2001 From: mch_ucchi <41606806+sohardforaname@users.noreply.github.com> Date: Fri, 3 Mar 2023 17:57:48 +0800 Subject: [PATCH] [Feature] (Nereids) add check to disable unsupported type (#17196) 1. disable decimalv3 2. disable json 3. disable complex type: array, map, struct 4. disable switch: group_by_and_having_use_alias --- .../nereids/processor/post/Validator.java | 46 ++++++- .../rules/analysis/BindExpression.java | 38 +++++- .../apache/doris/nereids/types/JsonType.java | 2 +- .../apache/doris/nereids/util/TypeUtils.java | 1 - .../doris/nereids/UnsupportedTypeTest.java | 114 ++++++++++++++++++ regression-test/pipeline/p0/conf/fe.conf | 3 + .../nereids_p0/aggregate/aggregate.groovy | 4 +- .../test_aggregate_collect.groovy | 10 +- .../test_split_by_string.groovy | 48 ++++---- .../nereids_syntax_p0/array_function.groovy | 38 +++--- .../test_bitmap_function_nereids.groovy | 14 +-- 11 files changed, 255 insertions(+), 63 deletions(-) create mode 100644 fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/Validator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/Validator.java index 3bc32c8c6d..6125fcaad4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/Validator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/Validator.java @@ -19,13 +19,23 @@ package org.apache.doris.nereids.processor.post; import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.exceptions.AnalysisException; +import org.apache.doris.nereids.exceptions.UnboundException; +import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral; +import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionVisitor; import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.physical.PhysicalFilter; import org.apache.doris.nereids.trees.plans.physical.PhysicalProject; +import org.apache.doris.nereids.types.ArrayType; +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.DecimalV3Type; +import org.apache.doris.nereids.types.JsonType; +import org.apache.doris.nereids.types.MapType; +import org.apache.doris.nereids.types.StructType; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; import java.util.Collection; import java.util.Set; @@ -47,7 +57,7 @@ public class Validator extends PlanPostProcessor { // Set childOutputSet = child.getOutputSet(); child.accept(this, context); - return project; + return visit(project, context); } @Override @@ -72,6 +82,38 @@ public class Validator extends PlanPostProcessor { } child.accept(this, context); - return filter; + return visit(filter, context); + } + + @Override + public Plan visit(Plan plan, CascadesContext context) { + plan.getExpressions().forEach(ExpressionChecker.INSTANCE::check); + plan.children().forEach(child -> child.accept(this, context)); + return plan; + } + + private static class ExpressionChecker extends DefaultExpressionVisitor { + public static final ExpressionChecker INSTANCE = new ExpressionChecker(); + + public void check(Expression expression) { + expression.accept(this, null); + } + + public Expression visit(Expression expr, Void unused) { + try { + checkTypes(expr.getDataType()); + } catch (UnboundException ignored) { + return expr; + } + expr.children().forEach(child -> child.accept(this, null)); + return expr; + } + + private void checkTypes(DataType dataType) { + if (ImmutableSet.of(MapType.class, StructType.class, JsonType.class, + ArrayType.class, DecimalV3Type.class).contains(dataType.getClass())) { + throw new AnalysisException(String.format("type %s is unsupported for Nereids", dataType)); + } + } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java index 8ceecd86db..6af0d87e3f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java @@ -66,6 +66,7 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalSetOperation; import org.apache.doris.nereids.trees.plans.logical.LogicalSort; import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation; import org.apache.doris.nereids.trees.plans.logical.UsingJoin; +import org.apache.doris.qe.ConnectContext; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -331,6 +332,7 @@ public class BindExpression implements AnalysisRuleFactory { groupBy = groupBy.stream() .map(expr -> bindFunction(expr, ctx.cascadesContext)) .collect(ImmutableList.toImmutableList()); + checkIfOutputAliasNameDuplicatedForGroupBy(groupBy, output); return agg.withGroupByAndOutput(groupBy, output); }) ), @@ -376,6 +378,7 @@ public class BindExpression implements AnalysisRuleFactory { .collect(ImmutableList.toImmutableList())) .collect(ImmutableList.toImmutableList()); List newOutput = adjustNullableForRepeat(groupingSets, output); + groupingSets.forEach(list -> checkIfOutputAliasNameDuplicatedForGroupBy(list, newOutput)); return repeat.withGroupSetsAndOutput(groupingSets, newOutput); }) ), @@ -421,9 +424,9 @@ public class BindExpression implements AnalysisRuleFactory { }) ), RuleType.BINDING_HAVING_SLOT.build( - logicalHaving(aggregate()).thenApply(ctx -> { + logicalHaving(aggregate()).when(Plan::canBind).thenApply(ctx -> { LogicalHaving> having = ctx.root; - Plan childPlan = having.child(); + Aggregate childPlan = having.child(); Set boundConjuncts = having.getConjuncts().stream() .map(expr -> { expr = bindSlot(expr, childPlan.children(), ctx.cascadesContext, false); @@ -431,6 +434,8 @@ public class BindExpression implements AnalysisRuleFactory { }) .map(expr -> bindFunction(expr, ctx.cascadesContext)) .collect(Collectors.toSet()); + checkIfOutputAliasNameDuplicatedForGroupBy(ImmutableList.copyOf(boundConjuncts), + childPlan.getOutputExpressions()); return new LogicalHaving<>(boundConjuncts, having.child()); }) ), @@ -445,6 +450,9 @@ public class BindExpression implements AnalysisRuleFactory { }) .map(expr -> bindFunction(expr, ctx.cascadesContext)) .collect(Collectors.toSet()); + checkIfOutputAliasNameDuplicatedForGroupBy(ImmutableList.copyOf(boundConjuncts), + childPlan.getOutput().stream().map(NamedExpression.class::cast) + .collect(Collectors.toList())); return new LogicalHaving<>(boundConjuncts, having.child()); }) ), @@ -668,4 +676,30 @@ public class BindExpression implements AnalysisRuleFactory { public boolean canBind(Plan plan) { return !plan.hasUnboundExpression() || plan.canBind(); } + + private void checkIfOutputAliasNameDuplicatedForGroupBy(List expressions, + List output) { + // if group_by_and_having_use_alias_first=true, we should fall back to original planner until we + // support the session variable. + if (output.stream().noneMatch(Alias.class::isInstance)) { + return; + } + List aliasList = output.stream().filter(Alias.class::isInstance) + .map(Alias.class::cast).collect(Collectors.toList()); + + List exprAliasList = expressions.stream() + .map(expr -> (Set) expr.collect(NamedExpression.class::isInstance)) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + + boolean isGroupByContainAlias = exprAliasList.stream().anyMatch(ne -> + aliasList.stream().anyMatch(alias -> !alias.getExprId().equals(ne.getExprId()) + && alias.getName().equals(ne.getName()))); + + if (isGroupByContainAlias + && ConnectContext.get() != null + && ConnectContext.get().getSessionVariable().isGroupByAndHavingUseAliasFirst()) { + throw new AnalysisException("group_by_and_having_use_alias=true is unsupported for Nereids"); + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/JsonType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/JsonType.java index 5e5a15ef06..95a25e03c6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/JsonType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/JsonType.java @@ -36,7 +36,7 @@ public class JsonType extends DataType { @Override public Type toCatalogDataType() { - return Type.QUANTILE_STATE; + return Type.JSONB; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeUtils.java index 9e147d30af..6ec15166eb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeUtils.java @@ -33,7 +33,6 @@ import java.util.Optional; * Judgment expression type. */ public class TypeUtils { - public static boolean isAddOrSubtract(Expression expr) { return isAdd(expr) || isSubtract(expr); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java new file mode 100644 index 0000000000..ba6abd2f7b --- /dev/null +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java @@ -0,0 +1,114 @@ +// 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. + +package org.apache.doris.nereids; + +import org.apache.doris.common.Config; +import org.apache.doris.nereids.exceptions.AnalysisException; +import org.apache.doris.nereids.parser.NereidsParser; +import org.apache.doris.nereids.properties.PhysicalProperties; +import org.apache.doris.nereids.util.MemoTestUtils; +import org.apache.doris.utframe.TestWithFeService; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class UnsupportedTypeTest extends TestWithFeService { + @Override + protected void runBeforeAll() throws Exception { + Config.enable_map_type = true; + Config.enable_struct_type = true; + createDatabase("test"); + connectContext.setDatabase("default_cluster:test"); + createTables( + "create table type_tb (\n" + + " id int NOT NULL, \n" + + " kjsonb jsonb,\n" + + " kdcml decimalv3(15, 2),\n" + + " karr array,\n" + + " `date` bigint(20) NOT NULL\n" + + " )\n" + + " DUPLICATE KEY(id) \n" + + " distributed by hash(id) buckets 2\n" + + " properties (\n" + + " \"replication_num\"=\"1\"\n" + + " )", + "create table type_tb1 (\n" + + " id int NOT NULL, \n" + + " kmap map,\n" + + " kstruct struct\n" + + " )\n" + + " DUPLICATE KEY(id) \n" + + " distributed by hash(id) buckets 2\n" + + " properties (\n" + + " \"replication_num\"=\"1\"\n" + + " )"); + } + + @Test + public void testUnsupportedTypeThrowException() { + String[] sqls = { + "select id from type_tb", + "select jsonb_parse('{\"k1\":\"v31\",\"k2\":300}')", + "select karr from type_tb", + "select array_range(10)", + "select kdcml from type_tb", + "select cast(0.3 as decimalv3(12, 2))", + "select kmap from type_tb1", + }; + Class[] exceptions = { + null, + AnalysisException.class, + AnalysisException.class, + AnalysisException.class, + AnalysisException.class, + AnalysisException.class, + AnalysisException.class + }; + runPlanner(sqls[0]); + for (int i = 1; i < sqls.length; ++i) { + int iCopy = i; + Assertions.assertThrows(exceptions[i], () -> runPlanner(sqls[iCopy])); + } + } + + @Test + public void testGroupByAndHavingUseAliasFirstThrowException() { + String[] sqls = {"SELECT\n" + + " date_format(date, '%x%v') AS `date`,\n" + + " count(date) AS `diff_days`\n" + + " FROM type_tb\n" + + " GROUP BY date\n" + + " HAVING date = 20221111\n" + + " ORDER BY date;", + "SELECT\n" + + " date_format(date, '%x%v') AS `date`,\n" + + " count(date) AS `diff_days`\n" + + " FROM type_tb\n" + + " GROUP BY date\n" + + " HAVING date = 20221111\n" + + " ORDER BY date;" + }; + runPlanner(sqls[0]); + connectContext.getSessionVariable().groupByAndHavingUseAliasFirst = true; + Assertions.assertThrows(AnalysisException.class, () -> runPlanner(sqls[1])); + } + + private void runPlanner(String sql) { + new NereidsPlanner(MemoTestUtils.createStatementContext(connectContext, sql)).plan(new NereidsParser().parseSingle(sql), PhysicalProperties.ANY); + } +} diff --git a/regression-test/pipeline/p0/conf/fe.conf b/regression-test/pipeline/p0/conf/fe.conf index 538b18bf4b..850a4f78ef 100644 --- a/regression-test/pipeline/p0/conf/fe.conf +++ b/regression-test/pipeline/p0/conf/fe.conf @@ -70,3 +70,6 @@ tablet_create_timeout_second=20 remote_fragment_exec_timeout_ms=60000 fuzzy_test_type=p0 use_fuzzy_session_variable=true + +enable_map_type=true +enable_struct_type=true diff --git a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy index 9c8c722db3..71e08f1b58 100644 --- a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy +++ b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy @@ -141,8 +141,8 @@ suite("aggregate") { qt_aggregate """ select variance(c_bigint), variance(distinct c_double) from ${tableName} """ qt_aggregate """ select 1 k1, 2 k2, c_bigint k3, sum(c_double) from ${tableName} group by 1, k2, k3 order by k1, k2, k3 """ qt_aggregate """ select (k1 + k2) * k3 k4 from (select 1 k1, 2 k2, c_bigint k3, sum(c_double) from ${tableName} group by 1, k2, k3) t order by k4 """ - qt_aggregate32" select topn_weighted(c_string,c_bigint,3) from ${tableName}" - qt_aggregate33" select avg_weighted(c_double,c_bigint) from ${tableName};" + // qt_aggregate32" select topn_weighted(c_string,c_bigint,3) from ${tableName}" + // qt_aggregate33" select avg_weighted(c_double,c_bigint) from ${tableName};" // Nereids does't support array function // qt_aggregate34" select percentile_array(c_bigint,[0.2,0.5,0.9]) from ${tableName};" qt_aggregate """ diff --git a/regression-test/suites/nereids_p0/sql_functions/aggregate_functions/test_aggregate_collect.groovy b/regression-test/suites/nereids_p0/sql_functions/aggregate_functions/test_aggregate_collect.groovy index 2433c160e6..f112561571 100644 --- a/regression-test/suites/nereids_p0/sql_functions/aggregate_functions/test_aggregate_collect.groovy +++ b/regression-test/suites/nereids_p0/sql_functions/aggregate_functions/test_aggregate_collect.groovy @@ -39,15 +39,15 @@ suite("test_aggregate_collect") { sql "INSERT INTO ${tableName} values(1,'hello','2022-07-04',1.23,'hello'), (2,NULL,NULL,NULL,'hello')" sql "INSERT INTO ${tableName} values(1,'hello','2022-07-04',1.23,'hello'), (2,NULL,NULL,NULL,'hello')" - qt_select "select c_int,collect_list(c_string),collect_list(c_date),collect_list(c_decimal) from ${tableName} group by c_int order by c_int" - qt_select "select c_int,collect_set(c_string),collect_set(c_date),collect_set(c_decimal) from ${tableName} group by c_int order by c_int" + // qt_select "select c_int,collect_list(c_string),collect_list(c_date),collect_list(c_decimal) from ${tableName} group by c_int order by c_int" + // qt_select "select c_int,collect_set(c_string),collect_set(c_date),collect_set(c_decimal) from ${tableName} group by c_int order by c_int" // test without GROUP BY - qt_select "select collect_list(c_string),collect_list(c_string_not_null) from ${tableName}" - qt_select "select collect_set(c_string),collect_set(c_string_not_null) from ${tableName}" + // qt_select "select collect_list(c_string),collect_list(c_string_not_null) from ${tableName}" + // qt_select "select collect_set(c_string),collect_set(c_string_not_null) from ${tableName}" sql """ CREATE TABLE ${tableCTAS} PROPERTIES("replication_num" = "1") AS SELECT 1,collect_list(c_int),collect_set(c_string),collect_list(c_date),collect_set(c_decimal),collect_list(c_string_not_null) FROM ${tableName} """ - qt_select "SELECT * from ${tableCTAS}" + // qt_select "SELECT * from ${tableCTAS}" // topn_array def tableName_12 = "topn_array" diff --git a/regression-test/suites/nereids_p0/sql_functions/string_functions/test_split_by_string.groovy b/regression-test/suites/nereids_p0/sql_functions/string_functions/test_split_by_string.groovy index 28ffb8491c..2e5a1ba685 100644 --- a/regression-test/suites/nereids_p0/sql_functions/string_functions/test_split_by_string.groovy +++ b/regression-test/suites/nereids_p0/sql_functions/string_functions/test_split_by_string.groovy @@ -20,31 +20,31 @@ suite("test_split_by_string") { sql "SET enable_vectorized_engine=true" sql "SET enable_fallback_to_original_planner=false" // split by char - qt_sql "select split_by_string('abcde','');" - qt_sql "select split_by_string('12553','');" - qt_sql "select split_by_string('','');" - qt_sql "select split_by_string('',',');" - qt_sql "select split_by_string('','a');" + // qt_sql "select split_by_string('abcde','');" + // qt_sql "select split_by_string('12553','');" + // qt_sql "select split_by_string('','');" + // qt_sql "select split_by_string('',',');" + // qt_sql "select split_by_string('','a');" - qt_sql "select split_by_string('a1b1c1d','1');" - qt_sql "select split_by_string(',,,',',');" - qt_sql "select split_by_string('a,b,c,abcde',',');" - qt_sql "select split_by_string(',,a,b,c,',',');" - qt_sql "select split_by_string('null',',');" + // qt_sql "select split_by_string('a1b1c1d','1');" + // qt_sql "select split_by_string(',,,',',');" + // qt_sql "select split_by_string('a,b,c,abcde',',');" + // qt_sql "select split_by_string(',,a,b,c,',',');" + // qt_sql "select split_by_string('null',',');" - // split by string - qt_sql "select split_by_string('1,,2,3,,4,5,,abcde', ',,');" - qt_sql "select split_by_string('abcde','');" - qt_sql "select split_by_string('','');" - qt_sql "select split_by_string('',',');" - qt_sql "select split_by_string('','a');" + // // split by string + // qt_sql "select split_by_string('1,,2,3,,4,5,,abcde', ',,');" + // qt_sql "select split_by_string('abcde','');" + // qt_sql "select split_by_string('','');" + // qt_sql "select split_by_string('',',');" + // qt_sql "select split_by_string('','a');" - qt_sql "select split_by_string('1,,2,3,,,,,,4,5, abcde', ',,');" - qt_sql "select split_by_string(',,,,',',,');" - qt_sql "select split_by_string('a,,b,,c',',,');" - qt_sql "select split_by_string('a,,b,,c,,',',,');" - qt_sql "select split_by_string(',,a,,b,,c,,',',,');" - qt_sql "select split_by_string('null',',');" + // qt_sql "select split_by_string('1,,2,3,,,,,,4,5, abcde', ',,');" + // qt_sql "select split_by_string(',,,,',',,');" + // qt_sql "select split_by_string('a,,b,,c',',,');" + // qt_sql "select split_by_string('a,,b,,c,,',',,');" + // qt_sql "select split_by_string(',,a,,b,,c,,',',,');" + // qt_sql "select split_by_string('null',',');" def tableName1 = "test_split_by_char" @@ -74,7 +74,7 @@ suite("test_split_by_string") { sql """ INSERT INTO ${tableName1} VALUES(10, null, ',') """ sql """ INSERT INTO ${tableName1} VALUES(11, 'a,b,c,12345,', ',') """ - qt_sql "SELECT *, split_by_string(v1, v2) FROM ${tableName1} ORDER BY k1" + // qt_sql "SELECT *, split_by_string(v1, v2) FROM ${tableName1} ORDER BY k1" def tableName2 = "test_split_by_string" @@ -104,5 +104,5 @@ suite("test_split_by_string") { sql """ INSERT INTO ${tableName2} VALUES(10, null, ',') """ - qt_sql "SELECT *, split_by_string(v1, v2) FROM ${tableName2} ORDER BY k1" + // qt_sql "SELECT *, split_by_string(v1, v2) FROM ${tableName2} ORDER BY k1" } \ No newline at end of file diff --git a/regression-test/suites/nereids_syntax_p0/array_function.groovy b/regression-test/suites/nereids_syntax_p0/array_function.groovy index 93ed2f1331..bb6e1444d2 100644 --- a/regression-test/suites/nereids_syntax_p0/array_function.groovy +++ b/regression-test/suites/nereids_syntax_p0/array_function.groovy @@ -19,25 +19,25 @@ suite("array_function") { sql "SET enable_nereids_planner=true" sql "SET enable_fallback_to_original_planner=false" - test { - sql "select array(), array(null), array(1), array('abc'), array(null, 1), array(1, null)" - result([["[]", "[NULL]", "[1]", "['abc']", "[NULL, 1]", "[1, NULL]"]]) - } + // test { + // sql "select array(), array(null), array(1), array('abc'), array(null, 1), array(1, null)" + // result([["[]", "[NULL]", "[1]", "['abc']", "[NULL, 1]", "[1, NULL]"]]) + // } - test { - sql "select array(), array('a'), array(number, 'a') from numbers('number'='3')" - result([ - ["[]", "['a']", "['0', 'a']"], - ["[]", "['a']", "['1', 'a']"], - ["[]", "['a']", "['2', 'a']"] - ]) - } + // test { + // sql "select array(), array('a'), array(number, 'a') from numbers('number'='3')" + // result([ + // ["[]", "['a']", "['0', 'a']"], + // ["[]", "['a']", "['1', 'a']"], + // ["[]", "['a']", "['2', 'a']"] + // ]) + // } - test { - sql """select - array_min(array(5, 4, 3, 2, 1, null)), - array_join(array(5, 4, 3, 2, 1, null), ','), - array_union(array(1, 2, 3), array(4.0, 5.0, 6.1))""" - result([[1, "5,4,3,2,1", "[1, 2, 3, 4, 5, 6.1]"]]) - } + // test { + // sql """select + // array_min(array(5, 4, 3, 2, 1, null)), + // array_join(array(5, 4, 3, 2, 1, null), ','), + // array_union(array(1, 2, 3), array(4.0, 5.0, 6.1))""" + // result([[1, "5,4,3,2,1", "[1, 2, 3, 4, 5, 6.1]"]]) + // } } diff --git a/regression-test/suites/nereids_syntax_p0/test_bitmap_function_nereids.groovy b/regression-test/suites/nereids_syntax_p0/test_bitmap_function_nereids.groovy index caefcd236c..311b7eba69 100644 --- a/regression-test/suites/nereids_syntax_p0/test_bitmap_function_nereids.groovy +++ b/regression-test/suites/nereids_syntax_p0/test_bitmap_function_nereids.groovy @@ -182,12 +182,12 @@ suite("test_bitmap_function_nereids") { qt_sql """ select orthogonal_bitmap_intersect_count(members, tag_group, 1150000, 1150001, 390006) from ${arthogonalBitmapTable} where tag_group in ( 1150000, 1150001, 390006); """ qt_sql """ select orthogonal_bitmap_union_count(members) from ${arthogonalBitmapTable} where tag_group in ( 1150000, 1150001, 390006); """ - qt_sql """ select bitmap_to_array(user_id) from ${intersectCountTable} order by dt desc; """ - qt_sql """ select bitmap_to_array(bitmap_empty()); """ - qt_sql """ select bitmap_to_array(bitmap_from_string('100,200,3,4')); """ + // qt_sql """ select bitmap_to_array(user_id) from ${intersectCountTable} order by dt desc; """ + // qt_sql """ select bitmap_to_array(bitmap_empty()); """ + // qt_sql """ select bitmap_to_array(bitmap_from_string('100,200,3,4')); """ - qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1,2,3,4,5'), 0, 3)) value; """ - qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1'), 0, 3)) value; """ - qt_sql """ select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('100'), 0, 3)) value; """ - qt_sql """ select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('20221103'), 0, 20221104)) date_list_bitmap; """ + // qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1,2,3,4,5'), 0, 3)) value; """ + // qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1'), 0, 3)) value; """ + // qt_sql """ select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('100'), 0, 3)) value; """ + // qt_sql """ select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('20221103'), 0, 20221104)) date_list_bitmap; """ }