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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 6737fdea64a9159330a070433557d4f2fe3b3ed5
Author: Pxl <[email protected]>
AuthorDate: Wed Feb 28 15:23:27 2024 +0800

    [Chore](agg-state) adjust AggStateType constructor check input (#31401)
    
    adjust AggStateType constructor check input
---
 .../org/apache/doris/catalog/AggStateType.java     | 33 ++++++---------
 .../java/org/apache/doris/catalog/ScalarType.java  |  4 --
 .../main/java/org/apache/doris/catalog/Type.java   | 49 ++--------------------
 fe/fe-core/src/main/cup/sql_parser.cup             | 25 ++++++-----
 .../java/org/apache/doris/analysis/ColumnDef.java  | 41 ------------------
 .../main/java/org/apache/doris/analysis/Expr.java  | 14 +++----
 .../apache/doris/statistics/ColumnStatistic.java   |  2 +-
 7 files changed, 36 insertions(+), 132 deletions(-)

diff --git 
a/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java 
b/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java
index 3d1b6ac64f5..35301fa704e 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java
@@ -43,11 +43,10 @@ public class AggStateType extends ScalarType {
     public AggStateType(String functionName, Boolean resultIsNullable, 
List<Type> subTypes,
             List<Boolean> subTypeNullables) {
         super(PrimitiveType.AGG_STATE);
-        Preconditions.checkState((subTypes == null) == (subTypeNullables == 
null));
-        if (subTypes != null && subTypeNullables != null) {
-            Preconditions.checkState(subTypes.size() == 
subTypeNullables.size(),
-                    "AggStateType' subTypes.size()!=subTypeNullables.size()");
-        }
+        Preconditions.checkState(subTypes != null);
+        Preconditions.checkState(subTypeNullables != null);
+        Preconditions.checkState(subTypes.size() == subTypeNullables.size(),
+                "AggStateType' subTypes.size()!=subTypeNullables.size()");
         this.functionName = functionName;
         this.subTypes = subTypes;
         this.subTypeNullables = subTypeNullables;
@@ -90,17 +89,15 @@ public class AggStateType extends ScalarType {
     @Override
     public void toThrift(TTypeDesc container) {
         super.toThrift(container);
-        if (subTypes != null) {
-            List<TTypeDesc> types = new ArrayList<TTypeDesc>();
-            for (int i = 0; i < subTypes.size(); i++) {
-                TTypeDesc desc = new TTypeDesc();
-                desc.setTypes(new ArrayList<TTypeNode>());
-                subTypes.get(i).toThrift(desc);
-                desc.setIsNullable(subTypeNullables.get(i));
-                types.add(desc);
-            }
-            container.setSubTypes(types);
+        List<TTypeDesc> types = new ArrayList<TTypeDesc>();
+        for (int i = 0; i < subTypes.size(); i++) {
+            TTypeDesc desc = new TTypeDesc();
+            desc.setTypes(new ArrayList<TTypeNode>());
+            subTypes.get(i).toThrift(desc);
+            desc.setIsNullable(subTypeNullables.get(i));
+            types.add(desc);
         }
+        container.setSubTypes(types);
         container.setResultIsNullable(resultIsNullable);
         container.setFunctionName(functionName);
     }
@@ -111,12 +108,6 @@ public class AggStateType extends ScalarType {
             return false;
         }
         AggStateType other = (AggStateType) o;
-        if ((subTypes == null) != (other.getSubTypes() == null)) {
-            return false;
-        }
-        if (subTypes == null) {
-            return true;
-        }
         int subTypeNumber = subTypeNullables.size();
         if (subTypeNumber != other.subTypeNullables.size()) {
             return false;
diff --git 
a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java 
b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
index 57876d08d72..83072ad97f5 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
@@ -190,8 +190,6 @@ public class ScalarType extends Type {
                 return BITMAP;
             case QUANTILE_STATE:
                 return QUANTILE_STATE;
-            case AGG_STATE:
-                return AGG_STATE;
             case LAMBDA_FUNCTION:
                 return LAMBDA_FUNCTION;
             case DATE:
@@ -264,8 +262,6 @@ public class ScalarType extends Type {
                 return BITMAP;
             case "QUANTILE_STATE":
                 return QUANTILE_STATE;
-            case "AGG_STATE":
-                return AGG_STATE;
             case "LAMBDA_FUNCTION":
                 return LAMBDA_FUNCTION;
             case "DATE":
diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/Type.java 
b/fe/fe-common/src/main/java/org/apache/doris/catalog/Type.java
index 96caba0e4b4..99081349755 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/Type.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/Type.java
@@ -113,7 +113,6 @@ public abstract class Type {
     public static final ScalarType CHAR = ScalarType.createCharType(-1);
     public static final ScalarType BITMAP = new 
ScalarType(PrimitiveType.BITMAP);
     public static final ScalarType QUANTILE_STATE = new 
ScalarType(PrimitiveType.QUANTILE_STATE);
-    public static final AggStateType AGG_STATE = new AggStateType(null, null, 
null, null);
     public static final ScalarType LAMBDA_FUNCTION = new 
ScalarType(PrimitiveType.LAMBDA_FUNCTION);
     // Only used for alias function, to represent any type in function args
     public static final ScalarType ALL = new ScalarType(PrimitiveType.ALL);
@@ -172,7 +171,6 @@ public abstract class Type {
         typeMap.put("OBJECT", Type.UNSUPPORTED);
         typeMap.put("ARRAY", Type.ARRAY);
         typeMap.put("QUANTILE_STATE", Type.QUANTILE_STATE);
-        typeMap.put("AGG_STATE", Type.AGG_STATE);
     }
 
     static {
@@ -230,7 +228,6 @@ public abstract class Type {
         supportedTypes.add(HLL);
         supportedTypes.add(BITMAP);
         supportedTypes.add(QUANTILE_STATE);
-        supportedTypes.add(AGG_STATE);
 
         arraySubTypes = Lists.newArrayList();
         arraySubTypes.add(BOOLEAN);
@@ -1038,8 +1035,6 @@ public abstract class Type {
                 return Type.QUANTILE_STATE;
             case LAMBDA_FUNCTION:
                 return Type.LAMBDA_FUNCTION;
-            case AGG_STATE:
-                return Type.AGG_STATE;
             default:
                 return null;
         }
@@ -1403,7 +1398,6 @@ public abstract class Type {
         compatibilityMatrix[BOOLEAN.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BOOLEAN.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BOOLEAN.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[BOOLEAN.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // TINYINT
         compatibilityMatrix[TINYINT.ordinal()][SMALLINT.ordinal()] = 
PrimitiveType.SMALLINT;
@@ -1434,7 +1428,6 @@ public abstract class Type {
         compatibilityMatrix[TINYINT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TINYINT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TINYINT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[TINYINT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // SMALLINT
         compatibilityMatrix[SMALLINT.ordinal()][INT.ordinal()] = 
PrimitiveType.INT;
@@ -1464,7 +1457,6 @@ public abstract class Type {
         compatibilityMatrix[SMALLINT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[SMALLINT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[SMALLINT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[SMALLINT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // INT
         compatibilityMatrix[INT.ordinal()][BIGINT.ordinal()] = 
PrimitiveType.BIGINT;
@@ -1497,7 +1489,6 @@ public abstract class Type {
         compatibilityMatrix[INT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[INT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[INT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[INT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // BIGINT
         // 64 bit integer does not fit in mantissa of double or float.
@@ -1531,7 +1522,6 @@ public abstract class Type {
         compatibilityMatrix[BIGINT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BIGINT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BIGINT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[BIGINT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // LARGEINT
         compatibilityMatrix[LARGEINT.ordinal()][FLOAT.ordinal()] = 
PrimitiveType.DOUBLE;
@@ -1557,7 +1547,6 @@ public abstract class Type {
         compatibilityMatrix[LARGEINT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[LARGEINT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[LARGEINT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[LARGEINT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // FLOAT
         compatibilityMatrix[FLOAT.ordinal()][DOUBLE.ordinal()] = 
PrimitiveType.DOUBLE;
@@ -1582,7 +1571,6 @@ public abstract class Type {
         compatibilityMatrix[FLOAT.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[FLOAT.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[FLOAT.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[FLOAT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DOUBLE
         compatibilityMatrix[DOUBLE.ordinal()][DATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1606,7 +1594,6 @@ public abstract class Type {
         compatibilityMatrix[DOUBLE.ordinal()][TIMEV2.ordinal()] = 
PrimitiveType.DOUBLE;
         compatibilityMatrix[DOUBLE.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DOUBLE.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DOUBLE.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DATE
         compatibilityMatrix[DATE.ordinal()][DATETIME.ordinal()] = 
PrimitiveType.DATETIME;
@@ -1629,7 +1616,6 @@ public abstract class Type {
         compatibilityMatrix[DATE.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATE.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATE.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DATE.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DATEV2
         compatibilityMatrix[DATEV2.ordinal()][DATE.ordinal()] = 
PrimitiveType.DATEV2;
@@ -1652,7 +1638,6 @@ public abstract class Type {
         compatibilityMatrix[DATEV2.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATEV2.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATEV2.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DATEV2.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DATETIME
         compatibilityMatrix[DATETIME.ordinal()][CHAR.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1674,7 +1659,6 @@ public abstract class Type {
         compatibilityMatrix[DATETIME.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATETIME.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATETIME.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DATETIME.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DATETIMEV2
         compatibilityMatrix[DATETIMEV2.ordinal()][CHAR.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1696,7 +1680,6 @@ public abstract class Type {
         compatibilityMatrix[DATETIMEV2.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATETIMEV2.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DATETIMEV2.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DATETIMEV2.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // We can convert some but not all string values to timestamps.
         // CHAR
@@ -1718,7 +1701,6 @@ public abstract class Type {
         compatibilityMatrix[CHAR.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[CHAR.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[CHAR.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[CHAR.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // VARCHAR
         compatibilityMatrix[VARCHAR.ordinal()][DECIMALV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1738,7 +1720,6 @@ public abstract class Type {
         compatibilityMatrix[VARCHAR.ordinal()][QUANTILE_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[VARCHAR.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[VARCHAR.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[VARCHAR.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         //String
         compatibilityMatrix[STRING.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1756,7 +1737,6 @@ public abstract class Type {
         compatibilityMatrix[STRING.ordinal()][VARIANT.ordinal()] = 
PrimitiveType.STRING;
         compatibilityMatrix[STRING.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[STRING.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[STRING.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         //JSONB
         compatibilityMatrix[JSONB.ordinal()][DECIMALV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1776,7 +1756,7 @@ public abstract class Type {
         compatibilityMatrix[JSONB.ordinal()][VARCHAR.ordinal()] = 
PrimitiveType.VARCHAR;
         compatibilityMatrix[JSONB.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[JSONB.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[JSONB.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
+
         // VARIANT
         compatibilityMatrix[VARIANT.ordinal()][DECIMALV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[VARIANT.ordinal()][DECIMAL32.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1793,7 +1773,6 @@ public abstract class Type {
         compatibilityMatrix[VARIANT.ordinal()][STRING.ordinal()] = 
PrimitiveType.STRING;
         compatibilityMatrix[VARIANT.ordinal()][CHAR.ordinal()] = 
PrimitiveType.CHAR;
         compatibilityMatrix[VARIANT.ordinal()][VARCHAR.ordinal()] = 
PrimitiveType.VARCHAR;
-        compatibilityMatrix[VARIANT.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DECIMALV2
         compatibilityMatrix[DECIMALV2.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1812,7 +1791,6 @@ public abstract class Type {
         compatibilityMatrix[DECIMALV2.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMALV2.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMALV2.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DECIMALV2.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DECIMAL32
         compatibilityMatrix[DECIMAL32.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1830,7 +1808,6 @@ public abstract class Type {
         compatibilityMatrix[DECIMAL32.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMAL32.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMAL32.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.DECIMAL256;
-        compatibilityMatrix[DECIMAL32.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DECIMAL64
         compatibilityMatrix[DECIMAL64.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1848,7 +1825,6 @@ public abstract class Type {
         compatibilityMatrix[DECIMAL64.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.DECIMAL256;
         compatibilityMatrix[DECIMAL64.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMAL64.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DECIMAL64.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DECIMAL128
         compatibilityMatrix[DECIMAL128.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1866,7 +1842,6 @@ public abstract class Type {
         compatibilityMatrix[DECIMAL128.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.DECIMAL256;
         compatibilityMatrix[DECIMAL128.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[DECIMAL128.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[DECIMAL128.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // DECIMAL256
         compatibilityMatrix[DECIMAL256.ordinal()][HLL.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1881,7 +1856,6 @@ public abstract class Type {
         compatibilityMatrix[DECIMAL256.ordinal()][DECIMAL32.ordinal()] = 
PrimitiveType.DECIMAL256;
         compatibilityMatrix[DECIMAL256.ordinal()][DECIMAL64.ordinal()] = 
PrimitiveType.DECIMAL256;
         compatibilityMatrix[DECIMAL256.ordinal()][DECIMAL128.ordinal()] = 
PrimitiveType.DECIMAL256;
-        compatibilityMatrix[DECIMAL256.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // HLL
         compatibilityMatrix[HLL.ordinal()][TIME.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1899,7 +1873,6 @@ public abstract class Type {
         compatibilityMatrix[HLL.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[HLL.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[HLL.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[HLL.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
 
         // BITMAP
@@ -1917,7 +1890,6 @@ public abstract class Type {
         compatibilityMatrix[BITMAP.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BITMAP.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[BITMAP.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[BITMAP.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         //QUANTILE_STATE
         compatibilityMatrix[QUANTILE_STATE.ordinal()][JSONB.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1931,18 +1903,6 @@ public abstract class Type {
         compatibilityMatrix[QUANTILE_STATE.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[QUANTILE_STATE.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[QUANTILE_STATE.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[QUANTILE_STATE.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-
-        //AGG_STATE
-        compatibilityMatrix[AGG_STATE.ordinal()][JSONB.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][VARIANT.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][STRING.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DATEV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DATETIMEV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DECIMAL32.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DECIMAL64.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DECIMAL128.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[AGG_STATE.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // TIME why here not???
         compatibilityMatrix[TIME.ordinal()][TIME.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1955,7 +1915,6 @@ public abstract class Type {
         compatibilityMatrix[TIME.ordinal()][DATETIMEV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TIME.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TIME.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[TIME.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         compatibilityMatrix[TIMEV2.ordinal()][TIMEV2.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TIMEV2.ordinal()][TIME.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1965,7 +1924,6 @@ public abstract class Type {
         compatibilityMatrix[TIMEV2.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TIMEV2.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[TIMEV2.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[TIMEV2.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // IPV4
         compatibilityMatrix[IPV4.ordinal()][TIME.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1981,7 +1939,6 @@ public abstract class Type {
         compatibilityMatrix[IPV4.ordinal()][DECIMAL128.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[IPV4.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[IPV4.ordinal()][IPV6.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[IPV4.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // IPV6
         compatibilityMatrix[IPV6.ordinal()][TIME.ordinal()] = 
PrimitiveType.INVALID_TYPE;
@@ -1997,7 +1954,6 @@ public abstract class Type {
         compatibilityMatrix[IPV6.ordinal()][DECIMAL128.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[IPV6.ordinal()][DECIMAL256.ordinal()] = 
PrimitiveType.INVALID_TYPE;
         compatibilityMatrix[IPV6.ordinal()][IPV4.ordinal()] = 
PrimitiveType.INVALID_TYPE;
-        compatibilityMatrix[IPV6.ordinal()][AGG_STATE.ordinal()] = 
PrimitiveType.INVALID_TYPE;
 
         // Check all of the necessary entries that should be filled.
         // ignore binary and all
@@ -2019,7 +1975,8 @@ public abstract class Type {
                         || t1 == PrimitiveType.VARIANT || t2 == 
PrimitiveType.VARIANT
                         || t1 == PrimitiveType.LAMBDA_FUNCTION || t2 == 
PrimitiveType.LAMBDA_FUNCTION
                         || t1 == PrimitiveType.IPV4 || t2 == PrimitiveType.IPV4
-                        || t1 == PrimitiveType.IPV6 || t2 == 
PrimitiveType.IPV6) {
+                        || t1 == PrimitiveType.IPV6 || t2 == PrimitiveType.IPV6
+                        || t1 == PrimitiveType.AGG_STATE || t2 == 
PrimitiveType.AGG_STATE) {
                     continue;
                 }
                 Preconditions.checkNotNull(compatibilityMatrix[i][j]);
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup 
b/fe/fe-core/src/main/cup/sql_parser.cup
index fb37eee9c76..ab5c0ec2b32 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -57,6 +57,7 @@ import 
org.apache.doris.resource.workloadschedpolicy.WorkloadActionMeta;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import java.util.stream.Collectors;
 
 import java_cup.runtime.Symbol;
 
@@ -3729,11 +3730,14 @@ column_definition ::=
         ColumnDef columnDef = new ColumnDef(columnName, typeDef, isKey, null, 
isAllowNull, autoIncInitValue, defaultValue, comment);
         RESULT = columnDef;
     :}
-    | ident:columnName type_def:typeDef IDENT:fnName LPAREN 
type_def_nullable_list:list RPAREN opt_auto_inc_init_value:autoIncInitValue 
opt_default_value:defaultValue opt_comment:comment
+    | ident:columnName KW_AGG_STATE IDENT:fnName LPAREN 
type_def_nullable_list:list RPAREN opt_auto_inc_init_value:autoIncInitValue 
opt_default_value:defaultValue opt_comment:comment
     {:
-        ColumnDef columnDef = new ColumnDef(columnName, typeDef, false, 
AggregateType.GENERIC_AGGREGATION, false, defaultValue, comment);
-        columnDef.setGenericAggregationName(fnName);
-        columnDef.setGenericAggregationArguments(list);
+        for (TypeDef def : list) {
+            def.analyze(null);
+        }
+        ColumnDef columnDef = new ColumnDef(columnName, new 
TypeDef(Expr.createAggStateType(fnName,
+            list.stream().map(TypeDef::getType).collect(Collectors.toList()), 
+            
list.stream().map(TypeDef::getNullable).collect(Collectors.toList()))), false, 
AggregateType.GENERIC_AGGREGATION, false, defaultValue, comment);
         RESULT = columnDef;
     :}
     | ident:columnName type_def:typeDef opt_is_key:isKey opt_agg_type:aggType 
opt_is_allow_null:isAllowNull opt_auto_inc_init_value:autoIncInitValue 
opt_default_value:defaultValue opt_comment:comment
@@ -3741,11 +3745,14 @@ column_definition ::=
         ColumnDef columnDef = new ColumnDef(columnName, typeDef, isKey, 
aggType, isAllowNull, autoIncInitValue, defaultValue, comment);
         RESULT = columnDef;
     :}
-    | ident:columnName type_def:typeDef opt_is_key:isKey opt_agg_type:aggType 
LPAREN type_def_nullable_list:list RPAREN opt_default_value:defaultValue 
opt_comment:comment
+    | ident:columnName KW_AGG_STATE opt_is_key:isKey opt_agg_type:aggType 
LPAREN type_def_nullable_list:list RPAREN opt_default_value:defaultValue 
opt_comment:comment
     {:
-        ColumnDef columnDef = new ColumnDef(columnName, typeDef, isKey, 
AggregateType.GENERIC_AGGREGATION, false, defaultValue, comment);
-        columnDef.setGenericAggregationName(aggType);
-        columnDef.setGenericAggregationArguments(list);
+        for (TypeDef def : list) {
+            def.analyze(null);
+        }
+        ColumnDef columnDef = new ColumnDef(columnName, new 
TypeDef(Expr.createAggStateType(aggType.name().toLowerCase(),
+            list.stream().map(TypeDef::getType).collect(Collectors.toList()), 
+            
list.stream().map(TypeDef::getNullable).collect(Collectors.toList()))), isKey, 
AggregateType.GENERIC_AGGREGATION, false, defaultValue, comment);
         RESULT = columnDef;
     :}
     ;
@@ -6473,8 +6480,6 @@ type ::=
   {: RESULT = Type.BITMAP; :}
   | KW_QUANTILE_STATE
   {: RESULT = Type.QUANTILE_STATE; :}
-  | KW_AGG_STATE
-  {: RESULT = Type.AGG_STATE; :}
   | KW_STRING
   {: RESULT = ScalarType.createStringType(); :}
   | KW_JSON
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index 8f3e2ea0a11..59e5be4725b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -37,8 +37,6 @@ import org.apache.logging.log4j.Logger;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.List;
-import java.util.stream.Collectors;
 
 // Column definition which is generated by SQL syntax parser
 // Syntax:
@@ -172,8 +170,6 @@ public class ColumnDef {
     private String name;
     private TypeDef typeDef;
     private AggregateType aggregateType;
-    private String genericAggregationName;
-    private List<TypeDef> genericAggregationArguments;
 
     private boolean isKey;
     private boolean isAllowNull;
@@ -273,18 +269,6 @@ public class ColumnDef {
         this.aggregateType = aggregateType;
     }
 
-    public void setGenericAggregationName(String genericAggregationName) {
-        this.genericAggregationName = genericAggregationName;
-    }
-
-    public void setGenericAggregationName(AggregateType aggregateType) {
-        this.genericAggregationName = aggregateType.name().toLowerCase();
-    }
-
-    public void setGenericAggregationArguments(List<TypeDef> 
genericAggregationArguments) {
-        this.genericAggregationArguments = genericAggregationArguments;
-    }
-
     public boolean isKey() {
         return isKey;
     }
@@ -421,21 +405,6 @@ public class ColumnDef {
             }
         }
 
-        if (type.getPrimitiveType() == PrimitiveType.AGG_STATE && 
genericAggregationName != null) {
-            if (isKey()) {
-                throw new AnalysisException("AGG_STATE type should not be used 
in key column[" + getName()
-                        + "].");
-            }
-            for (TypeDef def : genericAggregationArguments) {
-                def.analyze(null);
-            }
-        } else if (type.getPrimitiveType() == PrimitiveType.AGG_STATE) {
-            throw new AnalysisException("AGG_STATE type need generic 
aggregation in column[" + getName()
-                    + "].");
-        } else if (genericAggregationName != null) {
-            throw new AnalysisException("generic aggregation need AGG_STATE 
type in column[" + getName()
-                    + "].");
-        }
 
         // If aggregate type is REPLACE_IF_NOT_NULL, we set it nullable.
         // If default value is not set, we set it NULL
@@ -586,17 +555,7 @@ public class ColumnDef {
     }
 
     public Column toColumn() {
-        List<Type> typeList = null;
-        List<Boolean> nullableList = null;
-
         Type type = typeDef.getType();
-        if (genericAggregationArguments != null) {
-            typeList = 
genericAggregationArguments.stream().map(TypeDef::getType).collect(Collectors.toList());
-            nullableList = 
genericAggregationArguments.stream().map(TypeDef::getNullable).collect(Collectors.toList());
-
-            type = Expr.createAggStateType(genericAggregationName, typeList, 
nullableList);
-        }
-
         return new Column(name, type, isKey, aggregateType, isAllowNull, 
autoIncInitValue, defaultValue.value, comment,
                 visible, defaultValue.defaultValueExprDef, 
Column.COLUMN_UNIQUE_ID_INIT_VALUE, defaultValue.getValue(),
                 clusterKeyId);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
index d1ea7f33e82..d89ae3ffffa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
@@ -72,6 +72,7 @@ import java.util.ListIterator;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * Root of the expr node hierarchy.
@@ -465,7 +466,7 @@ public abstract class Expr extends TreeNode<Expr> 
implements ParseNode, Cloneabl
             setSelectivity();
         }
         analysisDone();
-        if (type.isAggStateType() && !(this instanceof SlotRef) && 
((AggStateType) type).getSubTypes() == null) {
+        if (type.isAggStateType() && !(this instanceof SlotRef) && 
!children.get(0).getType().isAggStateType()) {
             type = createAggStateType(((AggStateType) type), 
Arrays.asList(collectChildReturnTypes()),
                     Arrays.asList(collectChildReturnNullables()));
         }
@@ -1045,10 +1046,6 @@ public abstract class Expr extends TreeNode<Expr> 
implements ParseNode, Cloneabl
     // Append a flattened version of this expr, including all children, to 
'container'.
     protected void treeToThriftHelper(TExpr container) {
         TExprNode msg = new TExprNode();
-        if (type.isAggStateType() && ((AggStateType) type).getSubTypes() == 
null) {
-            type = createAggStateType(((AggStateType) type), 
Arrays.asList(collectChildReturnTypes()),
-                    Arrays.asList(collectChildReturnNullables()));
-        }
         msg.type = type.toThrift();
         msg.num_children = children.size();
         if (fn != null) {
@@ -1964,9 +1961,6 @@ public abstract class Expr extends TreeNode<Expr> 
implements ParseNode, Cloneabl
                     throw new AnalysisException("merge/union function must 
input one agg_state");
                 }
                 AggStateType aggState = (AggStateType) argList.get(0);
-                if (aggState.getSubTypes() == null) {
-                    throw new AnalysisException("agg_state's subTypes is 
null");
-                }
                 nestedArgList = aggState.getSubTypes();
             }
 
@@ -1979,7 +1973,9 @@ public abstract class Expr extends TreeNode<Expr> 
implements ParseNode, Cloneabl
 
             if (isState) {
                 f = new ScalarFunction(new FunctionName(name + 
AGG_STATE_SUFFIX), Arrays.asList(f.getArgs()),
-                        Expr.createAggStateType(name, null, null), 
f.hasVarArgs(), f.isUserVisible());
+                        Expr.createAggStateType(name, nestedArgList,
+                                nestedArgList.stream().map(e -> 
true).collect(Collectors.toList())),
+                        f.hasVarArgs(), f.isUserVisible());
                 f.setNullableMode(NullableMode.ALWAYS_NOT_NULLABLE);
             } else {
                 Function original = f;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
index e38ba86c825..e5dd1e1765b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java
@@ -58,7 +58,7 @@ public class ColumnStatistic {
             .build();
 
     public static final Set<Type> UNSUPPORTED_TYPE = Sets.newHashSet(
-            Type.HLL, Type.BITMAP, Type.ARRAY, Type.STRUCT, Type.MAP, 
Type.QUANTILE_STATE, Type.AGG_STATE, Type.JSONB,
+            Type.HLL, Type.BITMAP, Type.ARRAY, Type.STRUCT, Type.MAP, 
Type.QUANTILE_STATE, Type.JSONB,
             Type.VARIANT, Type.TIME, Type.TIMEV2, Type.LAMBDA_FUNCTION
     );
 


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


Reply via email to