Package org.h2.value

# Class DataType

java.lang.Object
org.h2.value.DataType

public class DataType extends Object
This class contains meta data information about data types, and can convert between Java objects and Values.

## Field Summary

Fields
Modifier and Type
Field
Description
`boolean`
`caseSensitive`
If this data type is case sensitive.
`long`
`defaultPrecision`
The default precision.
`int`
`defaultScale`
The default scale.
`long`
`maxPrecision`
The maximum supported precision.
`int`
`maxScale`
The highest possible scale.
`long`
`minPrecision`
The minimum supported precision.
`int`
`minScale`
The lowest possible scale.
`String`
`params`
The list of parameters used in the column definition.
`String`
`prefix`
The prefix required for the SQL literal representation.
`boolean`
`specialPrecisionScale`
If precision and scale have non-standard default values.
`int`
`sqlType`
The SQL type.
`String`
`suffix`
The suffix required for the SQL literal representation.
`boolean`
`supportsPrecision`
If the precision parameter is supported.
`boolean`
`supportsScale`
If the scale parameter is supported.
`int`
`type`
The value type of this data type.

## Constructor Summary

Constructors
Constructor
Description
`DataType()`

## Method Summary

Modifier and Type
Method
Description
`static long`
`addPrecision(long p1, long p2)`
Performs saturated addition of precision values.
`static boolean`
`areStableComparable(TypeInfo type1, TypeInfo type2)`
Returns whether values of the specified data types have session-independent compare results.
`static int`
`convertSQLTypeToValueType(int sqlType)`
Convert a SQL type to a value type.
`static int`
`convertSQLTypeToValueType(int sqlType, String sqlTypeName)`
Convert a SQL type to a value type using SQL type name, in order to manage SQL type extension mechanism.
`static int`
`convertSQLTypeToValueType(SQLType sqlType)`
Convert a SQL type to a value type.
`static int`
`convertTypeToSQLType(TypeInfo type)`
Convert a value type to a SQL type.
`static DataType`
`createDate(int maxPrecision, int precision, String prefix, boolean supportsScale, int scale, int maxScale)`
Create a date-time data type.
`static DataType`
`createNumeric(int precision, int scale)`
Create a numeric data type without parameters.
`static DataType`
`getDataType(int type)`
Get the data type object for the given value type.
`static Object`
`getDefaultForPrimitiveType(Class<?> clazz)`
Get the default value in the form of a Java object for the given Java class.
`static DataType`
`getTypeByName(String s, Mode mode)`
Get a data type object from a type name.
`static int`
`getValueTypeFromResultSet(ResultSetMetaData meta, int columnIndex)`
Get the SQL type from the result set meta data for the given column.
`static boolean`
`hasTotalOrdering(int type)`
Check if the given type has total ordering.
`static boolean`
`isBinaryColumn(ResultSetMetaData meta, int column)`
Check whether the specified column needs the binary representation.
`static boolean`
`isBinaryStringOrSpecialBinaryType(int type)`
Check if the given value type is a binary string type or a compatible special data type such as Java object, UUID, geometry object, or JSON.
`static boolean`
`isBinaryStringType(int type)`
Check if the given value type is a binary string type.
`static boolean`
`isCharacterStringType(int type)`
Check if the given value type is a character string type.
`static boolean`
`isDateTimeType(int type)`
Check if the given value type is a date-time type (TIME, DATE, TIMESTAMP, TIMESTAMP_TZ).
`static boolean`
`isIndexable(TypeInfo type)`
Returns whether columns with the specified data type may have an index.
`static boolean`
`isIntervalType(int type)`
Check if the given value type is an interval type.
`static boolean`
`isLargeObject(int type)`
Check if the given value type is a large object (BLOB or CLOB).
`static boolean`
`isNumericType(int type)`
Check if the given value type is a numeric type.
`static boolean`
`isStringType(int type)`
Check if the given value type is a String (VARCHAR,...).
`static boolean`
`isYearMonthIntervalType(int type)`
Check if the given value type is a year-month interval type.
`static String`
`sqlTypeToString(SQLType sqlType)`
Convert a SQL type to a debug string.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### type

public int type
The value type of this data type.

### sqlType

public int sqlType
The SQL type.

### minPrecision

public long minPrecision
The minimum supported precision.

### maxPrecision

public long maxPrecision
The maximum supported precision.

### minScale

public int minScale
The lowest possible scale.

### maxScale

public int maxScale
The highest possible scale.

### prefix

public String prefix
The prefix required for the SQL literal representation.

### suffix

public String suffix
The suffix required for the SQL literal representation.

### params

public String params
The list of parameters used in the column definition.

### caseSensitive

public boolean caseSensitive
If this data type is case sensitive.

### supportsPrecision

public boolean supportsPrecision
If the precision parameter is supported.

### supportsScale

public boolean supportsScale
If the scale parameter is supported.

### defaultPrecision

public long defaultPrecision
The default precision.

### defaultScale

public int defaultScale
The default scale.

### specialPrecisionScale

public boolean specialPrecisionScale
If precision and scale have non-standard default values.

## Constructor Details

### DataType

public DataType()

## Method Details

### createNumeric

public static DataType createNumeric(int precision, int scale)
Create a numeric data type without parameters.

Parameters:
  `precision` - precision
  `scale` - scale
Returns:
  data type

### createDate

public static DataType createDate(int maxPrecision, int precision, String prefix, boolean supportsScale, int scale, int maxScale)
Create a date-time data type.

Parameters:
  `maxPrecision` - maximum supported precision
  `precision` - default precision
  `prefix` - the prefix for SQL literal representation
  `supportsScale` - whether the scale parameter is supported
  `scale` - default scale
  `maxScale` - highest possible scale
Returns:
  data type

### getDataType

public static DataType getDataType(int type)
Get the data type object for the given value type.

Parameters:
  `type` - the value type
Returns:
  the data type object

### convertTypeToSQLType

public static int convertTypeToSQLType(TypeInfo type)
Convert a value type to a SQL type.

Parameters:
  `type` - the type
Returns:
  the SQL type

### convertSQLTypeToValueType

public static int convertSQLTypeToValueType(int sqlType, String sqlTypeName)
Convert a SQL type to a value type using SQL type name, in order to manage SQL type extension mechanism.

Parameters:
  `sqlType` - the SQL type
  `sqlTypeName` - the SQL type name
Returns:
  the value type

### getValueTypeFromResultSet

public static int getValueTypeFromResultSet(ResultSetMetaData meta, int columnIndex) throws SQLException
Get the SQL type from the result set meta data for the given column. This method uses the SQL type and type name.

Parameters:
  `meta` - the meta data
  `columnIndex` - the column index (1, 2,...)
Returns:
  the value type
Throws:
  `SQLException` - on failure

### isBinaryColumn

public static boolean isBinaryColumn(ResultSetMetaData meta, int column) throws SQLException
Check whether the specified column needs the binary representation.

Parameters:
  `meta` - metadata
  `column` - column index
Returns:
  `true` if column needs the binary representation, `false` otherwise
Throws:
  `SQLException` - on SQL exception

### convertSQLTypeToValueType

public static int convertSQLTypeToValueType(SQLType sqlType)
Convert a SQL type to a value type.

Parameters:
  `sqlType` - the SQL type
Returns:
  the value type

### convertSQLTypeToValueType

public static int convertSQLTypeToValueType(int sqlType)
Convert a SQL type to a value type.

Parameters:
  `sqlType` - the SQL type
Returns:
  the value type

### sqlTypeToString

public static String sqlTypeToString(SQLType sqlType)
Convert a SQL type to a debug string.

Parameters:
  `sqlType` - the SQL type
Returns:
  the textual representation

### getTypeByName

public static DataType getTypeByName(String s, Mode mode)
Get a data type object from a type name.

Parameters:
  `s` - the type name
  `mode` - database mode
Returns:
  the data type object

### isIndexable

public static boolean isIndexable(TypeInfo type)
Returns whether columns with the specified data type may have an index.

Parameters:
  `type` - the data type
Returns:
  whether an index is allowed

### areStableComparable

public static boolean areStableComparable(TypeInfo type1, TypeInfo type2)
Returns whether values of the specified data types have session-independent compare results.

Parameters:
  `type1` - the first data type
  `type2` - the second data type
Returns:
  are values have session-independent compare results

### isDateTimeType

public static boolean isDateTimeType(int type)
Check if the given value type is a date-time type (TIME, DATE, TIMESTAMP, TIMESTAMP_TZ).

Parameters:
  `type` - the value type
Returns:
  true if the value type is a date-time type

### isIntervalType

public static boolean isIntervalType(int type)
Check if the given value type is an interval type.

Parameters:
  `type` - the value type
Returns:
  true if the value type is an interval type

### isYearMonthIntervalType

public static boolean isYearMonthIntervalType(int type)
Check if the given value type is a year-month interval type.

Parameters:
  `type` - the value type
Returns:
  true if the value type is a year-month interval type

### isLargeObject

public static boolean isLargeObject(int type)
Check if the given value type is a large object (BLOB or CLOB).

Parameters:
  `type` - the value type
Returns:
  true if the value type is a lob type

### isNumericType

public static boolean isNumericType(int type)
Check if the given value type is a numeric type.

Parameters:
  `type` - the value type
Returns:
  true if the value type is a numeric type

### isBinaryStringType

public static boolean isBinaryStringType(int type)
Check if the given value type is a binary string type.

Parameters:
  `type` - the value type
Returns:
  true if the value type is a binary string type

### isCharacterStringType

public static boolean isCharacterStringType(int type)
Check if the given value type is a character string type.

Parameters:
  `type` - the value type
Returns:
  true if the value type is a character string type

### isStringType

public static boolean isStringType(int type)
Check if the given value type is a String (VARCHAR,...).

Parameters:
  `type` - the value type
Returns:
  true if the value type is a String type

### isBinaryStringOrSpecialBinaryType

public static boolean isBinaryStringOrSpecialBinaryType(int type)
Check if the given value type is a binary string type or a compatible special data type such as Java object, UUID, geometry object, or JSON.

Parameters:
  `type` - the value type
Returns:
  true if the value type is a binary string type or a compatible special data type

### hasTotalOrdering

public static boolean hasTotalOrdering(int type)
Check if the given type has total ordering.

Parameters:
  `type` - the value type
Returns:
  true if the value type has total ordering

### addPrecision

public static long addPrecision(long p1, long p2)
Performs saturated addition of precision values.

Parameters:
  `p1` - the first summand
  `p2` - the second summand
Returns:
  the sum of summands, or `Long.MAX_VALUE` if either argument is negative or sum is out of range

### getDefaultForPrimitiveType

public static Object getDefaultForPrimitiveType(Class<?> clazz)
Get the default value in the form of a Java object for the given Java class.

Parameters:
  `clazz` - the Java class
Returns:
  the default object