Package org.apache.calcite.sql.type
Enum SqlTypeName
- java.lang.Object
-
- java.lang.Enum<SqlTypeName>
-
- org.apache.calcite.sql.type.SqlTypeName
-
- All Implemented Interfaces:
Serializable,Comparable<SqlTypeName>
public enum SqlTypeName extends Enum<SqlTypeName>
Enumeration of the type names which can be used to construct a SQL type. Rationale for this class's existence (instead of just using the standard java.sql.Type ordinals):Typesdoes not include all SQL2003 data-types;- SqlTypeName provides a type-safe enumeration;
- SqlTypeName provides a place to hang extra information such as whether the type carries precision and scale.
This class was copied over from Calcite to support variant type(CALCITE-4918). When upgrading to Calcite 1.39.0 version, please remove the entire class.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSqlTypeName.LimitLimit.
-
Enum Constant Summary
Enum Constants Enum Constant Description ANYARRAYBIGINTBINARYBOOLEANCHARCOLUMN_LISTCURSORDATEDECIMALDISTINCTDOUBLEDYNAMIC_STARFLOATGEOMETRYSpatial type.INTEGERINTERVAL_DAYINTERVAL_DAY_HOURINTERVAL_DAY_MINUTEINTERVAL_DAY_SECONDINTERVAL_HOURINTERVAL_HOUR_MINUTEINTERVAL_HOUR_SECONDINTERVAL_MINUTEINTERVAL_MINUTE_SECONDINTERVAL_MONTHINTERVAL_SECONDINTERVAL_YEARINTERVAL_YEAR_MONTHMAPMEASUREMULTISETNULLOTHERREALROWSARGSMALLINTSTRUCTUREDSYMBOLTIMETIME_WITH_LOCAL_TIME_ZONETIMESTAMPTIMESTAMP_WITH_LOCAL_TIME_ZONETINYINTUNKNOWNVARBINARYVARCHARVARIANTVARIANT data type, a dynamically-typed value that can have at runtime any of the other data types in this table.
-
Field Summary
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanallowsNoPrecNoScale()booleanallowsPrec()booleanallowsPrecNoScale()booleanallowsPrecScale(boolean precision, boolean scale)Returns whether this type can be specified with a given combination of precision and scale.booleanallowsScale()org.apache.calcite.sql.SqlLiteralcreateLiteral(Object o, org.apache.calcite.sql.parser.SqlParserPos pos)static @Nullable SqlTypeNameget(String name)Looks up a type name from its name.intgetDefaultScale()Returns the default scale for this type if supported, otherwise -1 if scale is either unsupported or must be specified explicitly.org.apache.calcite.avatica.util.TimeUnitgetEndUnit()ReturnsSECONDfor bothHOUR TO SECONDandSECOND.@Nullable SqlTypeFamilygetFamily()Gets the SqlTypeFamily containing this SqlTypeName.intgetJdbcOrdinal()Returns the ordinal fromTypescorresponding to this SqlTypeName.@Nullable ObjectgetLimit(boolean sign, SqlTypeName.Limit limit, boolean beyond, int precision, int scale)Returns the limit of this datatype.intgetMinPrecision()Returns the minimum precision (or length) allowed for this type, or -1 if precision/length are not applicable for this type.intgetMinScale()Returns the minimum scale (or fractional second precision in the case of intervals) allowed for this type, or -1 if precision/length are not applicable for this type.StringgetName()Returns the name of this type.static @Nullable SqlTypeNamegetNameForJdbcType(int jdbcType)Gets the SqlTypeName corresponding to a JDBC type.StringgetSpaceName()Returns the name of this type, with underscores converted to spaces, for example "TIMESTAMP WITH LOCAL TIME ZONE", "DATE".org.apache.calcite.avatica.util.TimeUnitgetStartUnit()ReturnsHOURforHOUR TO SECONDandHOUR,SECONDforSECOND.booleanisSpecial()booleanisYearMonth()static SqlTypeNamelookup(String tag)Returns the SqlTypeName value whose name orgetSpaceName()matches the given name, or throwsIllegalArgumentException; never returns null.static SqlTypeNamevalueOf(String name)Returns the enum constant of this type with the specified name.static SqlTypeName[]values()Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
BOOLEAN
public static final SqlTypeName BOOLEAN
-
TINYINT
public static final SqlTypeName TINYINT
-
SMALLINT
public static final SqlTypeName SMALLINT
-
INTEGER
public static final SqlTypeName INTEGER
-
BIGINT
public static final SqlTypeName BIGINT
-
DECIMAL
public static final SqlTypeName DECIMAL
-
FLOAT
public static final SqlTypeName FLOAT
-
REAL
public static final SqlTypeName REAL
-
DOUBLE
public static final SqlTypeName DOUBLE
-
DATE
public static final SqlTypeName DATE
-
TIME
public static final SqlTypeName TIME
-
TIME_WITH_LOCAL_TIME_ZONE
public static final SqlTypeName TIME_WITH_LOCAL_TIME_ZONE
-
TIMESTAMP
public static final SqlTypeName TIMESTAMP
-
TIMESTAMP_WITH_LOCAL_TIME_ZONE
public static final SqlTypeName TIMESTAMP_WITH_LOCAL_TIME_ZONE
-
INTERVAL_YEAR
public static final SqlTypeName INTERVAL_YEAR
-
INTERVAL_YEAR_MONTH
public static final SqlTypeName INTERVAL_YEAR_MONTH
-
INTERVAL_MONTH
public static final SqlTypeName INTERVAL_MONTH
-
INTERVAL_DAY
public static final SqlTypeName INTERVAL_DAY
-
INTERVAL_DAY_HOUR
public static final SqlTypeName INTERVAL_DAY_HOUR
-
INTERVAL_DAY_MINUTE
public static final SqlTypeName INTERVAL_DAY_MINUTE
-
INTERVAL_DAY_SECOND
public static final SqlTypeName INTERVAL_DAY_SECOND
-
INTERVAL_HOUR
public static final SqlTypeName INTERVAL_HOUR
-
INTERVAL_HOUR_MINUTE
public static final SqlTypeName INTERVAL_HOUR_MINUTE
-
INTERVAL_HOUR_SECOND
public static final SqlTypeName INTERVAL_HOUR_SECOND
-
INTERVAL_MINUTE
public static final SqlTypeName INTERVAL_MINUTE
-
INTERVAL_MINUTE_SECOND
public static final SqlTypeName INTERVAL_MINUTE_SECOND
-
INTERVAL_SECOND
public static final SqlTypeName INTERVAL_SECOND
-
CHAR
public static final SqlTypeName CHAR
-
VARCHAR
public static final SqlTypeName VARCHAR
-
BINARY
public static final SqlTypeName BINARY
-
VARBINARY
public static final SqlTypeName VARBINARY
-
NULL
public static final SqlTypeName NULL
-
UNKNOWN
public static final SqlTypeName UNKNOWN
-
ANY
public static final SqlTypeName ANY
-
SYMBOL
public static final SqlTypeName SYMBOL
-
MULTISET
public static final SqlTypeName MULTISET
-
ARRAY
public static final SqlTypeName ARRAY
-
MAP
public static final SqlTypeName MAP
-
DISTINCT
public static final SqlTypeName DISTINCT
-
STRUCTURED
public static final SqlTypeName STRUCTURED
-
ROW
public static final SqlTypeName ROW
-
OTHER
public static final SqlTypeName OTHER
-
CURSOR
public static final SqlTypeName CURSOR
-
COLUMN_LIST
public static final SqlTypeName COLUMN_LIST
-
DYNAMIC_STAR
public static final SqlTypeName DYNAMIC_STAR
-
GEOMETRY
public static final SqlTypeName GEOMETRY
Spatial type. Though not standard, it is common to several DBs, so we do not flag it 'special' (internal).
-
MEASURE
public static final SqlTypeName MEASURE
-
SARG
public static final SqlTypeName SARG
-
VARIANT
public static final SqlTypeName VARIANT
VARIANT data type, a dynamically-typed value that can have at runtime any of the other data types in this table.
-
-
Field Detail
-
MAX_DATETIME_PRECISION
public static final int MAX_DATETIME_PRECISION
- See Also:
- Constant Field Values
-
DEFAULT_INTERVAL_START_PRECISION
public static final int DEFAULT_INTERVAL_START_PRECISION
- See Also:
- Constant Field Values
-
DEFAULT_INTERVAL_FRACTIONAL_SECOND_PRECISION
public static final int DEFAULT_INTERVAL_FRACTIONAL_SECOND_PRECISION
- See Also:
- Constant Field Values
-
MIN_INTERVAL_START_PRECISION
public static final int MIN_INTERVAL_START_PRECISION
- See Also:
- Constant Field Values
-
MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION
public static final int MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION
- See Also:
- Constant Field Values
-
MAX_INTERVAL_START_PRECISION
public static final int MAX_INTERVAL_START_PRECISION
- See Also:
- Constant Field Values
-
MAX_INTERVAL_FRACTIONAL_SECOND_PRECISION
public static final int MAX_INTERVAL_FRACTIONAL_SECOND_PRECISION
- See Also:
- Constant Field Values
-
ALL_TYPES
public static final List<SqlTypeName> ALL_TYPES
-
BOOLEAN_TYPES
public static final List<SqlTypeName> BOOLEAN_TYPES
-
BINARY_TYPES
public static final List<SqlTypeName> BINARY_TYPES
-
INT_TYPES
public static final List<SqlTypeName> INT_TYPES
-
EXACT_TYPES
public static final List<SqlTypeName> EXACT_TYPES
-
APPROX_TYPES
public static final List<SqlTypeName> APPROX_TYPES
-
NUMERIC_TYPES
public static final List<SqlTypeName> NUMERIC_TYPES
-
FRACTIONAL_TYPES
public static final List<SqlTypeName> FRACTIONAL_TYPES
-
CHAR_TYPES
public static final List<SqlTypeName> CHAR_TYPES
-
STRING_TYPES
public static final List<SqlTypeName> STRING_TYPES
-
GEOMETRY_TYPES
public static final List<SqlTypeName> GEOMETRY_TYPES
-
DATETIME_TYPES
public static final List<SqlTypeName> DATETIME_TYPES
-
YEAR_INTERVAL_TYPES
public static final Set<SqlTypeName> YEAR_INTERVAL_TYPES
-
DAY_INTERVAL_TYPES
public static final Set<SqlTypeName> DAY_INTERVAL_TYPES
-
INTERVAL_TYPES
public static final Set<SqlTypeName> INTERVAL_TYPES
-
TIME_FRAME_TYPES
public static final Set<SqlTypeName> TIME_FRAME_TYPES
The possible types of a time frame argument to a function such asTIMESTAMP_DIFF.
-
-
Method Detail
-
values
public static SqlTypeName[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (SqlTypeName c : SqlTypeName.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static SqlTypeName valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum type has no constant with the specified nameNullPointerException- if the argument is null
-
get
public static @Nullable SqlTypeName get(String name)
Looks up a type name from its name.- Returns:
- Type name, or null if not found
-
lookup
public static SqlTypeName lookup(String tag)
Returns the SqlTypeName value whose name orgetSpaceName()matches the given name, or throwsIllegalArgumentException; never returns null.
-
allowsNoPrecNoScale
public boolean allowsNoPrecNoScale()
-
allowsPrecNoScale
public boolean allowsPrecNoScale()
-
allowsPrec
public boolean allowsPrec()
-
allowsScale
public boolean allowsScale()
-
allowsPrecScale
public boolean allowsPrecScale(boolean precision, boolean scale)Returns whether this type can be specified with a given combination of precision and scale. For example,Varchar.allowsPrecScale(true, false)returnstrue, because the VARCHAR type allows a precision parameter, as inVARCHAR(10).Varchar.allowsPrecScale(true, true)returnstrue, because the VARCHAR type does not allow a precision and a scale parameter, as inVARCHAR(10, 4).allowsPrecScale(false, true)returnsfalsefor every type.
- Parameters:
precision- Whether the precision/length field is part of the type specificationscale- Whether the scale field is part of the type specification- Returns:
- Whether this combination of precision/scale is valid
-
isSpecial
public boolean isSpecial()
-
getJdbcOrdinal
public int getJdbcOrdinal()
Returns the ordinal fromTypescorresponding to this SqlTypeName.
-
getDefaultScale
public int getDefaultScale()
Returns the default scale for this type if supported, otherwise -1 if scale is either unsupported or must be specified explicitly.
-
getFamily
public @Nullable SqlTypeFamily getFamily()
Gets the SqlTypeFamily containing this SqlTypeName.- Returns:
- containing family, or null for none (SYMBOL, DISTINCT, STRUCTURED, ROW, OTHER)
-
getNameForJdbcType
public static @Nullable SqlTypeName getNameForJdbcType(int jdbcType)
Gets the SqlTypeName corresponding to a JDBC type.- Parameters:
jdbcType- the JDBC type of interest- Returns:
- corresponding SqlTypeName, or null if the type is not known
-
getLimit
public @Nullable Object getLimit(boolean sign, SqlTypeName.Limit limit, boolean beyond, int precision, int scale)
Returns the limit of this datatype. For example,Datatype limits Datatype sign limit beyond precision scale Returns Integer true true false -1 -1 2147483647 (2 ^ 31 -1 = MAXINT) Integer true true true -1 -1 2147483648 (2 ^ 31 = MAXINT + 1) Integer false true false -1 -1 -2147483648 (-2 ^ 31 = MININT) Boolean true true false -1 -1 TRUE Varchar true true false 10 -1 'ZZZZZZZZZZ' - Parameters:
sign- If true, returns upper limit, otherwise lower limitlimit- If true, returns value at or near to overflow; otherwise value at or near to underflowbeyond- If true, returns the value just beyond the limit, otherwise the value at the limitprecision- Precision, or -1 if not applicablescale- Scale, or -1 if not applicable- Returns:
- Limit value
-
getMinPrecision
public int getMinPrecision()
Returns the minimum precision (or length) allowed for this type, or -1 if precision/length are not applicable for this type.- Returns:
- Minimum allowed precision
-
getMinScale
public int getMinScale()
Returns the minimum scale (or fractional second precision in the case of intervals) allowed for this type, or -1 if precision/length are not applicable for this type.- Returns:
- Minimum allowed scale
-
getStartUnit
public org.apache.calcite.avatica.util.TimeUnit getStartUnit()
ReturnsHOURforHOUR TO SECONDandHOUR,SECONDforSECOND.
-
getEndUnit
public org.apache.calcite.avatica.util.TimeUnit getEndUnit()
ReturnsSECONDfor bothHOUR TO SECONDandSECOND.
-
isYearMonth
public boolean isYearMonth()
-
createLiteral
public org.apache.calcite.sql.SqlLiteral createLiteral(Object o, org.apache.calcite.sql.parser.SqlParserPos pos)
-
getName
public String getName()
Returns the name of this type.
-
getSpaceName
public String getSpaceName()
Returns the name of this type, with underscores converted to spaces, for example "TIMESTAMP WITH LOCAL TIME ZONE", "DATE".
-
-