Package org.h2.value
Class DataType
java.lang.Object
org.h2.value.DataType
This class contains meta data information about data types,
and can convert between Java objects and Values.
-
Field Summary
FieldsModifier and TypeFieldDescriptionboolean
If this data type is case sensitive.long
The default precision.int
The default scale.long
The maximum supported precision.int
The highest possible scale.long
The minimum supported precision.int
The lowest possible scale.The list of parameters used in the column definition.The prefix required for the SQL literal representation.boolean
If precision and scale have non-standard default values.int
The SQL type.The suffix required for the SQL literal representation.boolean
If the precision parameter is supported.boolean
If the scale parameter is supported.int
The value type of this data type.The map of types.(package private) static final DataType[]
Mapping from Value type numbers to DataType. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
private static void
addInterval
(int type) 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.private static DataType
createBinary
(boolean fixedLength) static DataType
createDate
(int maxPrecision, int precision, String prefix, boolean supportsScale, int scale, int maxScale) Create a date-time data type.private static DataType
private static DataType
createLob
(boolean clob) static DataType
createNumeric
(int precision, int scale) Create a numeric data type without parameters.private static DataType
createString
(boolean caseSensitive, boolean fixedLength) private static DataType
createString
(boolean caseSensitive, boolean fixedLength, String prefix, String suffix) 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.private static StringBuilder
unknownSqlTypeToString
(StringBuilder builder, SQLType sqlType)
-
Field Details
-
TYPES_BY_NAME
The map of types. -
TYPES_BY_VALUE_TYPE
Mapping from Value type numbers to DataType. -
type
public int typeThe value type of this data type. -
sqlType
public int sqlTypeThe SQL type. -
minPrecision
public long minPrecisionThe minimum supported precision. -
maxPrecision
public long maxPrecisionThe maximum supported precision. -
minScale
public int minScaleThe lowest possible scale. -
maxScale
public int maxScaleThe highest possible scale. -
prefix
The prefix required for the SQL literal representation. -
suffix
The suffix required for the SQL literal representation. -
params
The list of parameters used in the column definition. -
caseSensitive
public boolean caseSensitiveIf this data type is case sensitive. -
supportsPrecision
public boolean supportsPrecisionIf the precision parameter is supported. -
supportsScale
public boolean supportsScaleIf the scale parameter is supported. -
defaultPrecision
public long defaultPrecisionThe default precision. -
defaultScale
public int defaultScaleThe default scale. -
specialPrecisionScale
public boolean specialPrecisionScaleIf precision and scale have non-standard default values.
-
-
Constructor Details
-
DataType
public DataType()
-
-
Method Details
-
addInterval
private static void addInterval(int type) -
add
-
createNumeric
Create a numeric data type without parameters.- Parameters:
precision
- precisionscale
- 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 precisionprecision
- default precisionprefix
- the prefix for SQL literal representationsupportsScale
- whether the scale parameter is supportedscale
- default scalemaxScale
- highest possible scale- Returns:
- data type
-
createString
-
createBinary
-
createString
-
createLob
-
createGeometry
-
getDataType
Get the data type object for the given value type.- Parameters:
type
- the value type- Returns:
- the data type object
-
convertTypeToSQLType
Convert a value type to a SQL type.- Parameters:
type
- the type- Returns:
- the SQL type
-
convertSQLTypeToValueType
Convert a SQL type to a value type using SQL type name, in order to manage SQL type extension mechanism.- Parameters:
sqlType
- the SQL typesqlTypeName
- 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 datacolumnIndex
- the column index (1, 2,...)- Returns:
- the value type
- Throws:
SQLException
- on failure
-
isBinaryColumn
Check whether the specified column needs the binary representation.- Parameters:
meta
- metadatacolumn
- column index- Returns:
true
if column needs the binary representation,false
otherwise- Throws:
SQLException
- on SQL exception
-
convertSQLTypeToValueType
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
Convert a SQL type to a debug string.- Parameters:
sqlType
- the SQL type- Returns:
- the textual representation
-
unknownSqlTypeToString
-
getTypeByName
Get a data type object from a type name.- Parameters:
s
- the type namemode
- database mode- Returns:
- the data type object
-
isIndexable
Returns whether columns with the specified data type may have an index.- Parameters:
type
- the data type- Returns:
- whether an index is allowed
-
areStableComparable
Returns whether values of the specified data types have session-independent compare results.- Parameters:
type1
- the first data typetype2
- 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 summandp2
- the second summand- Returns:
- the sum of summands, or
Long.MAX_VALUE
if either argument is negative or sum is out of range
-
getDefaultForPrimitiveType
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
-