This is an automated email from the ASF dual-hosted git repository. twalthr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink.git
commit f93e1c9e0e72704878f73bdfe7c5ab2472735203 Author: Timo Walther <[email protected]> AuthorDate: Thu Jun 27 13:13:46 2019 +0200 [hotfix][table-common] Add implicit precision to predefined types --- .../flink/table/types/logical/BigIntType.java | 2 + .../apache/flink/table/types/logical/IntType.java | 2 + .../flink/table/types/logical/SmallIntType.java | 2 + .../flink/table/types/logical/TinyIntType.java | 2 + .../types/logical/utils/LogicalTypeChecks.java | 56 ++++++++++++++++++++++ 5 files changed, 64 insertions(+) diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/BigIntType.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/BigIntType.java index 6bc8033..60795d9 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/BigIntType.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/BigIntType.java @@ -33,6 +33,8 @@ import java.util.Set; @PublicEvolving public final class BigIntType extends LogicalType { + public static final int PRECISION = 19; + private static final String FORMAT = "BIGINT"; private static final Set<String> NULL_OUTPUT_CONVERSION = conversionSet( diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/IntType.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/IntType.java index dec0567..567d8ef 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/IntType.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/IntType.java @@ -32,6 +32,8 @@ import java.util.Set; @PublicEvolving public final class IntType extends LogicalType { + public static final int PRECISION = 10; + private static final String FORMAT = "INT"; private static final Set<String> NULL_OUTPUT_CONVERSION = conversionSet( diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/SmallIntType.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/SmallIntType.java index c24de82..a575c82 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/SmallIntType.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/SmallIntType.java @@ -32,6 +32,8 @@ import java.util.Set; @PublicEvolving public final class SmallIntType extends LogicalType { + public static final int PRECISION = 5; + private static final String FORMAT = "SMALLINT"; private static final Set<String> NULL_OUTPUT_CONVERSION = conversionSet( diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/TinyIntType.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/TinyIntType.java index d42bcef..eb0ebb8 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/TinyIntType.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/TinyIntType.java @@ -32,6 +32,8 @@ import java.util.Set; @PublicEvolving public final class TinyIntType extends LogicalType { + public static final int PRECISION = 3; + private static final String FORMAT = "TINYINT"; private static final Set<String> NULL_OUTPUT_CONVERSION = conversionSet( diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecks.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecks.java index 24f1578..edf8ff0 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecks.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecks.java @@ -19,17 +19,21 @@ package org.apache.flink.table.types.logical.utils; import org.apache.flink.annotation.Internal; +import org.apache.flink.table.types.logical.BigIntType; import org.apache.flink.table.types.logical.BinaryType; import org.apache.flink.table.types.logical.CharType; import org.apache.flink.table.types.logical.DayTimeIntervalType; import org.apache.flink.table.types.logical.DecimalType; +import org.apache.flink.table.types.logical.IntType; import org.apache.flink.table.types.logical.LocalZonedTimestampType; import org.apache.flink.table.types.logical.LogicalType; import org.apache.flink.table.types.logical.LogicalTypeFamily; import org.apache.flink.table.types.logical.LogicalTypeRoot; +import org.apache.flink.table.types.logical.SmallIntType; import org.apache.flink.table.types.logical.TimeType; import org.apache.flink.table.types.logical.TimestampKind; import org.apache.flink.table.types.logical.TimestampType; +import org.apache.flink.table.types.logical.TinyIntType; import org.apache.flink.table.types.logical.VarBinaryType; import org.apache.flink.table.types.logical.VarCharType; import org.apache.flink.table.types.logical.YearMonthIntervalType; @@ -83,18 +87,30 @@ public final class LogicalTypeChecks { return getLength(logicalType) == length; } + /** + * Returns the precision of all types that define a precision implicitly or explicitly. + */ public static int getPrecision(LogicalType logicalType) { return logicalType.accept(PRECISION_EXTRACTOR); } + /** + * Checks the precision of a type that defines a precision implicitly or explicitly. + */ public static boolean hasPrecision(LogicalType logicalType, int precision) { return getPrecision(logicalType) == precision; } + /** + * Returns the scale of all types that define a scale implicitly or explicitly. + */ public static int getScale(LogicalType logicalType) { return logicalType.accept(SCALE_EXTRACTOR); } + /** + * Checks the scale of all types that define a scale implicitly or explicitly. + */ public static boolean hasScale(LogicalType logicalType, int scale) { return getScale(logicalType) == scale; } @@ -174,6 +190,26 @@ public final class LogicalTypeChecks { } @Override + public Integer visit(TinyIntType tinyIntType) { + return TinyIntType.PRECISION; + } + + @Override + public Integer visit(SmallIntType smallIntType) { + return SmallIntType.PRECISION; + } + + @Override + public Integer visit(IntType intType) { + return IntType.PRECISION; + } + + @Override + public Integer visit(BigIntType bigIntType) { + return BigIntType.PRECISION; + } + + @Override public Integer visit(TimeType timeType) { return timeType.getPrecision(); } @@ -200,6 +236,26 @@ public final class LogicalTypeChecks { public Integer visit(DecimalType decimalType) { return decimalType.getScale(); } + + @Override + public Integer visit(TinyIntType tinyIntType) { + return 0; + } + + @Override + public Integer visit(SmallIntType smallIntType) { + return 0; + } + + @Override + public Integer visit(IntType intType) { + return 0; + } + + @Override + public Integer visit(BigIntType bigIntType) { + return 0; + } } private static class YearPrecisionExtractor extends Extractor<Integer> {
