Package org.h2.value

Class TypeInfo

All Implemented Interfaces:
HasSQL, Typed

public class TypeInfo extends ExtTypeInfo implements Typed
Data type with parameters.
  • Field Details

    • TYPE_UNKNOWN

      public static final TypeInfo TYPE_UNKNOWN
      UNKNOWN type with parameters.
    • TYPE_NULL

      public static final TypeInfo TYPE_NULL
      NULL type with parameters.
    • TYPE_CHAR

      public static final TypeInfo TYPE_CHAR
      CHAR type with default parameters.
    • TYPE_VARCHAR

      public static final TypeInfo TYPE_VARCHAR
      CHARACTER VARYING type with maximum parameters.
    • TYPE_VARCHAR_IGNORECASE

      public static final TypeInfo TYPE_VARCHAR_IGNORECASE
      VARCHAR_IGNORECASE type with maximum parameters.
    • TYPE_CLOB

      public static final TypeInfo TYPE_CLOB
      CHARACTER LARGE OBJECT type with maximum parameters.
    • TYPE_BINARY

      public static final TypeInfo TYPE_BINARY
      BINARY type with default parameters.
    • TYPE_VARBINARY

      public static final TypeInfo TYPE_VARBINARY
      BINARY VARYING type with maximum parameters.
    • TYPE_BLOB

      public static final TypeInfo TYPE_BLOB
      BINARY LARGE OBJECT type with maximum parameters.
    • TYPE_BOOLEAN

      public static final TypeInfo TYPE_BOOLEAN
      BOOLEAN type with parameters.
    • TYPE_TINYINT

      public static final TypeInfo TYPE_TINYINT
      TINYINT type with parameters.
    • TYPE_SMALLINT

      public static final TypeInfo TYPE_SMALLINT
      SMALLINT type with parameters.
    • TYPE_INTEGER

      public static final TypeInfo TYPE_INTEGER
      INTEGER type with parameters.
    • TYPE_BIGINT

      public static final TypeInfo TYPE_BIGINT
      BIGINT type with parameters.
    • TYPE_NUMERIC_SCALE_0

      public static final TypeInfo TYPE_NUMERIC_SCALE_0
      NUMERIC type with maximum precision and scale 0.
    • TYPE_NUMERIC_BIGINT

      public static final TypeInfo TYPE_NUMERIC_BIGINT
      NUMERIC type with parameters enough to hold a BIGINT value.
    • TYPE_NUMERIC_FLOATING_POINT

      public static final TypeInfo TYPE_NUMERIC_FLOATING_POINT
      NUMERIC type that can hold values with floating point.
    • TYPE_REAL

      public static final TypeInfo TYPE_REAL
      REAL type with parameters.
    • TYPE_DOUBLE

      public static final TypeInfo TYPE_DOUBLE
      DOUBLE PRECISION type with parameters.
    • TYPE_DECFLOAT

      public static final TypeInfo TYPE_DECFLOAT
      DECFLOAT type with maximum parameters.
    • TYPE_DECFLOAT_BIGINT

      public static final TypeInfo TYPE_DECFLOAT_BIGINT
      DECFLOAT type with parameters enough to hold a BIGINT value.
    • TYPE_DATE

      public static final TypeInfo TYPE_DATE
      DATE type with parameters.
    • TYPE_TIME

      public static final TypeInfo TYPE_TIME
      TIME type with maximum parameters.
    • TYPE_TIME_TZ

      public static final TypeInfo TYPE_TIME_TZ
      TIME WITH TIME ZONE type with maximum parameters.
    • TYPE_TIMESTAMP

      public static final TypeInfo TYPE_TIMESTAMP
      TIMESTAMP type with maximum parameters.
    • TYPE_TIMESTAMP_TZ

      public static final TypeInfo TYPE_TIMESTAMP_TZ
      TIMESTAMP WITH TIME ZONE type with maximum parameters.
    • TYPE_INTERVAL_DAY

      public static final TypeInfo TYPE_INTERVAL_DAY
      INTERVAL DAY type with maximum parameters.
    • TYPE_INTERVAL_YEAR_TO_MONTH

      public static final TypeInfo TYPE_INTERVAL_YEAR_TO_MONTH
      INTERVAL YEAR TO MONTH type with maximum parameters.
    • TYPE_INTERVAL_DAY_TO_SECOND

      public static final TypeInfo TYPE_INTERVAL_DAY_TO_SECOND
      INTERVAL DAY TO SECOND type with maximum parameters.
    • TYPE_INTERVAL_HOUR_TO_SECOND

      public static final TypeInfo TYPE_INTERVAL_HOUR_TO_SECOND
      INTERVAL HOUR TO SECOND type with maximum parameters.
    • TYPE_JAVA_OBJECT

      public static final TypeInfo TYPE_JAVA_OBJECT
      JAVA_OBJECT type with maximum parameters.
    • TYPE_ENUM_UNDEFINED

      public static final TypeInfo TYPE_ENUM_UNDEFINED
      ENUM type with undefined parameters.
    • TYPE_GEOMETRY

      public static final TypeInfo TYPE_GEOMETRY
      GEOMETRY type with default parameters.
    • TYPE_JSON

      public static final TypeInfo TYPE_JSON
      JSON type.
    • TYPE_UUID

      public static final TypeInfo TYPE_UUID
      UUID type with parameters.
    • TYPE_ARRAY_UNKNOWN

      public static final TypeInfo TYPE_ARRAY_UNKNOWN
      ARRAY type with unknown parameters.
    • TYPE_ROW_EMPTY

      public static final TypeInfo TYPE_ROW_EMPTY
      ROW (row value) type without fields.
    • TYPE_INFOS_BY_VALUE_TYPE

      private static final TypeInfo[] TYPE_INFOS_BY_VALUE_TYPE
    • valueType

      private final int valueType
    • precision

      private final long precision
    • scale

      private final int scale
    • extTypeInfo

      private final ExtTypeInfo extTypeInfo
  • Constructor Details

    • TypeInfo

      private TypeInfo(int valueType)
    • TypeInfo

      private TypeInfo(int valueType, long precision)
    • TypeInfo

      private TypeInfo(int valueType, int scale)
    • TypeInfo

      public TypeInfo(int valueType, long precision, int scale, ExtTypeInfo extTypeInfo)
      Creates new instance of data type with parameters.
      Parameters:
      valueType - the value type
      precision - the precision
      scale - the scale
      extTypeInfo - the extended type information, or null
  • Method Details

    • getTypeInfo

      public static TypeInfo getTypeInfo(int type)
      Get the data type with parameters object for the given value type and maximum parameters.
      Parameters:
      type - the value type
      Returns:
      the data type with parameters object
    • getTypeInfo

      public static TypeInfo getTypeInfo(int type, long precision, int scale, ExtTypeInfo extTypeInfo)
      Get the data type with parameters object for the given value type and the specified parameters.
      Parameters:
      type - the value type
      precision - the precision or -1L for default
      scale - the scale or -1 for default
      extTypeInfo - the extended type information or null
      Returns:
      the data type with parameters object
    • getHigherType

      public static TypeInfo getHigherType(Typed[] values)
      Get the higher data type of all values.
      Parameters:
      values - the values
      Returns:
      the higher data type
    • getHigherType

      public static TypeInfo getHigherType(TypeInfo type1, TypeInfo type2)
      Get the higher data type of two data types. If values need to be converted to match the other operands data type, the value with the lower order is converted to the value with the higher order.
      Parameters:
      type1 - the first data type
      type2 - the second data type
      Returns:
      the higher data type of the two
    • dimensions

      private static int dimensions(TypeInfo type)
    • getHigherArray

      private static TypeInfo getHigherArray(TypeInfo type1, TypeInfo type2, int d1, int d2)
    • getHigherRow

      private static TypeInfo getHigherRow(TypeInfo type1, TypeInfo type2)
    • typeToRow

      private static TypeInfo typeToRow(TypeInfo type)
    • areSameTypes

      public static boolean areSameTypes(TypeInfo t1, TypeInfo t2)
      Determines whether two specified types are the same data types without taking precision or scale into account.
      Parameters:
      t1 - first data type
      t2 - second data type
      Returns:
      whether types are the same
    • checkComparable

      public static void checkComparable(TypeInfo t1, TypeInfo t2)
      Checks whether two specified types are comparable and throws an exception otherwise.
      Parameters:
      t1 - first data type
      t2 - second data type
      Throws:
      DbException - if types aren't comparable
    • areComparable

      private static boolean areComparable(TypeInfo t1, TypeInfo t2)
      Determines whether two specified types are comparable.
      Parameters:
      t1 - first data type
      t2 - second data type
      Returns:
      whether types are comparable
    • haveSameOrdering

      public static boolean haveSameOrdering(TypeInfo t1, TypeInfo t2)
      Determines whether two specified types have the same ordering rules.
      Parameters:
      t1 - first data type
      t2 - second data type
      Returns:
      whether types are comparable
    • getType

      public TypeInfo getType()
      Returns this type information.
      Specified by:
      getType in interface Typed
      Returns:
      this
    • getValueType

      public int getValueType()
      Returns the value type.
      Returns:
      the value type
    • getPrecision

      public long getPrecision()
      Returns the precision.
      Returns:
      the precision
    • getDeclaredPrecision

      public long getDeclaredPrecision()
      Returns the precision, or -1L if not specified in data type definition.
      Returns:
      the precision, or -1L if not specified in data type definition
    • getScale

      public int getScale()
      Returns the scale.
      Returns:
      the scale
    • getDeclaredScale

      public int getDeclaredScale()
      Returns the scale, or -1 if not specified in data type definition.
      Returns:
      the scale, or -1 if not specified in data type definition
    • getDisplaySize

      public int getDisplaySize()
      Returns the display size in characters.
      Returns:
      the display size
    • getExtTypeInfo

      public ExtTypeInfo getExtTypeInfo()
      Returns the extended type information, or null.
      Returns:
      the extended type information, or null
    • getSQL

      public StringBuilder getSQL(StringBuilder builder, int sqlFlags)
      Description copied from interface: HasSQL
      Appends the SQL statement of this object to the specified builder.
      Specified by:
      getSQL in interface HasSQL
      Parameters:
      builder - string builder
      sqlFlags - formatting flags
      Returns:
      the specified string builder
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toNumericType

      public TypeInfo toNumericType()
      Convert this type information to compatible NUMERIC type information.
      Returns:
      NUMERIC type information
    • toDecfloatType

      public TypeInfo toDecfloatType()
      Convert this type information to compatible DECFLOAT type information.
      Returns:
      DECFLOAT type information
    • unwrapRow

      public TypeInfo unwrapRow()
      Returns unwrapped data type if this data type is a row type with degree 1 or this type otherwise.
      Returns:
      unwrapped data type if this data type is a row type with degree 1 or this type otherwise
    • getDecimalPrecision

      public long getDecimalPrecision()
      Returns approximate precision in decimal digits for binary numeric data types and precision for all other types.
      Returns:
      precision in decimal digits
    • getDeclaredTypeName

      public String getDeclaredTypeName()
      Returns the declared name of this data type with precision, scale, length, cardinality etc. parameters removed, excluding parameters of ENUM data type, GEOMETRY data type, ARRAY elements, and ROW fields.
      Returns:
      the declared name