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 Details

    • TYPES_BY_NAME

      private static final HashMap<String,DataType> TYPES_BY_NAME
      The map of types.
    • TYPES_BY_VALUE_TYPE

      static final DataType[] TYPES_BY_VALUE_TYPE
      Mapping from Value type numbers to DataType.
    • 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

    • addInterval

      private static void addInterval(int type)
    • add

      private static void add(int type, int sqlType, DataType dataType, String... names)
    • 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
    • createString

      private static DataType createString(boolean caseSensitive, boolean fixedLength)
    • createBinary

      private static DataType createBinary(boolean fixedLength)
    • createString

      private static DataType createString(boolean caseSensitive, boolean fixedLength, String prefix, String suffix)
    • createLob

      private static DataType createLob(boolean clob)
    • createGeometry

      private static DataType createGeometry()
    • 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
    • unknownSqlTypeToString

      private static StringBuilder unknownSqlTypeToString(StringBuilder builder, SQLType sqlType)
    • 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