Class SQLTypeInfo

java.lang.Object
org.datanucleus.store.rdbms.schema.SQLTypeInfo
All Implemented Interfaces:
org.datanucleus.store.schema.StoreSchemaData
Direct Known Subclasses:
CloudSpannerTypeInfo, DB2TypeInfo, DerbyTypeInfo, FirebirdTypeInfo, H2TypeInfo, HSQLTypeInfo, InformixTypeInfo, MySQLTypeInfo, NuoDBTypeInfo, OracleTypeInfo, PostgreSQLTypeInfo, SQLiteTypeInfo, SQLServerTypeInfo, VirtuosoTypeInfo

public class SQLTypeInfo extends Object implements org.datanucleus.store.schema.StoreSchemaData
Representation of SQL type information in the datastore.
  • Field Details

    • fromJdbcDriver

      protected boolean fromJdbcDriver
      Whether this originates from the JDBC Driver
    • typeName

      protected String typeName
      The RDBMS-specific name for this data type.
    • dataType

      protected short dataType
      The JDBC data type number of this data type (see java.sql.Types).
    • precision

      protected int precision
      The maximum precision/length allowed for this data type.
    • literalPrefix

      protected String literalPrefix
      The prefix used to quote a literal of this data type; may be null.
    • literalSuffix

      protected String literalSuffix
      The suffix used to quote a literal of this data type; may be null.
    • createParams

      protected String createParams
      Indicates the parameters used in defining columns of this type.
    • nullable

      protected int nullable
      Indicates whether null values are allowed for this data type.
    • caseSensitive

      protected boolean caseSensitive
      Whether the data type is case-sensitive in comparisons.
    • searchable

      protected short searchable
      The searchability of this data type in terms of the kinds of SQL WHERE clauses that are allowed.
    • unsignedAttribute

      protected boolean unsignedAttribute
      true indicates the type is unsigned, false otherwise.
    • fixedPrecScale

      protected boolean fixedPrecScale
      Whether the type can be assigned a fixed scale value, such as for decimal or currency types.
    • autoIncrement

      protected boolean autoIncrement
      Whether the type automatically increments for each new row inserted.
    • localTypeName

      protected String localTypeName
      Localized version of the DBMS-specific type name of this data type.
    • minimumScale

      protected short minimumScale
      The minimum supported scale value for this data type.
    • maximumScale

      protected short maximumScale
      The maximum supported scale value for this data type.
    • numPrecRadix

      protected int numPrecRadix
      Indicates the numeric radix of this data type, which is usually 2 or 10.
    • allowsPrecisionSpec

      protected boolean allowsPrecisionSpec
      Whether the type allows specification of the precision in parentheses after the type name.
    • hash

      private int hash
      Hashcode. Set on first use.
  • Constructor Details

    • SQLTypeInfo

      public SQLTypeInfo(String typeName, short dataType, int precision, String literalPrefix, String literalSuffix, String createParams, int nullable, boolean caseSensitive, short searchable, boolean unsignedAttribute, boolean fixedPrecScale, boolean autoIncrement, String localTypeName, short minimumScale, short maximumScale, int numPrecRadix)
    • SQLTypeInfo

      public SQLTypeInfo(ResultSet rs)
      Constructor to create a type info definition for the current row of the passed ResultSet.
      Parameters:
      rs - ResultSet (from DatabaseMetaData.getTypeInfo() for example).
      Throws:
      org.datanucleus.exceptions.NucleusDataStoreException - Thrown if an error occurs getting the information
  • Method Details

    • addProperty

      public void addProperty(String name, Object value)
      Method to add a property for the type.
      Specified by:
      addProperty in interface org.datanucleus.store.schema.StoreSchemaData
      Parameters:
      name - Name of property
      value - Its value
    • getProperty

      public Object getProperty(String name)
      Accessor for a property.
      Specified by:
      getProperty in interface org.datanucleus.store.schema.StoreSchemaData
      Parameters:
      name - Name of the property
      Returns:
      Its value, or null if not defined
    • equals

      public final boolean equals(Object obj)
      Indicates whether some object is "equal to" this one. Two SQLTypeInfo are considered equal if their type name and data type properties are equal.
      Overrides:
      equals in class Object
      Parameters:
      obj - the reference object with which to compare
      Returns:
      true if this object is equal to the obj argument; false otherwise.
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object.
      Overrides:
      hashCode in class Object
      Returns:
      a hash code value for this object.
    • toString

      public String toString()
      Returns the string representation of this object.
      Overrides:
      toString in class Object
      Returns:
      string representation of this object.
    • toString

      public String toString(String indent)
      Returns the string representation of this object.
      Parameters:
      indent - The indent for each line of the output
      Returns:
      string representation of this object.
    • isCompatibleWith

      public boolean isCompatibleWith(RDBMSColumnInfo colInfo)
      Convenience method for returning if this type is compatible with the provided column. Compares the data type of each record, and returns true if the types are equivalent. For example one could be VARCHAR, and the other LONGVARCHAR so they both store string data, and hence they are compatible.
      Parameters:
      colInfo - The column
      Returns:
      Whether they are considered compatible
    • isIntegerType

      private static boolean isIntegerType(int type)
      Verify if it's TINYINT, SMALLINT, INTEGER, or BIGINT type.
      Parameters:
      type - The type
      Returns:
      Whether the type is of an integer type
    • isDateType

      private static boolean isDateType(int type)
      Verify if it's DATE, TIME, TIMESTAMP type.
      Parameters:
      type - The type
      Returns:
      Whether the type is of a date type
    • isFloatingType

      private static boolean isFloatingType(int type)
      Verify if it's FLOAT, REAL or DOUBLE.
      Parameters:
      type - The type
      Returns:
      Whether the type is of a floating point type
    • isNumericType

      private static boolean isNumericType(int type)
      Verify if it's NUMERIC or DECIMAL.
      Parameters:
      type - The type
      Returns:
      Whether the type is of a numeric type
    • isCharacterType

      private static boolean isCharacterType(int type)
      Verify if it's LONGVARCHAR or VARCHAR.
      Parameters:
      type - The type
      Returns:
      Whether the type is of a character type
    • setTypeName

      public void setTypeName(String typeName)
    • getTypeName

      public String getTypeName()
    • getDataType

      public short getDataType()
    • getPrecision

      public int getPrecision()
    • getLiteralPrefix

      public String getLiteralPrefix()
    • getLiteralSuffix

      public String getLiteralSuffix()
    • getCreateParams

      public String getCreateParams()
    • getNullable

      public int getNullable()
    • isCaseSensitive

      public boolean isCaseSensitive()
    • getSearchable

      public short getSearchable()
    • isUnsignedAttribute

      public boolean isUnsignedAttribute()
    • isFixedPrecScale

      public boolean isFixedPrecScale()
    • isAutoIncrement

      public boolean isAutoIncrement()
    • setLocalTypeName

      public void setLocalTypeName(String localTypeName)
    • getLocalTypeName

      public String getLocalTypeName()
    • getMinimumScale

      public short getMinimumScale()
    • getMaximumScale

      public short getMaximumScale()
    • getNumPrecRadix

      public int getNumPrecRadix()
    • setAllowsPrecisionSpec

      public void setAllowsPrecisionSpec(boolean allowsPrecisionSpec)
    • isAllowsPrecisionSpec

      public boolean isAllowsPrecisionSpec()