diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java index 2468a983292a..f8ccdb92e20a 100644 --- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java +++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java @@ -686,6 +686,82 @@ public static long getMaxValue(RelDataType type) { } } + /** Returns whether a type has a representation as a Java primitive (ignoring + * nullability). */ + @Deprecated // to be removed before 2.0 + public static boolean isJavaPrimitive(RelDataType type) { + SqlTypeName typeName = type.getSqlTypeName(); + if (typeName == null) { + return false; + } + + switch (typeName) { + case BOOLEAN: + case TINYINT: + case SMALLINT: + case INTEGER: + case BIGINT: + case FLOAT: + case REAL: + case DOUBLE: + case SYMBOL: + return true; + default: + return false; + } + } + + /** Returns the class name of the wrapper for the primitive data type. */ + @Deprecated // to be removed before 2.0 + public static @Nullable String getPrimitiveWrapperJavaClassName(@Nullable RelDataType type) { + if (type == null) { + return null; + } + SqlTypeName typeName = type.getSqlTypeName(); + if (typeName == null) { + return null; + } + + switch (typeName) { + case BOOLEAN: + return "Boolean"; + default: + //noinspection deprecation + return getNumericJavaClassName(type); + } + } + + /** Returns the class name of a numeric data type. */ + @Deprecated // to be removed before 2.0 + public static @Nullable String getNumericJavaClassName(@Nullable RelDataType type) { + if (type == null) { + return null; + } + SqlTypeName typeName = type.getSqlTypeName(); + if (typeName == null) { + return null; + } + + switch (typeName) { + case TINYINT: + return "Byte"; + case SMALLINT: + return "Short"; + case INTEGER: + return "Integer"; + case BIGINT: + return "Long"; + case REAL: + return "Float"; + case DECIMAL: + case FLOAT: + case DOUBLE: + return "Double"; + default: + return null; + } + } + private static boolean isAny(RelDataType t) { return t.getFamily() == SqlTypeFamily.ANY; }