Package org.h2.value

# Class TypeInfo

java.lang.Object
org.h2.value.ExtTypeInfo
org.h2.value.TypeInfo

All Implemented Interfaces:
  `HasSQL`, `Typed`

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

## Field Summary

Fields
Modifier and Type
Field
Description
`static final TypeInfo`
`TYPE_ARRAY_UNKNOWN`
ARRAY type with unknown parameters.
`static final TypeInfo`
`TYPE_BIGINT`
BIGINT type with parameters.
`static final TypeInfo`
`TYPE_BINARY`
BINARY type with default parameters.
`static final TypeInfo`
`TYPE_BLOB`
BINARY LARGE OBJECT type with maximum parameters.
`static final TypeInfo`
`TYPE_BOOLEAN`
BOOLEAN type with parameters.
`static final TypeInfo`
`TYPE_CHAR`
CHAR type with default parameters.
`static final TypeInfo`
`TYPE_CLOB`
CHARACTER LARGE OBJECT type with maximum parameters.
`static final TypeInfo`
`TYPE_DATE`
DATE type with parameters.
`static final TypeInfo`
`TYPE_DECFLOAT`
DECFLOAT type with maximum parameters.
`static final TypeInfo`
`TYPE_DECFLOAT_BIGINT`
DECFLOAT type with parameters enough to hold a BIGINT value.
`static final TypeInfo`
`TYPE_DOUBLE`
DOUBLE PRECISION type with parameters.
`static final TypeInfo`
`TYPE_ENUM_UNDEFINED`
ENUM type with undefined parameters.
`static final TypeInfo`
`TYPE_GEOMETRY`
GEOMETRY type with default parameters.
`static final TypeInfo`
`TYPE_INTEGER`
INTEGER type with parameters.
`static final TypeInfo`
`TYPE_INTERVAL_DAY`
INTERVAL DAY type with maximum parameters.
`static final TypeInfo`
`TYPE_INTERVAL_DAY_TO_SECOND`
INTERVAL DAY TO SECOND type with maximum parameters.
`static final TypeInfo`
`TYPE_INTERVAL_HOUR_TO_SECOND`
INTERVAL HOUR TO SECOND type with maximum parameters.
`static final TypeInfo`
`TYPE_INTERVAL_YEAR_TO_MONTH`
INTERVAL YEAR TO MONTH type with maximum parameters.
`static final TypeInfo`
`TYPE_JAVA_OBJECT`
JAVA_OBJECT type with maximum parameters.
`static final TypeInfo`
`TYPE_JSON`
JSON type.
`static final TypeInfo`
`TYPE_NULL`
NULL type with parameters.
`static final TypeInfo`
`TYPE_NUMERIC_BIGINT`
NUMERIC type with parameters enough to hold a BIGINT value.
`static final TypeInfo`
`TYPE_NUMERIC_FLOATING_POINT`
NUMERIC type that can hold values with floating point.
`static final TypeInfo`
`TYPE_NUMERIC_SCALE_0`
NUMERIC type with maximum precision and scale 0.
`static final TypeInfo`
`TYPE_REAL`
REAL type with parameters.
`static final TypeInfo`
`TYPE_ROW_EMPTY`
ROW (row value) type without fields.
`static final TypeInfo`
`TYPE_SMALLINT`
SMALLINT type with parameters.
`static final TypeInfo`
`TYPE_TIME`
TIME type with maximum parameters.
`static final TypeInfo`
`TYPE_TIME_TZ`
TIME WITH TIME ZONE type with maximum parameters.
`static final TypeInfo`
`TYPE_TIMESTAMP`
TIMESTAMP type with maximum parameters.
`static final TypeInfo`
`TYPE_TIMESTAMP_TZ`
TIMESTAMP WITH TIME ZONE type with maximum parameters.
`static final TypeInfo`
`TYPE_TINYINT`
TINYINT type with parameters.
`static final TypeInfo`
`TYPE_UNKNOWN`
UNKNOWN type with parameters.
`static final TypeInfo`
`TYPE_UUID`
UUID type with parameters.
`static final TypeInfo`
`TYPE_VARBINARY`
BINARY VARYING type with maximum parameters.
`static final TypeInfo`
`TYPE_VARCHAR`
CHARACTER VARYING type with maximum parameters.
`static final TypeInfo`
`TYPE_VARCHAR_IGNORECASE`
VARCHAR_IGNORECASE type with maximum parameters.

### Fields inherited from interface org.h2.util.HasSQL

`ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS`

## Constructor Summary

Constructors
Constructor
Description
`TypeInfo(int valueType, long precision, int scale, ExtTypeInfo extTypeInfo)`
Creates new instance of data type with parameters.

## Method Summary

Modifier and Type
Method
Description
`static boolean`
`areSameTypes(TypeInfo t1, TypeInfo t2)`
Determines whether two specified types are the same data types without taking precision or scale into account.
`static void`
`checkComparable(TypeInfo t1, TypeInfo t2)`
Checks whether two specified types are comparable and throws an exception otherwise.
`boolean`
`equals(Object obj)`
`long`
`getDecimalPrecision()`
Returns approximate precision in decimal digits for binary numeric data types and precision for all other types.
`long`
`getDeclaredPrecision()`
Returns the precision, or `-1L` if not specified in data type definition.
`int`
`getDeclaredScale()`
Returns the scale, or `-1` if not specified in data type definition.
`String`
`getDeclaredTypeName()`
Returns the declared name of this data type with precision, scale, length, cardinality etc.
`int`
`getDisplaySize()`
Returns the display size in characters.
`ExtTypeInfo`
`getExtTypeInfo()`
Returns the extended type information, or null.
`static TypeInfo`
`getHigherType(Typed[] values)`
Get the higher data type of all values.
`static TypeInfo`
`getHigherType(TypeInfo type1, TypeInfo type2)`
Get the higher data type of two data types.
`long`
`getPrecision()`
Returns the precision.
`int`
`getScale()`
Returns the scale.
`StringBuilder`
`getSQL(StringBuilder builder, int sqlFlags)`
Appends the SQL statement of this object to the specified builder.
`TypeInfo`
`getType()`
Returns this type information.
`static TypeInfo`
`getTypeInfo(int type)`
Get the data type with parameters object for the given value type and maximum parameters.
`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.
`int`
`getValueType()`
Returns the value type.
`int`
`hashCode()`
`static boolean`
`haveSameOrdering(TypeInfo t1, TypeInfo t2)`
Determines whether two specified types have the same ordering rules.
`TypeInfo`
`toDecfloatType()`
Convert this type information to compatible DECFLOAT type information.
`TypeInfo`
`toNumericType()`
Convert this type information to compatible NUMERIC type information.
`TypeInfo`
`unwrapRow()`
Returns unwrapped data type if this data type is a row type with degree 1 or this type otherwise.

### Methods inherited from class org.h2.value.ExtTypeInfo

`toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.h2.util.HasSQL

`getSQL, getTraceSQL`

## 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.

## Constructor Details

### 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

### 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

### 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