Package org.h2.value

Class DataType


  • public class DataType
    extends java.lang.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.
      java.lang.String params
      The list of parameters used in the column definition.
      java.lang.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.
      java.lang.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

      All Methods Static Methods Concrete Methods 
      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, java.lang.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​(java.sql.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, java.lang.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 java.lang.Object getDefaultForPrimitiveType​(java.lang.Class<?> clazz)
      Get the default value in the form of a Java object for the given Java class.
      static DataType getTypeByName​(java.lang.String s, Mode mode)
      Get a data type object from a type name.
      static int getValueTypeFromResultSet​(java.sql.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​(java.sql.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 java.lang.String sqlTypeToString​(java.sql.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 Detail

      • 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 java.lang.String prefix
        The prefix required for the SQL literal representation.
      • suffix

        public java.lang.String suffix
        The suffix required for the SQL literal representation.
      • params

        public java.lang.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 Detail

      • DataType

        public DataType()
    • Method Detail

      • 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,
                                          java.lang.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,
                                                    java.lang.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​(java.sql.ResultSetMetaData meta,
                                                    int columnIndex)
                                             throws java.sql.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:
        java.sql.SQLException - on failure
      • isBinaryColumn

        public static boolean isBinaryColumn​(java.sql.ResultSetMetaData meta,
                                             int column)
                                      throws java.sql.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:
        java.sql.SQLException - on SQL exception
      • convertSQLTypeToValueType

        public static int convertSQLTypeToValueType​(java.sql.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 java.lang.String sqlTypeToString​(java.sql.SQLType sqlType)
        Convert a SQL type to a debug string.
        Parameters:
        sqlType - the SQL type
        Returns:
        the textual representation
      • getTypeByName

        public static DataType getTypeByName​(java.lang.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 java.lang.Object getDefaultForPrimitiveType​(java.lang.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