Enum SqlTypeName

java.lang.Object
java.lang.Enum<SqlTypeName>
org.apache.calcite.sql.type.SqlTypeName
All Implemented Interfaces:
Serializable, Comparable<SqlTypeName>, Constable

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):
  • Types does 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.
  • Enum Constant Details

    • 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
  • Field Details

    • MAX_DATETIME_PRECISION

      public static final int MAX_DATETIME_PRECISION
      See Also:
    • DEFAULT_INTERVAL_START_PRECISION

      public static final int DEFAULT_INTERVAL_START_PRECISION
      See Also:
    • DEFAULT_INTERVAL_FRACTIONAL_SECOND_PRECISION

      public static final int DEFAULT_INTERVAL_FRACTIONAL_SECOND_PRECISION
      See Also:
    • MIN_INTERVAL_START_PRECISION

      public static final int MIN_INTERVAL_START_PRECISION
      See Also:
    • MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION

      public static final int MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION
      See Also:
    • MAX_INTERVAL_START_PRECISION

      public static final int MAX_INTERVAL_START_PRECISION
      See Also:
    • MAX_INTERVAL_FRACTIONAL_SECOND_PRECISION

      public static final int MAX_INTERVAL_FRACTIONAL_SECOND_PRECISION
      See Also:
    • 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 as TIMESTAMP_DIFF.
  • Method Details

    • values

      public static SqlTypeName[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      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 name
      NullPointerException - 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 or getSpaceName() matches the given name, or throws IllegalArgumentException; 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) returns true, because the VARCHAR type allows a precision parameter, as in VARCHAR(10).
      • Varchar.allowsPrecScale(true, true) returns true, because the VARCHAR type does not allow a precision and a scale parameter, as in VARCHAR(10, 4).
      • allowsPrecScale(false, true) returns false for every type.
      Parameters:
      precision - Whether the precision/length field is part of the type specification
      scale - 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 from Types corresponding 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 limit
      limit - If true, returns value at or near to overflow; otherwise value at or near to underflow
      beyond - If true, returns the value just beyond the limit, otherwise the value at the limit
      precision - Precision, or -1 if not applicable
      scale - 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()
      Returns HOUR for HOUR TO SECOND and HOUR, SECOND for SECOND.
    • getEndUnit

      public org.apache.calcite.avatica.util.TimeUnit getEndUnit()
      Returns SECOND for both HOUR TO SECOND and SECOND.
    • isYearMonth

      public boolean isYearMonth()
    • createLiteral

      public SqlLiteral createLiteral(Object o, 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".