This is an automated email from the ASF dual-hosted git repository.

jakevin 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 c46fa339d03 [feature](Nereids): make count() avaliable for all data 
type (#26180)
c46fa339d03 is described below

commit c46fa339d03e5409219542c74dbf22afb76e17f3
Author: 谢健 <[email protected]>
AuthorDate: Thu Nov 2 17:20:24 2023 +0800

    [feature](Nereids): make count() avaliable for all data type (#26180)
    
    make count() avaliable for all data type
---
 .../trees/expressions/functions/agg/Count.java     |   9 +-
 .../analysis/CheckExpressionLegalityTest.java      |   2 +-
 .../data/nereids_function_p0/fn_test.dat           |  26 +-
 .../data/nereids_function_p0/fn_test_bitmap.dat    |  13 +
 .../data/nereids_function_p0/scalar_function/C.out | 282 +++++++++++++++++++++
 .../suites/nereids_function_p0/load.groovy         |  47 +++-
 .../nereids_function_p0/scalar_function/C.groovy   |  95 ++++++-
 7 files changed, 450 insertions(+), 24 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Count.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Count.java
index 0f15aac55ac..a8a3fdd033d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Count.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Count.java
@@ -18,7 +18,6 @@
 package org.apache.doris.nereids.trees.expressions.functions.agg;
 
 import org.apache.doris.catalog.FunctionSignature;
-import org.apache.doris.catalog.Type;
 import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
@@ -82,11 +81,9 @@ public class Count extends AggregateFunction
     public void checkLegalityAfterRewrite() {
         // after rewrite, count(distinct bitmap_column) should be rewritten to 
bitmap_union_count(bitmap_column)
         for (Expression argument : getArguments()) {
-            if (argument.getDataType().isObjectType()) {
-                throw new AnalysisException(Type.OnlyObjectTypeErrorMsg);
-            }
-            if (distinct && argument.getDataType().isComplexType()) {
-                throw new AnalysisException("COUNT DISTINCT could not process 
complex type " + this.toSql());
+            if (distinct && (argument.getDataType().isComplexType()
+                    || argument.getDataType().isObjectType() || 
argument.getDataType().isJsonType())) {
+                throw new AnalysisException("COUNT DISTINCT could not process 
type " + this.toSql());
             }
         }
     }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/CheckExpressionLegalityTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/CheckExpressionLegalityTest.java
index 84e7cf4ff72..2b0ae34dc37 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/CheckExpressionLegalityTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/CheckExpressionLegalityTest.java
@@ -65,7 +65,7 @@ public class CheckExpressionLegalityTest implements 
MemoPatternMatchSupported {
                 ));
 
         ExceptionChecker.expectThrowsWithMsg(AnalysisException.class,
-                "column must use with specific function", () ->
+                "COUNT DISTINCT could not process type", () ->
                         PlanChecker.from(connectContext)
                                 .analyze("select count(distinct id) from 
(select to_bitmap(1) id) tbl")
                                 .applyBottomUp(new 
ExpressionRewrite(CheckLegalityAfterRewrite.INSTANCE))
diff --git a/regression-test/data/nereids_function_p0/fn_test.dat 
b/regression-test/data/nereids_function_p0/fn_test.dat
index f935249c99e..7a30eb3f667 100644
--- a/regression-test/data/nereids_function_p0/fn_test.dat
+++ b/regression-test/data/nereids_function_p0/fn_test.dat
@@ -1,13 +1,13 @@
-0;0;1;1;1;1;1;0.1;0.1;0.1;0.1;0.1;0.1;0.1;0.1;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-01;2012-03-01;2012-03-01
 01:00:01;2012-03-01 01:00:01;2012-03-01 01:00:01;2012-03-01 
01:00:01;[0];[0];[1];[1];[1];[1];[1];[0.1];[2012-03-01,2012-03-01];[2012-03-01 
01:00:01];[2012-03-01,2012-03-01];[2012-03-01 01:00:01,2012-03-01 
01:00:01,2012-03-01 01:00:01,2012-03-01 
01:00:01];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
-1;0;2;2;2;2;2;0.2;0.2;0.2;0.2;0.2;0.2;0.2;0.2;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-02;2012-03-02;2012-03-02
 02:01:02;2012-03-02 02:01:02;2012-03-02 02:01:02;2012-03-02 
02:01:02;[0];[0];[2];[2];[2];[2];[2];[0.2];[2012-03-02,2012-03-02];[2012-03-02 
02:01:02];[2012-03-02,2012-03-02];[2012-03-02 02:01:02,2012-03-02 
02:01:02,2012-03-02 02:01:02,2012-03-02 
02:01:02];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
-2;0;3;3;3;3;3;0.3;0.3;0.3;0.3;0.3;0.3;0.3;0.3;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-03;2012-03-03;2012-03-03
 03:02:03;2012-03-03 03:02:03;2012-03-03 03:02:03;2012-03-03 
03:02:03;[0];[0];[3];[3];[3];[3];[3];[0.3];[2012-03-03,2012-03-03];[2012-03-03 
03:02:03];[2012-03-03,2012-03-03];[2012-03-03 03:02:03,2012-03-03 
03:02:03,2012-03-03 03:02:03,2012-03-03 
03:02:03];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
-3;0;4;4;4;4;4;0.4;0.4;0.4;0.4;0.4;0.4;0.4;0.4;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-04;2012-03-04;2012-03-04
 04:03:04;2012-03-04 04:03:04;2012-03-04 04:03:04;2012-03-04 
04:03:04;[0];[0];[4];[4];[4];[4];[4];[0.4];[2012-03-04,2012-03-04];[2012-03-04 
04:03:04];[2012-03-04,2012-03-04];[2012-03-04 04:03:04,2012-03-04 
04:03:04,2012-03-04 04:03:04,2012-03-04 
04:03:04];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
-4;0;5;5;5;5;5;0.5;0.5;0.5;0.5;0.5;0.5;0.5;0.5;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-05;2012-03-05;2012-03-05
 05:04:05;2012-03-05 05:04:05;2012-03-05 05:04:05;2012-03-05 
05:04:05;[0];[0];[5];[5];[5];[5];[5];[0.5];[2012-03-05,2012-03-05];[2012-03-05 
05:04:05];[2012-03-05,2012-03-05];[2012-03-05 05:04:05,2012-03-05 
05:04:05,2012-03-05 05:04:05,2012-03-05 
05:04:05];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
-5;0;6;6;6;6;6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-06;2012-03-06;2012-03-06
 06:05:06;2012-03-06 06:05:06;2012-03-06 06:05:06;2012-03-06 
06:05:06;[0];[0];[6];[6];[6];[6];[6];[0.6];[2012-03-06,2012-03-06];[2012-03-06 
06:05:06];[2012-03-06,2012-03-06];[2012-03-06 06:05:06,2012-03-06 
06:05:06,2012-03-06 06:05:06,2012-03-06 
06:05:06];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
-6;0;7;7;7;7;7;0.7;0.7;0.7;0.7;0.7;0.7;0.7;0.7;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-07;2012-03-07;2012-03-07
 07:06:07;2012-03-07 07:06:07;2012-03-07 07:06:07;2012-03-07 
07:06:07;[0];[0];[7];[7];[7];[7];[7];[0.7];[2012-03-07,2012-03-07];[2012-03-07 
07:06:07];[2012-03-07,2012-03-07];[2012-03-07 07:06:07,2012-03-07 
07:06:07,2012-03-07 07:06:07,2012-03-07 
07:06:07];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
-7;1;8;8;8;8;8;0.8;0.8;0.8;0.8;0.8;0.8;0.8;0.8;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-08;2012-03-08;2012-03-08
 08:07:08;2012-03-08 08:07:08;2012-03-08 08:07:08;2012-03-08 
08:07:08;[1];[1];[8];[8];[8];[8];[8];[0.8];[2012-03-08,2012-03-08];[2012-03-08 
08:07:08];[2012-03-08,2012-03-08];[2012-03-08 08:07:08,2012-03-08 
08:07:08,2012-03-08 08:07:08,2012-03-08 
08:07:08];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
-8;1;9;9;9;9;9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-09;2012-03-09;2012-03-09
 09:08:09;2012-03-09 09:08:09;2012-03-09 09:08:09;2012-03-09 
09:08:09;[1];[1];[9];[9];[9];[9];[9];[0.9];[2012-03-09,2012-03-09];[2012-03-09 
09:08:09];[2012-03-09,2012-03-09];[2012-03-09 09:08:09,2012-03-09 
09:08:09,2012-03-09 09:08:09,2012-03-09 
09:08:09];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
-9;1;10;10;10;10;10;1;1;1;1;1;1;1;1;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-10;2012-03-10;2012-03-10
 10:09:10;2012-03-10 10:09:10;2012-03-10 10:09:10;2012-03-10 
10:09:10;[1];[1];[10];[10];[10];[10];[10];[1];[2012-03-10,2012-03-10];[2012-03-10
 10:09:10];[2012-03-10,2012-03-10];[2012-03-10 10:09:10,2012-03-10 
10:09:10,2012-03-10 10:09:10,2012-03-10 
10:09:10];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar11,varcha
 [...]
-10;1;11;11;11;11;11;1.1;1.1;1.1;1.1;1.1;1.1;1.1;1.1;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-11;2012-03-11;2012-03-11
 11:10:11;2012-03-11 11:10:11;2012-03-11 11:10:11;2012-03-11 
11:10:11;[1];[1];[11];[11];[11];[11];[11];[1.1];[2012-03-11,2012-03-11];[2012-03-11
 11:10:11];[2012-03-11,2012-03-11];[2012-03-11 11:10:11,2012-03-11 
11:10:11,2012-03-11 11:10:11,2012-03-11 
11:10:11];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char
 [...]
-11;1;12;12;12;12;12;1.2;1.2;1.2;1.2;1.2;1.2;1.2;1.2;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-12;2012-03-12;2012-03-12
 12:11:12;2012-03-12 12:11:12;2012-03-12 12:11:12;2012-03-12 
12:11:12;[1];[1];[12];[12];[12];[12];[12];[1.2];[2012-03-12,2012-03-12];[2012-03-12
 12:11:12];[2012-03-12,2012-03-12];[2012-03-12 12:11:12,2012-03-12 
12:11:12,2012-03-12 12:11:12,2012-03-12 
12:11:12];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char
 [...]
-null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null
+0;0;1;1;1;1;1;0.1;0.1;0.1;0.1;0.1;0.1;0.1;0.1;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-01;2012-03-01;2012-03-01
 01:00:01;2012-03-01 01:00:01;2012-03-01 01:00:01;2012-03-01 
01:00:01;[0];[0];[1];[1];[1];[1];[1];[0.1];[2012-03-01,2012-03-01];[2012-03-01 
01:00:01];[2012-03-01,2012-03-01];[2012-03-01 01:00:01,2012-03-01 
01:00:01,2012-03-01 01:00:01,2012-03-01 
01:00:01];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
+1;0;2;2;2;2;2;0.2;0.2;0.2;0.2;0.2;0.2;0.2;0.2;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-02;2012-03-02;2012-03-02
 02:01:02;2012-03-02 02:01:02;2012-03-02 02:01:02;2012-03-02 
02:01:02;[0];[0];[2];[2];[2];[2];[2];[0.2];[2012-03-02,2012-03-02];[2012-03-02 
02:01:02];[2012-03-02,2012-03-02];[2012-03-02 02:01:02,2012-03-02 
02:01:02,2012-03-02 02:01:02,2012-03-02 
02:01:02];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
+2;0;3;3;3;3;3;0.3;0.3;0.3;0.3;0.3;0.3;0.3;0.3;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-03;2012-03-03;2012-03-03
 03:02:03;2012-03-03 03:02:03;2012-03-03 03:02:03;2012-03-03 
03:02:03;[0];[0];[3];[3];[3];[3];[3];[0.3];[2012-03-03,2012-03-03];[2012-03-03 
03:02:03];[2012-03-03,2012-03-03];[2012-03-03 03:02:03,2012-03-03 
03:02:03,2012-03-03 03:02:03,2012-03-03 
03:02:03];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
+3;0;4;4;4;4;4;0.4;0.4;0.4;0.4;0.4;0.4;0.4;0.4;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-04;2012-03-04;2012-03-04
 04:03:04;2012-03-04 04:03:04;2012-03-04 04:03:04;2012-03-04 
04:03:04;[0];[0];[4];[4];[4];[4];[4];[0.4];[2012-03-04,2012-03-04];[2012-03-04 
04:03:04];[2012-03-04,2012-03-04];[2012-03-04 04:03:04,2012-03-04 
04:03:04,2012-03-04 04:03:04,2012-03-04 
04:03:04];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
+4;0;5;5;5;5;5;0.5;0.5;0.5;0.5;0.5;0.5;0.5;0.5;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-05;2012-03-05;2012-03-05
 05:04:05;2012-03-05 05:04:05;2012-03-05 05:04:05;2012-03-05 
05:04:05;[0];[0];[5];[5];[5];[5];[5];[0.5];[2012-03-05,2012-03-05];[2012-03-05 
05:04:05];[2012-03-05,2012-03-05];[2012-03-05 05:04:05,2012-03-05 
05:04:05,2012-03-05 05:04:05,2012-03-05 
05:04:05];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
+5;0;6;6;6;6;6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-06;2012-03-06;2012-03-06
 06:05:06;2012-03-06 06:05:06;2012-03-06 06:05:06;2012-03-06 
06:05:06;[0];[0];[6];[6];[6];[6];[6];[0.6];[2012-03-06,2012-03-06];[2012-03-06 
06:05:06];[2012-03-06,2012-03-06];[2012-03-06 06:05:06,2012-03-06 
06:05:06,2012-03-06 06:05:06,2012-03-06 
06:05:06];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
+6;0;7;7;7;7;7;0.7;0.7;0.7;0.7;0.7;0.7;0.7;0.7;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-07;2012-03-07;2012-03-07
 07:06:07;2012-03-07 07:06:07;2012-03-07 07:06:07;2012-03-07 
07:06:07;[0];[0];[7];[7];[7];[7];[7];[0.7];[2012-03-07,2012-03-07];[2012-03-07 
07:06:07];[2012-03-07,2012-03-07];[2012-03-07 07:06:07,2012-03-07 
07:06:07,2012-03-07 07:06:07,2012-03-07 
07:06:07];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar1
 [...]
+7;1;8;8;8;8;8;0.8;0.8;0.8;0.8;0.8;0.8;0.8;0.8;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-08;2012-03-08;2012-03-08
 08:07:08;2012-03-08 08:07:08;2012-03-08 08:07:08;2012-03-08 
08:07:08;[1];[1];[8];[8];[8];[8];[8];[0.8];[2012-03-08,2012-03-08];[2012-03-08 
08:07:08];[2012-03-08,2012-03-08];[2012-03-08 08:07:08,2012-03-08 
08:07:08,2012-03-08 08:07:08,2012-03-08 
08:07:08];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char32,varchar1
 [...]
+8;1;9;9;9;9;9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-09;2012-03-09;2012-03-09
 09:08:09;2012-03-09 09:08:09;2012-03-09 09:08:09;2012-03-09 
09:08:09;[1];[1];[9];[9];[9];[9];[9];[0.9];[2012-03-09,2012-03-09];[2012-03-09 
09:08:09];[2012-03-09,2012-03-09];[2012-03-09 09:08:09,2012-03-09 
09:08:09,2012-03-09 09:08:09,2012-03-09 
09:08:09];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char33,varchar1
 [...]
+9;1;10;10;10;10;10;1;1;1;1;1;1;1;1;char11;char21;char31;varchar11;varchar21;varchar31;string1;2012-03-10;2012-03-10;2012-03-10
 10:09:10;2012-03-10 10:09:10;2012-03-10 10:09:10;2012-03-10 
10:09:10;[1];[1];[10];[10];[10];[10];[10];[1];[2012-03-10,2012-03-10];[2012-03-10
 10:09:10];[2012-03-10,2012-03-10];[2012-03-10 10:09:10,2012-03-10 
10:09:10,2012-03-10 10:09:10,2012-03-10 
10:09:10];[char11,char21,char31];[char11,char21,char31,varchar11,varchar21,varchar31];[char21,char31,varchar11,varcha
 [...]
+10;1;11;11;11;11;11;1.1;1.1;1.1;1.1;1.1;1.1;1.1;1.1;char12;char22;char32;varchar12;varchar22;varchar32;string2;2012-03-11;2012-03-11;2012-03-11
 11:10:11;2012-03-11 11:10:11;2012-03-11 11:10:11;2012-03-11 
11:10:11;[1];[1];[11];[11];[11];[11];[11];[1.1];[2012-03-11,2012-03-11];[2012-03-11
 11:10:11];[2012-03-11,2012-03-11];[2012-03-11 11:10:11,2012-03-11 
11:10:11,2012-03-11 11:10:11,2012-03-11 
11:10:11];[char12,char22,char32];[char12,char22,char32,varchar12,varchar22,varchar32];[char22,char
 [...]
+11;1;12;12;12;12;12;1.2;1.2;1.2;1.2;1.2;1.2;1.2;1.2;char13;char23;char33;varchar13;varchar23;varchar33;string3;2012-03-12;2012-03-12;2012-03-12
 12:11:12;2012-03-12 12:11:12;2012-03-12 12:11:12;2012-03-12 
12:11:12;[1];[1];[12];[12];[12];[12];[12];[1.2];[2012-03-12,2012-03-12];[2012-03-12
 12:11:12];[2012-03-12,2012-03-12];[2012-03-12 12:11:12,2012-03-12 
12:11:12,2012-03-12 12:11:12,2012-03-12 
12:11:12];[char13,char23,char33];[char13,char23,char33,varchar13,varchar23,varchar33];[char23,char
 [...]
+null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null;null
diff --git a/regression-test/data/nereids_function_p0/fn_test_bitmap.dat 
b/regression-test/data/nereids_function_p0/fn_test_bitmap.dat
new file mode 100644
index 00000000000..811e8d68657
--- /dev/null
+++ b/regression-test/data/nereids_function_p0/fn_test_bitmap.dat
@@ -0,0 +1,13 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+null
\ No newline at end of file
diff --git a/regression-test/data/nereids_function_p0/scalar_function/C.out 
b/regression-test/data/nereids_function_p0/scalar_function/C.out
index 42a41c21b0b..e4b81b7eb71 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/C.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/C.out
@@ -1101,6 +1101,288 @@ varchar13
 0.4535961214255773
 0.3623577544766736
 
+-- !km_bool_tint --
+12
+
+-- !km_bool_tint_not_nullable --
+12
+
+-- !km_tint_tint --
+12
+
+-- !km_tint_tint_not_nullable --
+12
+
+-- !km_sint_tint --
+12
+
+-- !km_sint_tint_not_nullable --
+12
+
+-- !km_int_tint --
+12
+
+-- !km_int_tint_not_nullable --
+12
+
+-- !km_bint_tint --
+12
+
+-- !km_bint_tint_not_nullable --
+12
+
+-- !km_lint_tint --
+12
+
+-- !km_lint_tint_not_nullable --
+12
+
+-- !km_float_tint --
+12
+
+-- !km_float_tint_not_nullable --
+12
+
+-- !km_dbl_tint --
+12
+
+-- !km_dbl_tint_not_nullable --
+12
+
+-- !km_dcml_tint --
+12
+
+-- !km_dcml_tint_not_nullable --
+12
+
+-- !km_chr_tint --
+12
+
+-- !km_chr_tint_not_nullable --
+12
+
+-- !km_vchr_tint --
+12
+
+-- !km_vchr_tint_not_nullable --
+12
+
+-- !km_str_tint --
+12
+
+-- !km_str_tint_not_nullable --
+12
+
+-- !km_date_tint --
+12
+
+-- !km_date_tint_not_nullable --
+12
+
+-- !km_dtm_tint --
+12
+
+-- !km_dtm_tint_not_nullable --
+12
+
+-- !km_tint_bool --
+12
+
+-- !km_tint_bool_not_nullable --
+12
+
+-- !km_int_int --
+12
+
+-- !km_int_int_not_nullable --
+12
+
+-- !km_tint_sint --
+12
+
+-- !km_tint_sint_not_nullable --
+12
+
+-- !km_tint_int --
+12
+
+-- !km_tint_int_not_nullable --
+12
+
+-- !km_tint_bint --
+12
+
+-- !km_tint_bint_not_nullable --
+12
+
+-- !km_tint_lint --
+12
+
+-- !km_tint_lint_not_nullable --
+12
+
+-- !km_tint_float --
+12
+
+-- !km_tint_float_not_nullable --
+12
+
+-- !km_tint_dbl --
+12
+
+-- !km_tint_dbl_not_nullable --
+12
+
+-- !km_tint_dcml --
+12
+
+-- !km_tint_dcml_not_nullable --
+12
+
+-- !km_tint_chr --
+12
+
+-- !km_tint_chr_not_nullable --
+12
+
+-- !km_tint_vchr --
+12
+
+-- !km_tint_vchr_not_nullable --
+12
+
+-- !km_tint_str --
+12
+
+-- !km_tint_str_not_nullable --
+12
+
+-- !km_tint_date --
+12
+
+-- !km_tint_date_not_nullable --
+12
+
+-- !km_tint_dtm --
+12
+
+-- !km_tint_dtm_not_nullable --
+12
+
+-- !kjson --
+13
+
+-- !kjson_not_nullable --
+12
+
+-- !kstruct --
+12
+
+-- !kstruct_not_nullable --
+12
+
+-- !kabool --
+12
+
+-- !kabool_not_nullable --
+12
+
+-- !katint --
+12
+
+-- !katint_not_nullable --
+12
+
+-- !kasint --
+12
+
+-- !kasint_not_nullable --
+12
+
+-- !kaint --
+12
+
+-- !kaint_not_nullable --
+12
+
+-- !kabint --
+12
+
+-- !kabint_not_nullable --
+12
+
+-- !kalint --
+12
+
+-- !kalint_not_nullable --
+12
+
+-- !kafloat --
+12
+
+-- !kafloat_not_nullable --
+12
+
+-- !kadbl --
+12
+
+-- !kadbl_not_nullable --
+12
+
+-- !kadt --
+12
+
+-- !kadt_not_nullable --
+12
+
+-- !kadtm --
+12
+
+-- !kadtm_not_nullable --
+12
+
+-- !kadtv2 --
+12
+
+-- !kadtv2_not_nullable --
+12
+
+-- !kadtmv2 --
+12
+
+-- !kadtmv2_not_nullable --
+12
+
+-- !kachr --
+12
+
+-- !kachr_not_nullable --
+12
+
+-- !kavchr --
+12
+
+-- !kavchr_not_nullable --
+12
+
+-- !kastr --
+12
+
+-- !kastr_not_nullable --
+12
+
+-- !kadcml --
+12
+
+-- !kadcml_not_nullable --
+12
+
+-- !bitmap --
+13
+
+-- !bitmap_not_nullable --
+12
+
 -- !char --
 Doris  Doris
 
diff --git a/regression-test/suites/nereids_function_p0/load.groovy 
b/regression-test/suites/nereids_function_p0/load.groovy
index c403302d0b1..104c2d30788 100644
--- a/regression-test/suites/nereids_function_p0/load.groovy
+++ b/regression-test/suites/nereids_function_p0/load.groovy
@@ -20,6 +20,12 @@ suite("load") {
     // ddl begin
     sql "drop table if exists fn_test"
     sql "drop table if exists fn_test_not_nullable"
+    sql """
+        DROP TABLE IF EXISTS `fn_test_bitmap_not_nullable`
+    """ 
+    sql """
+        DROP TABLE IF EXISTS `fn_test_bitmap`
+    """
 
     sql """
         CREATE TABLE IF NOT EXISTS `fn_test` (
@@ -105,7 +111,18 @@ suite("load") {
             `km_tint_vchr` map<tinyint, varchar(50)> null,
             `km_tint_str` map<tinyint, string> null,
             `km_tint_date` map<tinyint, date> null,
-            `km_tint_dtm` map<tinyint, datetime> null
+            `km_tint_dtm` map<tinyint, datetime> null,
+            `kjson` JSON null,
+            `kstruct` STRUCT<id: int> null
+        ) engine=olap
+        DISTRIBUTED BY HASH(`id`) BUCKETS 4
+        properties("replication_num" = "1")
+    """
+
+    sql """
+        CREATE TABLE IF NOT EXISTS `fn_test_bitmap` (
+            `id` int null,
+            `kbitmap` bitmap bitmap_union 
         ) engine=olap
         DISTRIBUTED BY HASH(`id`) BUCKETS 4
         properties("replication_num" = "1")
@@ -195,7 +212,18 @@ suite("load") {
             `km_tint_vchr` map<tinyint, varchar(50)> not null,
             `km_tint_str` map<tinyint, string> not null,
             `km_tint_date` map<tinyint, date> not null,
-            `km_tint_dtm` map<tinyint, datetime> not null
+            `km_tint_dtm` map<tinyint, datetime> not null,
+            `kjson` JSON not null,
+            `kstruct` STRUCT<id: int> not null
+        ) engine=olap
+        DISTRIBUTED BY HASH(`id`) BUCKETS 4
+        properties("replication_num" = "1")
+    """
+    
+    sql """
+        CREATE TABLE IF NOT EXISTS `fn_test_bitmap_not_nullable` (
+            `id` int not null,
+            `kbitmap` bitmap bitmap_union not null
         ) engine=olap
         DISTRIBUTED BY HASH(`id`) BUCKETS 4
         properties("replication_num" = "1")
@@ -215,12 +243,25 @@ suite("load") {
             km_bool_tint, km_tint_tint, km_sint_tint, km_int_tint, 
km_bint_tint, km_lint_tint, km_float_tint,
             km_dbl_tint, km_dcml_tint, km_chr_tint, km_vchr_tint, km_str_tint, 
km_date_tint, km_dtm_tint,
             km_tint_bool, km_int_int, km_tint_sint, km_tint_int, km_tint_bint, 
km_tint_lint, km_tint_float,
-            km_tint_dbl, km_tint_dcml, km_tint_chr, km_tint_vchr, km_tint_str, 
km_tint_date, km_tint_dtm
+            km_tint_dbl, km_tint_dcml, km_tint_chr, km_tint_vchr, km_tint_str, 
km_tint_date, km_tint_dtm, kjson, kstruct
             '''
         file "fn_test.dat"
     }
 
+    streamLoad {
+        table "fn_test_bitmap"
+        db "regression_test_nereids_function_p0"
+        set 'column_separator', ';'
+        set 'columns', '''
+            id, kbitmap=to_bitmap(id)
+            '''
+        file "fn_test_bitmap.dat"
+    }
+
     sql """
         insert into fn_test_not_nullable select * from fn_test where id is not 
null
     """
+    sql """
+        insert into fn_test_bitmap_not_nullable select * from fn_test_bitmap 
where id is not null
+    """
 }
diff --git 
a/regression-test/suites/nereids_function_p0/scalar_function/C.groovy 
b/regression-test/suites/nereids_function_p0/scalar_function/C.groovy
index df896d9f29e..62c1c6877c8 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/C.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/C.groovy
@@ -99,7 +99,100 @@ suite("nereids_scalar_fn_C") {
        qt_sql_cos_Double_notnull "select cos(kdbl) from fn_test_not_nullable 
order by kdbl"
        sql "select current_user() from fn_test"
        sql "select current_user() from fn_test_not_nullable"
-
+       qt_km_bool_tint "select count(km_bool_tint) from fn_test "
+       qt_km_bool_tint_not_nullable "select count(km_bool_tint) from 
fn_test_not_nullable "
+       qt_km_tint_tint "select count(km_tint_tint) from fn_test "
+       qt_km_tint_tint_not_nullable "select count(km_tint_tint) from 
fn_test_not_nullable "
+       qt_km_sint_tint "select count(km_sint_tint) from fn_test "
+       qt_km_sint_tint_not_nullable "select count(km_sint_tint) from 
fn_test_not_nullable "
+       qt_km_int_tint "select count(km_int_tint) from fn_test "
+       qt_km_int_tint_not_nullable "select count(km_int_tint) from 
fn_test_not_nullable "
+       qt_km_bint_tint "select count(km_bint_tint) from fn_test "
+       qt_km_bint_tint_not_nullable "select count(km_bint_tint) from 
fn_test_not_nullable "
+       qt_km_lint_tint "select count(km_lint_tint) from fn_test "
+       qt_km_lint_tint_not_nullable "select count(km_lint_tint) from 
fn_test_not_nullable "
+       qt_km_float_tint "select count(km_float_tint) from fn_test "
+       qt_km_float_tint_not_nullable "select count(km_float_tint) from 
fn_test_not_nullable "
+       qt_km_dbl_tint "select count(km_dbl_tint) from fn_test "
+       qt_km_dbl_tint_not_nullable "select count(km_dbl_tint) from 
fn_test_not_nullable "
+       qt_km_dcml_tint "select count(km_dcml_tint) from fn_test "
+       qt_km_dcml_tint_not_nullable "select count(km_dcml_tint) from 
fn_test_not_nullable "
+       qt_km_chr_tint "select count(km_chr_tint) from fn_test "
+       qt_km_chr_tint_not_nullable "select count(km_chr_tint) from 
fn_test_not_nullable "
+       qt_km_vchr_tint "select count(km_vchr_tint) from fn_test "
+       qt_km_vchr_tint_not_nullable "select count(km_vchr_tint) from 
fn_test_not_nullable "
+       qt_km_str_tint "select count(km_str_tint) from fn_test "
+       qt_km_str_tint_not_nullable "select count(km_str_tint) from 
fn_test_not_nullable "
+       qt_km_date_tint "select count(km_date_tint) from fn_test "
+       qt_km_date_tint_not_nullable "select count(km_date_tint) from 
fn_test_not_nullable "
+       qt_km_dtm_tint "select count(km_dtm_tint) from fn_test "
+       qt_km_dtm_tint_not_nullable "select count(km_dtm_tint) from 
fn_test_not_nullable "
+       qt_km_tint_bool "select count(km_tint_bool) from fn_test "
+       qt_km_tint_bool_not_nullable "select count(km_tint_bool) from 
fn_test_not_nullable "
+       qt_km_int_int "select count(km_int_int) from fn_test "
+       qt_km_int_int_not_nullable "select count(km_int_int) from 
fn_test_not_nullable "
+       qt_km_tint_sint "select count(km_tint_sint) from fn_test "
+       qt_km_tint_sint_not_nullable "select count(km_tint_sint) from 
fn_test_not_nullable "
+       qt_km_tint_int "select count(km_tint_int) from fn_test "
+       qt_km_tint_int_not_nullable "select count(km_tint_int) from 
fn_test_not_nullable "
+       qt_km_tint_bint "select count(km_tint_bint) from fn_test "
+       qt_km_tint_bint_not_nullable "select count(km_tint_bint) from 
fn_test_not_nullable "
+       qt_km_tint_lint "select count(km_tint_lint) from fn_test "
+       qt_km_tint_lint_not_nullable "select count(km_tint_lint) from 
fn_test_not_nullable "
+       qt_km_tint_float "select count(km_tint_float) from fn_test "
+       qt_km_tint_float_not_nullable "select count(km_tint_float) from 
fn_test_not_nullable "
+       qt_km_tint_dbl "select count(km_tint_dbl) from fn_test "
+       qt_km_tint_dbl_not_nullable "select count(km_tint_dbl) from 
fn_test_not_nullable "
+       qt_km_tint_dcml "select count(km_tint_dcml) from fn_test "
+       qt_km_tint_dcml_not_nullable "select count(km_tint_dcml) from 
fn_test_not_nullable "
+       qt_km_tint_chr "select count(km_tint_chr) from fn_test "
+       qt_km_tint_chr_not_nullable "select count(km_tint_chr) from 
fn_test_not_nullable "
+       qt_km_tint_vchr "select count(km_tint_vchr) from fn_test "
+       qt_km_tint_vchr_not_nullable "select count(km_tint_vchr) from 
fn_test_not_nullable "
+       qt_km_tint_str "select count(km_tint_str) from fn_test "
+       qt_km_tint_str_not_nullable "select count(km_tint_str) from 
fn_test_not_nullable "
+       qt_km_tint_date "select count(km_tint_date) from fn_test "
+       qt_km_tint_date_not_nullable "select count(km_tint_date) from 
fn_test_not_nullable "
+       qt_km_tint_dtm "select count(km_tint_dtm) from fn_test "
+       qt_km_tint_dtm_not_nullable "select count(km_tint_dtm) from 
fn_test_not_nullable "
+       qt_kjson "select count(kjson) from fn_test "
+       qt_kjson_not_nullable "select count(kjson) from fn_test_not_nullable "
+       qt_kstruct "select count(kstruct) from fn_test "
+       qt_kstruct_not_nullable "select count(kstruct) from 
fn_test_not_nullable "
+       qt_kabool "select count(kabool) from fn_test "
+       qt_kabool_not_nullable "select count(kabool) from fn_test_not_nullable "
+       qt_katint "select count(katint) from fn_test "
+       qt_katint_not_nullable "select count(katint) from fn_test_not_nullable "
+       qt_kasint "select count(kasint) from fn_test "
+       qt_kasint_not_nullable "select count(kasint) from fn_test_not_nullable "
+       qt_kaint "select count(kaint) from fn_test "
+       qt_kaint_not_nullable "select count(kaint) from fn_test_not_nullable "
+       qt_kabint "select count(kabint) from fn_test "
+       qt_kabint_not_nullable "select count(kabint) from fn_test_not_nullable "
+       qt_kalint "select count(kalint) from fn_test "
+       qt_kalint_not_nullable "select count(kalint) from fn_test_not_nullable "
+       qt_kafloat "select count(kafloat) from fn_test "
+       qt_kafloat_not_nullable "select count(kafloat) from 
fn_test_not_nullable "
+       qt_kadbl "select count(kadbl) from fn_test "
+       qt_kadbl_not_nullable "select count(kadbl) from fn_test_not_nullable "
+       qt_kadt "select count(kadt) from fn_test "
+       qt_kadt_not_nullable "select count(kadt) from fn_test_not_nullable "
+       qt_kadtm "select count(kadtm) from fn_test "
+       qt_kadtm_not_nullable "select count(kadtm) from fn_test_not_nullable "
+       qt_kadtv2 "select count(kadtv2) from fn_test "
+       qt_kadtv2_not_nullable "select count(kadtv2) from fn_test_not_nullable "
+       qt_kadtmv2 "select count(kadtmv2) from fn_test "
+       qt_kadtmv2_not_nullable "select count(kadtmv2) from 
fn_test_not_nullable "
+       qt_kachr "select count(kachr) from fn_test "
+       qt_kachr_not_nullable "select count(kachr) from fn_test_not_nullable "
+       qt_kavchr "select count(kavchr) from fn_test "
+       qt_kavchr_not_nullable "select count(kavchr) from fn_test_not_nullable "
+       qt_kastr "select count(kastr) from fn_test "
+       qt_kastr_not_nullable "select count(kastr) from fn_test_not_nullable "
+       qt_kadcml "select count(kadcml) from fn_test "
+       qt_kadcml_not_nullable "select count(kadcml) from fn_test_not_nullable "
+       qt_bitmap "select count(kbitmap) from fn_test_bitmap"
+       qt_bitmap_not_nullable "select count(kbitmap) from 
fn_test_bitmap_not_nullable"
        qt_char "select char(68, 111, 114, 105, 115), char(68, 111, 114, 105, 
115 using utf8);"
        qt_convert "select convert(1 using gbk), convert(1, string);"
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to