This is an automated email from the ASF dual-hosted git repository. morrysnow 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 bf4fb32487 [minor](catalog) remove useless compatibilityMatrix in catalog PrimitiveType (#24999) bf4fb32487 is described below commit bf4fb324875ae4366baaf07695f90292de1d55c0 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Thu Sep 28 15:57:59 2023 +0800 [minor](catalog) remove useless compatibilityMatrix in catalog PrimitiveType (#24999) --- .../org/apache/doris/catalog/PrimitiveType.java | 407 +-------------------- 1 file changed, 6 insertions(+), 401 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java index 5f34bb65c9..78a60239f2 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java @@ -20,7 +20,6 @@ package org.apache.doris.catalog; import org.apache.doris.common.Config; import org.apache.doris.thrift.TPrimitiveType; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Lists; @@ -88,7 +87,7 @@ public enum PrimitiveType { private static final int STRING_INDEX_LEN = 20; private static final int DECIMAL_INDEX_LEN = 12; - public static ImmutableSet<PrimitiveType> typeWithPrecision; + public static final ImmutableSet<PrimitiveType> typeWithPrecision; static { ImmutableSet.Builder<PrimitiveType> builder = ImmutableSet.builder(); @@ -99,7 +98,7 @@ public enum PrimitiveType { typeWithPrecision = builder.build(); } - private static ImmutableSetMultimap<PrimitiveType, PrimitiveType> implicitCastMap; + private static final ImmutableSetMultimap<PrimitiveType, PrimitiveType> implicitCastMap; public static ImmutableSetMultimap<PrimitiveType, PrimitiveType> getImplicitCastMap() { return implicitCastMap; @@ -552,9 +551,9 @@ public enum PrimitiveType { implicitCastMap = builder.build(); } - private static ArrayList<PrimitiveType> integerTypes; - private static ArrayList<PrimitiveType> numericTypes; - private static ArrayList<PrimitiveType> supportedTypes; + private static final ArrayList<PrimitiveType> integerTypes; + private static final ArrayList<PrimitiveType> numericTypes; + private static final ArrayList<PrimitiveType> supportedTypes; static { integerTypes = Lists.newArrayList(); @@ -627,379 +626,13 @@ public enum PrimitiveType { return implicitCastMap.get(type).contains(target); } - /** - * Matrix that records "smallest" assignment-compatible type of two types - * (INVALID_TYPE if no such type exists, ie, if the input types are fundamentally - * incompatible). A value of any of the two types could be assigned to a slot - * of the assignment-compatible type without loss of precision. - * <p/> - * We chose not to follow MySQL's type casting behavior as described here: - * http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html - * for the following reasons: - * conservative casting in arithmetic exprs: TINYINT + TINYINT -> BIGINT - * comparison of many types as double: INT < FLOAT -> comparison as DOUBLE - * special cases when dealing with dates and timestamps - */ - private static PrimitiveType[][] compatibilityMatrix; - - static { - compatibilityMatrix = new PrimitiveType[PrimitiveType.values().length][PrimitiveType.values().length]; - - // NULL_TYPE is compatible with any type and results in the non-null type. - compatibilityMatrix[NULL_TYPE.ordinal()][NULL_TYPE.ordinal()] = NULL_TYPE; - compatibilityMatrix[NULL_TYPE.ordinal()][BOOLEAN.ordinal()] = BOOLEAN; - compatibilityMatrix[NULL_TYPE.ordinal()][TINYINT.ordinal()] = TINYINT; - compatibilityMatrix[NULL_TYPE.ordinal()][SMALLINT.ordinal()] = SMALLINT; - compatibilityMatrix[NULL_TYPE.ordinal()][INT.ordinal()] = INT; - compatibilityMatrix[NULL_TYPE.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[NULL_TYPE.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[NULL_TYPE.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[NULL_TYPE.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[NULL_TYPE.ordinal()][DATE.ordinal()] = DATE; - compatibilityMatrix[NULL_TYPE.ordinal()][DATETIME.ordinal()] = DATETIME; - compatibilityMatrix[NULL_TYPE.ordinal()][DATEV2.ordinal()] = DATEV2; - compatibilityMatrix[NULL_TYPE.ordinal()][DATETIMEV2.ordinal()] = DATETIMEV2; - compatibilityMatrix[NULL_TYPE.ordinal()][CHAR.ordinal()] = CHAR; - compatibilityMatrix[NULL_TYPE.ordinal()][VARCHAR.ordinal()] = VARCHAR; - compatibilityMatrix[NULL_TYPE.ordinal()][JSONB.ordinal()] = JSONB; - compatibilityMatrix[NULL_TYPE.ordinal()][VARIANT.ordinal()] = VARIANT; - compatibilityMatrix[NULL_TYPE.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[NULL_TYPE.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[NULL_TYPE.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[NULL_TYPE.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[NULL_TYPE.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[NULL_TYPE.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[NULL_TYPE.ordinal()][TIMEV2.ordinal()] = TIMEV2; - compatibilityMatrix[NULL_TYPE.ordinal()][BITMAP.ordinal()] = BITMAP; - compatibilityMatrix[NULL_TYPE.ordinal()][QUANTILE_STATE.ordinal()] = QUANTILE_STATE; - compatibilityMatrix[NULL_TYPE.ordinal()][AGG_STATE.ordinal()] = AGG_STATE; - - compatibilityMatrix[BOOLEAN.ordinal()][BOOLEAN.ordinal()] = BOOLEAN; - compatibilityMatrix[BOOLEAN.ordinal()][TINYINT.ordinal()] = TINYINT; - compatibilityMatrix[BOOLEAN.ordinal()][SMALLINT.ordinal()] = SMALLINT; - compatibilityMatrix[BOOLEAN.ordinal()][INT.ordinal()] = INT; - compatibilityMatrix[BOOLEAN.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[BOOLEAN.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[BOOLEAN.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[BOOLEAN.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[BOOLEAN.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BOOLEAN.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[BOOLEAN.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[BOOLEAN.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[BOOLEAN.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[BOOLEAN.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[BOOLEAN.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[TINYINT.ordinal()][TINYINT.ordinal()] = TINYINT; - compatibilityMatrix[TINYINT.ordinal()][SMALLINT.ordinal()] = SMALLINT; - compatibilityMatrix[TINYINT.ordinal()][INT.ordinal()] = INT; - compatibilityMatrix[TINYINT.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[TINYINT.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[TINYINT.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[TINYINT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[TINYINT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[TINYINT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[TINYINT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[TINYINT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[TINYINT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[TINYINT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[TINYINT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[SMALLINT.ordinal()][SMALLINT.ordinal()] = SMALLINT; - compatibilityMatrix[SMALLINT.ordinal()][INT.ordinal()] = INT; - compatibilityMatrix[SMALLINT.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[SMALLINT.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[SMALLINT.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[SMALLINT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[SMALLINT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[SMALLINT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[SMALLINT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[SMALLINT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[SMALLINT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[SMALLINT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[SMALLINT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[INT.ordinal()][INT.ordinal()] = INT; - compatibilityMatrix[INT.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[INT.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[INT.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[INT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[INT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[INT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[INT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[INT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[INT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[INT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[INT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[BIGINT.ordinal()][BIGINT.ordinal()] = BIGINT; - compatibilityMatrix[BIGINT.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[BIGINT.ordinal()][FLOAT.ordinal()] = DOUBLE; - compatibilityMatrix[BIGINT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[BIGINT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[BIGINT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[BIGINT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[BIGINT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[BIGINT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[BIGINT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[BIGINT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[LARGEINT.ordinal()][LARGEINT.ordinal()] = LARGEINT; - compatibilityMatrix[LARGEINT.ordinal()][FLOAT.ordinal()] = DOUBLE; - compatibilityMatrix[LARGEINT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[LARGEINT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[LARGEINT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[LARGEINT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[LARGEINT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[LARGEINT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[LARGEINT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[LARGEINT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[FLOAT.ordinal()][FLOAT.ordinal()] = FLOAT; - compatibilityMatrix[FLOAT.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[FLOAT.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[FLOAT.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[FLOAT.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[FLOAT.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[FLOAT.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[FLOAT.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[FLOAT.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[DOUBLE.ordinal()][DOUBLE.ordinal()] = DOUBLE; - compatibilityMatrix[DOUBLE.ordinal()][DATE.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][DATETIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][DATEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][DATETIMEV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DOUBLE.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[DOUBLE.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[DOUBLE.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[DOUBLE.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[DOUBLE.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[DOUBLE.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[DATE.ordinal()][DATE.ordinal()] = DATE; - compatibilityMatrix[DATE.ordinal()][DATETIME.ordinal()] = DATETIME; - compatibilityMatrix[DATE.ordinal()][DATEV2.ordinal()] = DATEV2; - compatibilityMatrix[DATE.ordinal()][DATETIMEV2.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATE.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATE.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DATEV2.ordinal()][DATE.ordinal()] = DATEV2; - compatibilityMatrix[DATEV2.ordinal()][DATETIME.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATEV2.ordinal()][DATEV2.ordinal()] = DATEV2; - compatibilityMatrix[DATEV2.ordinal()][DATETIMEV2.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATEV2.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATEV2.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DATETIME.ordinal()][DATETIME.ordinal()] = DATETIME; - compatibilityMatrix[DATETIME.ordinal()][DATETIMEV2.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATETIME.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][JSONB.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][VARIANT.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIME.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DATETIMEV2.ordinal()][DATETIME.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATETIMEV2.ordinal()][DATETIMEV2.ordinal()] = DATETIMEV2; - compatibilityMatrix[DATETIMEV2.ordinal()][CHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][VARCHAR.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][STRING.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DATETIMEV2.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[CHAR.ordinal()][CHAR.ordinal()] = CHAR; - compatibilityMatrix[CHAR.ordinal()][VARCHAR.ordinal()] = VARCHAR; - compatibilityMatrix[CHAR.ordinal()][JSONB.ordinal()] = CHAR; - compatibilityMatrix[CHAR.ordinal()][VARIANT.ordinal()] = CHAR; - compatibilityMatrix[CHAR.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[CHAR.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[CHAR.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[CHAR.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[CHAR.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[CHAR.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[CHAR.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[VARCHAR.ordinal()][VARCHAR.ordinal()] = VARCHAR; - compatibilityMatrix[VARCHAR.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[VARCHAR.ordinal()][JSONB.ordinal()] = VARCHAR; - compatibilityMatrix[VARCHAR.ordinal()][VARIANT.ordinal()] = VARCHAR; - compatibilityMatrix[VARCHAR.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[VARCHAR.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[VARCHAR.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[VARCHAR.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[VARCHAR.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[VARCHAR.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[STRING.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[STRING.ordinal()][DECIMALV2.ordinal()] = INVALID_TYPE; - compatibilityMatrix[STRING.ordinal()][DECIMAL32.ordinal()] = INVALID_TYPE; - compatibilityMatrix[STRING.ordinal()][DECIMAL64.ordinal()] = INVALID_TYPE; - compatibilityMatrix[STRING.ordinal()][DECIMAL128.ordinal()] = INVALID_TYPE; - compatibilityMatrix[STRING.ordinal()][JSONB.ordinal()] = STRING; - compatibilityMatrix[STRING.ordinal()][VARIANT.ordinal()] = STRING; - compatibilityMatrix[STRING.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[STRING.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[JSONB.ordinal()][JSONB.ordinal()] = JSONB; - compatibilityMatrix[JSONB.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[JSONB.ordinal()][VARCHAR.ordinal()] = VARCHAR; - compatibilityMatrix[JSONB.ordinal()][CHAR.ordinal()] = CHAR; - compatibilityMatrix[JSONB.ordinal()][VARIANT.ordinal()] = VARIANT; - - compatibilityMatrix[VARIANT.ordinal()][VARIANT.ordinal()] = VARIANT; - compatibilityMatrix[VARIANT.ordinal()][STRING.ordinal()] = STRING; - compatibilityMatrix[VARIANT.ordinal()][VARCHAR.ordinal()] = VARCHAR; - compatibilityMatrix[VARIANT.ordinal()][CHAR.ordinal()] = CHAR; - compatibilityMatrix[VARIANT.ordinal()][JSONB.ordinal()] = JSONB; - - compatibilityMatrix[DECIMALV2.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[DECIMALV2.ordinal()][DECIMAL32.ordinal()] = DECIMALV2; - compatibilityMatrix[DECIMALV2.ordinal()][DECIMAL64.ordinal()] = DECIMALV2; - compatibilityMatrix[DECIMALV2.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMALV2.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DECIMALV2.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DECIMAL32.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[DECIMAL32.ordinal()][DECIMAL32.ordinal()] = DECIMAL32; - compatibilityMatrix[DECIMAL32.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[DECIMAL32.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL32.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DECIMAL32.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DECIMAL64.ordinal()][DECIMALV2.ordinal()] = DECIMALV2; - compatibilityMatrix[DECIMAL64.ordinal()][DECIMAL32.ordinal()] = DECIMAL64; - compatibilityMatrix[DECIMAL64.ordinal()][DECIMAL64.ordinal()] = DECIMAL64; - compatibilityMatrix[DECIMAL64.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL64.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DECIMAL64.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[DECIMAL128.ordinal()][DECIMALV2.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL128.ordinal()][DECIMAL32.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL128.ordinal()][DECIMAL64.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL128.ordinal()][DECIMAL128.ordinal()] = DECIMAL128; - compatibilityMatrix[DECIMAL128.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[DECIMAL128.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[HLL.ordinal()][HLL.ordinal()] = HLL; - compatibilityMatrix[HLL.ordinal()][TIME.ordinal()] = INVALID_TYPE; - compatibilityMatrix[HLL.ordinal()][TIMEV2.ordinal()] = INVALID_TYPE; - - compatibilityMatrix[BITMAP.ordinal()][BITMAP.ordinal()] = BITMAP; - - compatibilityMatrix[TIME.ordinal()][TIME.ordinal()] = TIME; - compatibilityMatrix[TIME.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[TIMEV2.ordinal()][TIME.ordinal()] = TIMEV2; - compatibilityMatrix[TIMEV2.ordinal()][TIMEV2.ordinal()] = TIMEV2; - - compatibilityMatrix[QUANTILE_STATE.ordinal()][QUANTILE_STATE.ordinal()] = QUANTILE_STATE; - - compatibilityMatrix[AGG_STATE.ordinal()][AGG_STATE.ordinal()] = INVALID_TYPE; - } - - static { - // NULL_TYPE is compatible with any type and results in the non-null type. - compatibilityMatrix[NULL_TYPE.ordinal()][NULL_TYPE.ordinal()] = NULL_TYPE; - compatibilityMatrix[NULL_TYPE.ordinal()][BOOLEAN.ordinal()] = BOOLEAN; - compatibilityMatrix[NULL_TYPE.ordinal()][TINYINT.ordinal()] = TINYINT; - compatibilityMatrix[NULL_TYPE.ordinal()][SMALLINT.ordinal()] = SMALLINT; - compatibilityMatrix[NULL_TYPE.ordinal()][INT.ordinal()] = INT; - } - private final String description; private final int slotSize; // size of tuple slot for this type private final TPrimitiveType thriftType; private final boolean availableInDdl; private boolean isTimeType = false; - private PrimitiveType(String description, int slotSize, TPrimitiveType thriftType, boolean availableInDdl) { + PrimitiveType(String description, int slotSize, TPrimitiveType thriftType, boolean availableInDdl) { this.description = description; this.slotSize = slotSize; this.thriftType = thriftType; @@ -1010,9 +643,6 @@ public enum PrimitiveType { isTimeType = true; } - /** - * @return - */ public boolean isTimeType() { return isTimeType; } @@ -1102,31 +732,6 @@ public enum PrimitiveType { return ARRAY.slotSize; } - /** - * Return type t such that values from both t1 and t2 can be assigned to t - * without loss of precision. Returns INVALID_TYPE if there is no such type - * or if any of t1 and t2 is INVALID_TYPE. - */ - public static PrimitiveType getAssignmentCompatibleType(PrimitiveType t1, PrimitiveType t2) { - if (!t1.isValid() || !t2.isValid()) { - return INVALID_TYPE; - } - - PrimitiveType smallerType = (t1.ordinal() < t2.ordinal() ? t1 : t2); - PrimitiveType largerType = (t1.ordinal() > t2.ordinal() ? t1 : t2); - PrimitiveType result = compatibilityMatrix[smallerType.ordinal()][largerType.ordinal()]; - Preconditions.checkNotNull(result); - return result; - } - - /** - * Returns if it is compatible to implicitly cast from t1 to t2 (casting from - * t1 to t2 results in no loss of precision. - */ - public static boolean isImplicitlyCastable(PrimitiveType t1, PrimitiveType t2) { - return getAssignmentCompatibleType(t1, t2) == t2; - } - @Override public String toString() { return description; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org