You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by pa...@apache.org on 2024/02/28 07:23:35 UTC
(doris) branch master updated: [Chore](agg-state) adjust AggStateType constructor check input (#31401)
This is an automated email from the ASF dual-hosted git repository.
panxiaolei 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 5132b71e586 [Chore](agg-state) adjust AggStateType constructor check input (#31401)
5132b71e586 is described below
commit 5132b71e58686cc7ead321692830134ede0af65e
Author: Pxl <px...@qq.com>
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 9eb8a9f81ad..e0515739807 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -58,6 +58,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;
@@ -3748,11 +3749,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
@@ -3760,11 +3764,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;
:}
;
@@ -6513,8 +6520,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: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org