Package org.apache.derby.iapi.types
Class TypeId
- java.lang.Object
-
- org.apache.derby.iapi.types.TypeId
-
public final class TypeId extends java.lang.Object
TypeId describes the static information about a SQL type independent of any specific attributes of the type such as length. So the TypeId for CHARACTER describes the fundamental information about CHARACTER. A specific type (e.g. CHARACTER(10)) is described by a TypeDescriptor for a catlog type and a DataTypeDescriptor for a runtime type. (note a DataTypeDescriptor adds runtime attributes to the TypeDescriptor it has).A TypeId is immutable.
The equals(Object) method can be used to determine if two typeIds are for the same type, which defines type id equality.
- See Also:
DataTypeDescriptor
-
-
Field Summary
Fields Modifier and Type Field Description private static TypeId[]
ALL_BUILTIN_TYPE_IDS
static java.lang.String
ARRAY_NAME
private BaseTypeIdImpl
baseTypeId
static TypeId
BIGINT_ID
static java.lang.String
BIGINT_NAME
static java.lang.String
BINARY_NAME
private static TypeId
BIT_ID
static int
BIT_MAXWIDTH
static java.lang.String
BIT_NAME
static int
BIT_PRECEDENCE
private static TypeId
BLOB_ID
static int
BLOB_MAXWIDTH
static java.lang.String
BLOB_NAME
static int
BLOB_PRECEDENCE
static TypeId
BOOLEAN_ID
static int
BOOLEAN_MAXWIDTH
static java.lang.String
BOOLEAN_NAME
static int
BOOLEAN_PRECEDENCE
static TypeId
CHAR_ID
static int
CHAR_MAXWIDTH
static java.lang.String
CHAR_NAME
static int
CHAR_PRECEDENCE
private static TypeId
CLOB_ID
static int
CLOB_MAXWIDTH
static java.lang.String
CLOB_NAME
static int
CLOB_PRECEDENCE
static java.lang.String
DATALINK_NAME
private static TypeId
DATE_ID
static int
DATE_MAXWIDTH
static java.lang.String
DATE_NAME
static int
DATE_PRECEDENCE
private static TypeId
DECIMAL_ID
static int
DECIMAL_MAXWIDTH
static java.lang.String
DECIMAL_NAME
static int
DECIMAL_PRECEDENCE
static int
DECIMAL_PRECISION
static int
DECIMAL_SCALE
static TypeId
DOUBLE_ID
static int
DOUBLE_MAXWIDTH
static java.lang.String
DOUBLE_NAME
static int
DOUBLE_PRECEDENCE
static int
DOUBLE_PRECISION
static int
DOUBLE_PRECISION_IN_DIGITS
static int
DOUBLE_SCALE
static java.lang.String
FLOAT_NAME
private int
formatId
static int
INT_MAXWIDTH
static int
INT_PRECEDENCE
static int
INT_PRECISION
static int
INT_SCALE
static TypeId
INTEGER_ID
static java.lang.String
INTEGER_NAME
private boolean
isBitTypeId
private boolean
isBooleanTypeId
private boolean
isConcatableTypeId
private boolean
isDateTimeTimeStampTypeId
private boolean
isDecimalTypeId
private boolean
isFloatingPointTypeId
private boolean
isLOBTypeId
private boolean
isLongConcatableTypeId
private boolean
isNumericTypeId
private boolean
isRealTypeId
private boolean
isRefTypeId
private boolean
isStringTypeId
private boolean
isUserDefinedTypeId
private java.lang.String
javaTypeName
static int
LONGINT_MAXWIDTH
static int
LONGINT_PRECEDENCE
static int
LONGINT_PRECISION
Various fixed numbers related to datatypes.static int
LONGINT_SCALE
static java.lang.String
LONGVARBINARY_NAME
private static TypeId
LONGVARBIT_ID
static int
LONGVARBIT_MAXWIDTH
static java.lang.String
LONGVARBIT_NAME
static int
LONGVARBIT_PRECEDENCE
private static TypeId
LONGVARCHAR_ID
static int
LONGVARCHAR_MAXWIDTH
static java.lang.String
LONGVARCHAR_NAME
static int
LONGVARCHAR_PRECEDENCE
private int
maxMaxWidth
private int
maxPrecision
private int
maxScale
static java.lang.String
NATIONAL_CHAR_NAME
static java.lang.String
NATIONAL_LONGVARCHAR_NAME
static java.lang.String
NATIONAL_VARCHAR_NAME
static java.lang.String
NCLOB_NAME
private static TypeId
NUMERIC_ID
static java.lang.String
NUMERIC_NAME
static int
NUMERIC_PRECEDENCE
private static TypeId
REAL_ID
static int
REAL_MAXWIDTH
static java.lang.String
REAL_NAME
static int
REAL_PRECEDENCE
static int
REAL_PRECISION
static int
REAL_PRECISION_IN_DIGITS
static int
REAL_SCALE
static java.lang.String
REF_CURSOR
private static TypeId
REF_ID
static java.lang.String
REF_NAME
static int
REF_PRECEDENCE
static java.lang.String
ROWID_NAME
static TypeId
SMALLINT_ID
static int
SMALLINT_MAXWIDTH
static java.lang.String
SMALLINT_NAME
static int
SMALLINT_PRECEDENCE
static int
SMALLINT_PRECISION
static int
SMALLINT_SCALE
static java.lang.String
SQLXML_NAME
static java.lang.String
STRUCT_NAME
private static TypeId
TIME_ID
static int
TIME_MAXWIDTH
static java.lang.String
TIME_NAME
static int
TIME_PRECEDENCE
static int
TIME_SCALE
private static TypeId
TIMESTAMP_ID
static int
TIMESTAMP_MAXWIDTH
static java.lang.String
TIMESTAMP_NAME
static int
TIMESTAMP_PRECEDENCE
static int
TIMESTAMP_SCALE
private static TypeId
TINYINT_ID
static int
TINYINT_MAXWIDTH
static java.lang.String
TINYINT_NAME
static int
TINYINT_PRECEDENCE
static int
TINYINT_PRECISION
static int
TINYINT_SCALE
private int
typePrecedence
static int
USER_PRECEDENCE
The following constants define the type precedence hierarchy.static java.lang.String
VARBINARY_NAME
private static TypeId
VARBIT_ID
static int
VARBIT_MAXWIDTH
static java.lang.String
VARBIT_NAME
static int
VARBIT_PRECEDENCE
private static TypeId
VARCHAR_ID
static int
VARCHAR_MAXWIDTH
static java.lang.String
VARCHAR_NAME
static int
VARCHAR_PRECEDENCE
private static TypeId
XML_ID
static int
XML_MAXWIDTH
static java.lang.String
XML_NAME
static int
XML_PRECEDENCE
-
Constructor Summary
Constructors Constructor Description TypeId(int formatId, BaseTypeIdImpl baseTypeId)
Constructor for a TypeId
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static TypeId
create(int typeFormatId, int implTypeFormatId)
Create a TypeId for the given format identifiers using a BaseTypeIdImpl.boolean
equals(java.lang.Object that)
we want equals to say if these are the same type id or not.static TypeId[]
getAllBuiltinTypeIds()
Return all of the builtin type ids.int
getApproximateLengthInBytes(DataTypeDescriptor dts)
Get the approximate length of this type in bytes.BaseTypeIdImpl
getBaseTypeId()
Get the base type id that is embedded in this type id.static TypeId
getBuiltInTypeId(int JDBCTypeId)
Get a TypeId of the given JDBC type.static TypeId
getBuiltInTypeId(java.lang.String SQLTypeName)
Given a SQL type name return the corresponding TypeId.java.lang.String
getCorrespondingJavaTypeName()
Get the name of the corresponding Java type.int
getJDBCTypeId()
JDBC has its own idea of type identifiers which is different from the Derby internal type ids.int
getMaximumMaximumWidth()
Get the maximum maximum width of the type (that's not a typo).int
getMaximumPrecision()
Get the maximum precision of the type.int
getMaximumScale()
Get the maximum scale of the type.DataValueDescriptor
getNull()
Get SQL null value.int
getPrecision(DataTypeDescriptor leftType, DataTypeDescriptor rightType)
Get the precision of the merge of two Decimalsjava.lang.String
getResultSetMetaDataTypeName()
Get the name of the corresponding Java type.int
getScale(DataTypeDescriptor leftType, DataTypeDescriptor rightType)
Get the scale of the merge of two decimalsstatic TypeId
getSQLTypeForJavaType(java.lang.String javaTypeName)
Get a TypeId for the class that corresponds to the given Java type name.java.lang.String
getSQLTypeName()
Returns the SQL name of the datatype.int
getTypeFormatId()
Get the formatID which corresponds to this class.static TypeId
getTypeId(TypeDescriptor catalogType)
Get the TypeId (fundemental type information) for a catalog type.static TypeId
getUserDefinedTypeId(java.lang.String className)
static TypeId
getUserDefinedTypeId(java.lang.String schemaName, java.lang.String unqualifiedName, java.lang.String className)
This factory method is used for ANSI UDTs.int
hashCode()
boolean
isBitTypeId()
Is this a type id for a bit type?boolean
isBlobTypeId()
Is this a Blob?boolean
isBooleanTypeId()
Is this a type id for a boolean type?boolean
isClobTypeId()
Is this a Clob?boolean
isConcatableTypeId()
Is this a type id for a concatable type?boolean
isDateTimeTimeStampTypeId()
Is this a TypeId for DATE/TIME/TIMESTAMPboolean
isDateTimeTimeStampTypeID()
Is this DATE/TIME or TIMESTAMP?boolean
isDecimalTypeId()
Is this a type id for a decimal type?boolean
isDoubleTypeId()
Is this a TypeId for DOUBLEboolean
isFixedStringTypeId()
Is this a fixed string type?boolean
isFloatingPointTypeId()
Is this a TypeId for floating point (REAL/DOUBLE)boolean
isLOBTypeId()
Is this a type id for a LOB type?boolean
isLongConcatableTypeId()
Is this a type id for a long concatable type?boolean
isLongVarbinaryTypeId()
Is this a LongVarbinary?boolean
isLongVarcharTypeId()
Is this a LongVarchar?boolean
isNumericTypeId()
Is this a type id for a numeric type?boolean
isRealTypeId()
Is this a TypeId for REALboolean
isRefTypeId()
Is this a type id for a ref type?boolean
isStringTypeId()
Does this TypeId represent a TypeId for a StringDataType.boolean
isTimestampId()
Is this a TIMESTAMP?boolean
isUserDefinedTypeId()
Is this a type id for a user defined type?boolean
isXMLTypeId()
Is this an XML doc?boolean
orderable(ClassFactory cf)
Tell whether this type is orderable, that is, can participate in comparisons.private void
setTypeIdSpecificInstanceVariables()
private void
setUserTypeIdInfo()
boolean
streamStorable()
Is this type StreamStorable?java.lang.String
toParsableString(DataTypeDescriptor dts)
Converts this TypeId, given a data type descriptor (including length/precision), to a string.int
typePrecedence()
Each built-in type in JSQL has a precedence.boolean
userType()
Tell whether this is a built-in type.boolean
variableLength()
Does type hava a declared variable length (defined by the application).
-
-
-
Field Detail
-
LONGINT_PRECISION
public static final int LONGINT_PRECISION
Various fixed numbers related to datatypes.- See Also:
- Constant Field Values
-
LONGINT_SCALE
public static final int LONGINT_SCALE
- See Also:
- Constant Field Values
-
LONGINT_MAXWIDTH
public static final int LONGINT_MAXWIDTH
- See Also:
- Constant Field Values
-
INT_PRECISION
public static final int INT_PRECISION
- See Also:
- Constant Field Values
-
INT_SCALE
public static final int INT_SCALE
- See Also:
- Constant Field Values
-
INT_MAXWIDTH
public static final int INT_MAXWIDTH
- See Also:
- Constant Field Values
-
SMALLINT_PRECISION
public static final int SMALLINT_PRECISION
- See Also:
- Constant Field Values
-
SMALLINT_SCALE
public static final int SMALLINT_SCALE
- See Also:
- Constant Field Values
-
SMALLINT_MAXWIDTH
public static final int SMALLINT_MAXWIDTH
- See Also:
- Constant Field Values
-
TINYINT_PRECISION
public static final int TINYINT_PRECISION
- See Also:
- Constant Field Values
-
TINYINT_SCALE
public static final int TINYINT_SCALE
- See Also:
- Constant Field Values
-
TINYINT_MAXWIDTH
public static final int TINYINT_MAXWIDTH
- See Also:
- Constant Field Values
-
DOUBLE_PRECISION
public static final int DOUBLE_PRECISION
- See Also:
- Constant Field Values
-
DOUBLE_PRECISION_IN_DIGITS
public static final int DOUBLE_PRECISION_IN_DIGITS
- See Also:
- Constant Field Values
-
DOUBLE_SCALE
public static final int DOUBLE_SCALE
- See Also:
- Constant Field Values
-
DOUBLE_MAXWIDTH
public static final int DOUBLE_MAXWIDTH
- See Also:
- Constant Field Values
-
REAL_PRECISION
public static final int REAL_PRECISION
- See Also:
- Constant Field Values
-
REAL_PRECISION_IN_DIGITS
public static final int REAL_PRECISION_IN_DIGITS
- See Also:
- Constant Field Values
-
REAL_SCALE
public static final int REAL_SCALE
- See Also:
- Constant Field Values
-
REAL_MAXWIDTH
public static final int REAL_MAXWIDTH
- See Also:
- Constant Field Values
-
DECIMAL_PRECISION
public static final int DECIMAL_PRECISION
- See Also:
- Constant Field Values
-
DECIMAL_SCALE
public static final int DECIMAL_SCALE
- See Also:
- Constant Field Values
-
DECIMAL_MAXWIDTH
public static final int DECIMAL_MAXWIDTH
- See Also:
- Constant Field Values
-
BOOLEAN_MAXWIDTH
public static final int BOOLEAN_MAXWIDTH
- See Also:
- Constant Field Values
-
CHAR_MAXWIDTH
public static final int CHAR_MAXWIDTH
- See Also:
- Constant Field Values
-
VARCHAR_MAXWIDTH
public static final int VARCHAR_MAXWIDTH
- See Also:
- Constant Field Values
-
LONGVARCHAR_MAXWIDTH
public static final int LONGVARCHAR_MAXWIDTH
- See Also:
- Constant Field Values
-
BIT_MAXWIDTH
public static final int BIT_MAXWIDTH
- See Also:
- Constant Field Values
-
VARBIT_MAXWIDTH
public static final int VARBIT_MAXWIDTH
- See Also:
- Constant Field Values
-
LONGVARBIT_MAXWIDTH
public static final int LONGVARBIT_MAXWIDTH
- See Also:
- Constant Field Values
-
BLOB_MAXWIDTH
public static final int BLOB_MAXWIDTH
- See Also:
- Constant Field Values
-
CLOB_MAXWIDTH
public static final int CLOB_MAXWIDTH
- See Also:
- Constant Field Values
-
XML_MAXWIDTH
public static final int XML_MAXWIDTH
- See Also:
- Constant Field Values
-
DATE_MAXWIDTH
public static final int DATE_MAXWIDTH
- See Also:
- Constant Field Values
-
TIME_MAXWIDTH
public static final int TIME_MAXWIDTH
- See Also:
- Constant Field Values
-
TIMESTAMP_MAXWIDTH
public static final int TIMESTAMP_MAXWIDTH
- See Also:
- Constant Field Values
-
TIME_SCALE
public static final int TIME_SCALE
- See Also:
- Constant Field Values
-
TIMESTAMP_SCALE
public static final int TIMESTAMP_SCALE
- See Also:
- Constant Field Values
-
BIT_NAME
public static final java.lang.String BIT_NAME
- See Also:
- Constant Field Values
-
VARBIT_NAME
public static final java.lang.String VARBIT_NAME
- See Also:
- Constant Field Values
-
LONGVARBIT_NAME
public static final java.lang.String LONGVARBIT_NAME
- See Also:
- Constant Field Values
-
TINYINT_NAME
public static final java.lang.String TINYINT_NAME
- See Also:
- Constant Field Values
-
SMALLINT_NAME
public static final java.lang.String SMALLINT_NAME
- See Also:
- Constant Field Values
-
INTEGER_NAME
public static final java.lang.String INTEGER_NAME
- See Also:
- Constant Field Values
-
BIGINT_NAME
public static final java.lang.String BIGINT_NAME
- See Also:
- Constant Field Values
-
FLOAT_NAME
public static final java.lang.String FLOAT_NAME
- See Also:
- Constant Field Values
-
REAL_NAME
public static final java.lang.String REAL_NAME
- See Also:
- Constant Field Values
-
DOUBLE_NAME
public static final java.lang.String DOUBLE_NAME
- See Also:
- Constant Field Values
-
NUMERIC_NAME
public static final java.lang.String NUMERIC_NAME
- See Also:
- Constant Field Values
-
DECIMAL_NAME
public static final java.lang.String DECIMAL_NAME
- See Also:
- Constant Field Values
-
CHAR_NAME
public static final java.lang.String CHAR_NAME
- See Also:
- Constant Field Values
-
VARCHAR_NAME
public static final java.lang.String VARCHAR_NAME
- See Also:
- Constant Field Values
-
LONGVARCHAR_NAME
public static final java.lang.String LONGVARCHAR_NAME
- See Also:
- Constant Field Values
-
DATE_NAME
public static final java.lang.String DATE_NAME
- See Also:
- Constant Field Values
-
TIME_NAME
public static final java.lang.String TIME_NAME
- See Also:
- Constant Field Values
-
TIMESTAMP_NAME
public static final java.lang.String TIMESTAMP_NAME
- See Also:
- Constant Field Values
-
BINARY_NAME
public static final java.lang.String BINARY_NAME
- See Also:
- Constant Field Values
-
VARBINARY_NAME
public static final java.lang.String VARBINARY_NAME
- See Also:
- Constant Field Values
-
LONGVARBINARY_NAME
public static final java.lang.String LONGVARBINARY_NAME
- See Also:
- Constant Field Values
-
BOOLEAN_NAME
public static final java.lang.String BOOLEAN_NAME
- See Also:
- Constant Field Values
-
REF_NAME
public static final java.lang.String REF_NAME
- See Also:
- Constant Field Values
-
REF_CURSOR
public static final java.lang.String REF_CURSOR
- See Also:
- Constant Field Values
-
NATIONAL_CHAR_NAME
public static final java.lang.String NATIONAL_CHAR_NAME
- See Also:
- Constant Field Values
-
NATIONAL_VARCHAR_NAME
public static final java.lang.String NATIONAL_VARCHAR_NAME
- See Also:
- Constant Field Values
-
NATIONAL_LONGVARCHAR_NAME
public static final java.lang.String NATIONAL_LONGVARCHAR_NAME
- See Also:
- Constant Field Values
-
BLOB_NAME
public static final java.lang.String BLOB_NAME
- See Also:
- Constant Field Values
-
CLOB_NAME
public static final java.lang.String CLOB_NAME
- See Also:
- Constant Field Values
-
NCLOB_NAME
public static final java.lang.String NCLOB_NAME
- See Also:
- Constant Field Values
-
XML_NAME
public static final java.lang.String XML_NAME
- See Also:
- Constant Field Values
-
ARRAY_NAME
public static final java.lang.String ARRAY_NAME
- See Also:
- Constant Field Values
-
STRUCT_NAME
public static final java.lang.String STRUCT_NAME
- See Also:
- Constant Field Values
-
DATALINK_NAME
public static final java.lang.String DATALINK_NAME
- See Also:
- Constant Field Values
-
ROWID_NAME
public static final java.lang.String ROWID_NAME
- See Also:
- Constant Field Values
-
SQLXML_NAME
public static final java.lang.String SQLXML_NAME
- See Also:
- Constant Field Values
-
USER_PRECEDENCE
public static final int USER_PRECEDENCE
The following constants define the type precedence hierarchy.- See Also:
- Constant Field Values
-
XML_PRECEDENCE
public static final int XML_PRECEDENCE
- See Also:
- Constant Field Values
-
BLOB_PRECEDENCE
public static final int BLOB_PRECEDENCE
- See Also:
- Constant Field Values
-
LONGVARBIT_PRECEDENCE
public static final int LONGVARBIT_PRECEDENCE
- See Also:
- Constant Field Values
-
VARBIT_PRECEDENCE
public static final int VARBIT_PRECEDENCE
- See Also:
- Constant Field Values
-
BIT_PRECEDENCE
public static final int BIT_PRECEDENCE
- See Also:
- Constant Field Values
-
BOOLEAN_PRECEDENCE
public static final int BOOLEAN_PRECEDENCE
- See Also:
- Constant Field Values
-
TIME_PRECEDENCE
public static final int TIME_PRECEDENCE
- See Also:
- Constant Field Values
-
TIMESTAMP_PRECEDENCE
public static final int TIMESTAMP_PRECEDENCE
- See Also:
- Constant Field Values
-
DATE_PRECEDENCE
public static final int DATE_PRECEDENCE
- See Also:
- Constant Field Values
-
DOUBLE_PRECEDENCE
public static final int DOUBLE_PRECEDENCE
- See Also:
- Constant Field Values
-
REAL_PRECEDENCE
public static final int REAL_PRECEDENCE
- See Also:
- Constant Field Values
-
DECIMAL_PRECEDENCE
public static final int DECIMAL_PRECEDENCE
- See Also:
- Constant Field Values
-
NUMERIC_PRECEDENCE
public static final int NUMERIC_PRECEDENCE
- See Also:
- Constant Field Values
-
LONGINT_PRECEDENCE
public static final int LONGINT_PRECEDENCE
- See Also:
- Constant Field Values
-
INT_PRECEDENCE
public static final int INT_PRECEDENCE
- See Also:
- Constant Field Values
-
SMALLINT_PRECEDENCE
public static final int SMALLINT_PRECEDENCE
- See Also:
- Constant Field Values
-
TINYINT_PRECEDENCE
public static final int TINYINT_PRECEDENCE
- See Also:
- Constant Field Values
-
REF_PRECEDENCE
public static final int REF_PRECEDENCE
- See Also:
- Constant Field Values
-
CLOB_PRECEDENCE
public static final int CLOB_PRECEDENCE
- See Also:
- Constant Field Values
-
LONGVARCHAR_PRECEDENCE
public static final int LONGVARCHAR_PRECEDENCE
- See Also:
- Constant Field Values
-
VARCHAR_PRECEDENCE
public static final int VARCHAR_PRECEDENCE
- See Also:
- Constant Field Values
-
CHAR_PRECEDENCE
public static final int CHAR_PRECEDENCE
- See Also:
- Constant Field Values
-
BOOLEAN_ID
public static final TypeId BOOLEAN_ID
-
SMALLINT_ID
public static final TypeId SMALLINT_ID
-
INTEGER_ID
public static final TypeId INTEGER_ID
-
CHAR_ID
public static final TypeId CHAR_ID
-
TINYINT_ID
private static final TypeId TINYINT_ID
-
BIGINT_ID
public static final TypeId BIGINT_ID
-
REAL_ID
private static final TypeId REAL_ID
-
DOUBLE_ID
public static final TypeId DOUBLE_ID
-
DECIMAL_ID
private static final TypeId DECIMAL_ID
-
NUMERIC_ID
private static final TypeId NUMERIC_ID
-
VARCHAR_ID
private static final TypeId VARCHAR_ID
-
DATE_ID
private static final TypeId DATE_ID
-
TIME_ID
private static final TypeId TIME_ID
-
TIMESTAMP_ID
private static final TypeId TIMESTAMP_ID
-
BIT_ID
private static final TypeId BIT_ID
-
VARBIT_ID
private static final TypeId VARBIT_ID
-
REF_ID
private static final TypeId REF_ID
-
LONGVARCHAR_ID
private static final TypeId LONGVARCHAR_ID
-
LONGVARBIT_ID
private static final TypeId LONGVARBIT_ID
-
BLOB_ID
private static final TypeId BLOB_ID
-
CLOB_ID
private static final TypeId CLOB_ID
-
XML_ID
private static final TypeId XML_ID
-
ALL_BUILTIN_TYPE_IDS
private static final TypeId[] ALL_BUILTIN_TYPE_IDS
-
baseTypeId
private BaseTypeIdImpl baseTypeId
-
formatId
private int formatId
-
isBitTypeId
private boolean isBitTypeId
-
isLOBTypeId
private boolean isLOBTypeId
-
isBooleanTypeId
private boolean isBooleanTypeId
-
isConcatableTypeId
private boolean isConcatableTypeId
-
isDecimalTypeId
private boolean isDecimalTypeId
-
isLongConcatableTypeId
private boolean isLongConcatableTypeId
-
isNumericTypeId
private boolean isNumericTypeId
-
isRefTypeId
private boolean isRefTypeId
-
isStringTypeId
private boolean isStringTypeId
-
isFloatingPointTypeId
private boolean isFloatingPointTypeId
-
isRealTypeId
private boolean isRealTypeId
-
isDateTimeTimeStampTypeId
private boolean isDateTimeTimeStampTypeId
-
isUserDefinedTypeId
private boolean isUserDefinedTypeId
-
maxPrecision
private int maxPrecision
-
maxScale
private int maxScale
-
typePrecedence
private int typePrecedence
-
javaTypeName
private java.lang.String javaTypeName
-
maxMaxWidth
private int maxMaxWidth
-
-
Constructor Detail
-
TypeId
public TypeId(int formatId, BaseTypeIdImpl baseTypeId)
Constructor for a TypeId- Parameters:
formatId
- Format id of specific type id.baseTypeId
- The Base type id
-
-
Method Detail
-
create
private static TypeId create(int typeFormatId, int implTypeFormatId)
Create a TypeId for the given format identifiers using a BaseTypeIdImpl. Used to create the static final variables of this class.
-
getAllBuiltinTypeIds
public static TypeId[] getAllBuiltinTypeIds()
Return all of the builtin type ids.
-
getBuiltInTypeId
public static TypeId getBuiltInTypeId(int JDBCTypeId)
Get a TypeId of the given JDBC type. This factory method is intended to be used for built-in types. For user-defined types, we will need a factory method that takes a Java type name.- Parameters:
JDBCTypeId
- The JDBC Id of the type, as listed in java.sql.Types- Returns:
- The appropriate TypeId, or null if there is no such TypeId.
-
getUserDefinedTypeId
public static TypeId getUserDefinedTypeId(java.lang.String className) throws StandardException
- Throws:
StandardException
-
getUserDefinedTypeId
public static TypeId getUserDefinedTypeId(java.lang.String schemaName, java.lang.String unqualifiedName, java.lang.String className) throws StandardException
This factory method is used for ANSI UDTs. If the className argument is null, then this TypeId will have to be bound.- Parameters:
schemaName
- Schema that the type definition lives in.unqualifiedName
- The second part of the ANSI dot-separated name for the type.className
- The Java class which is bound to the schema-qualified name by the CREATE TYPE statement.- Returns:
- A bound type TypeId describing this ANSI UDT.
- Throws:
StandardException
-
getSQLTypeForJavaType
public static TypeId getSQLTypeForJavaType(java.lang.String javaTypeName) throws StandardException
Get a TypeId for the class that corresponds to the given Java type name.- Parameters:
javaTypeName
- The name of the Java type- Returns:
- A TypeId for the SQL type that corresponds to the Java type, null if there is no corresponding type.
- Throws:
StandardException
-
getBuiltInTypeId
public static TypeId getBuiltInTypeId(java.lang.String SQLTypeName)
Given a SQL type name return the corresponding TypeId.- Parameters:
SQLTypeName
- Name of SQL type- Returns:
- TypeId or null if there is no corresponding SQL type.
-
getTypeId
public static TypeId getTypeId(TypeDescriptor catalogType)
Get the TypeId (fundemental type information) for a catalog type.- Parameters:
catalogType
-- Returns:
- TypeId that represents the base type, null if not applicable.
-
equals
public boolean equals(java.lang.Object that)
we want equals to say if these are the same type id or not.- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
setTypeIdSpecificInstanceVariables
private void setTypeIdSpecificInstanceVariables()
-
getJDBCTypeId
public final int getJDBCTypeId()
JDBC has its own idea of type identifiers which is different from the Derby internal type ids. The JDBC type ids are defined as public final static ints in java.sql.Types. This method translates a Derby internal TypeId to a JDBC type id. For java objects this returns JAVA_OBJECT in Java2 and OTHER in JDK 1.1. For Boolean datatypes, this returns Type.BOOLEAN in JDK1.4 and Type.BIT for jdks prior to 1.4- Returns:
- The JDBC type Id for this type
-
getSQLTypeName
public java.lang.String getSQLTypeName()
Returns the SQL name of the datatype. If it is a user-defined type, it returns the full Java path name for the datatype, meaning the dot-separated path including the package names.- Returns:
- A String containing the SQL name of this type.
-
userType
public final boolean userType()
Tell whether this is a built-in type. NOTE: There are 3 "classes" of types: built-in - system provided types which are implemented internally (int, smallint, etc.) system built-in - system provided types, independent of implementation (date, time, etc.) user types - types implemented outside of the system (java.lang.Integer, asdf.asdf.asdf, etc.)- Returns:
- true for built-in types, false for user-defined types.
-
getMaximumPrecision
public int getMaximumPrecision()
Get the maximum precision of the type. For types with variable precision, this is an arbitrary high precision.- Returns:
- The maximum precision of the type
-
getMaximumScale
public int getMaximumScale()
Get the maximum scale of the type. For types with variable scale, this is an arbitrary high scale.- Returns:
- The maximum scale of the type
-
setUserTypeIdInfo
private void setUserTypeIdInfo()
-
isStringTypeId
public boolean isStringTypeId()
Does this TypeId represent a TypeId for a StringDataType.- Returns:
- Whether or not this TypeId represents a TypeId for a StringDataType.
-
isDateTimeTimeStampTypeId
public boolean isDateTimeTimeStampTypeId()
Is this a TypeId for DATE/TIME/TIMESTAMP- Returns:
- true if this is a DATE/TIME/TIMESTAMP
-
isRealTypeId
public boolean isRealTypeId()
Is this a TypeId for REAL- Returns:
- true if this is a REAL
-
isFloatingPointTypeId
public boolean isFloatingPointTypeId()
Is this a TypeId for floating point (REAL/DOUBLE)- Returns:
- true if this is a REAL or DOUBLE
-
isDoubleTypeId
public boolean isDoubleTypeId()
Is this a TypeId for DOUBLE- Returns:
- true if this is a DOUBLE
-
isFixedStringTypeId
public boolean isFixedStringTypeId()
Is this a fixed string type?- Returns:
- true if this is CHAR
-
isClobTypeId
public boolean isClobTypeId()
Is this a Clob?- Returns:
- true if this is CLOB
-
isBlobTypeId
public boolean isBlobTypeId()
Is this a Blob?- Returns:
- true if this is BLOB
-
isLongVarcharTypeId
public boolean isLongVarcharTypeId()
Is this a LongVarchar?- Returns:
- true if this is LongVarchar
-
isLongVarbinaryTypeId
public boolean isLongVarbinaryTypeId()
Is this a LongVarbinary?- Returns:
- true if this is LongVarbinary
-
isDateTimeTimeStampTypeID
public boolean isDateTimeTimeStampTypeID()
Is this DATE/TIME or TIMESTAMP?- Returns:
- true if this DATE/TIME or TIMESTAMP
-
isTimestampId
public boolean isTimestampId()
Is this a TIMESTAMP?- Returns:
- true if this is a TIMESTAMP
-
isXMLTypeId
public boolean isXMLTypeId()
Is this an XML doc?- Returns:
- true if this is XML
-
orderable
public boolean orderable(ClassFactory cf)
Tell whether this type is orderable, that is, can participate in comparisons.- Parameters:
cf
- A ClassFactory- Returns:
- true for orderable types, false for non-orderable types.
-
typePrecedence
public int typePrecedence()
Each built-in type in JSQL has a precedence. This precedence determines how to do type promotion when using binary operators. For example, float has a higher precedence than int, so when adding an int to a float, the result type is float. The precedence for some types is arbitrary. For example, it doesn't matter what the precedence of the boolean type is, since it can't be mixed with other types. But the precedence for the number types is critical. The SQL standard requires that exact numeric types be promoted to approximate numeric when one operator uses both. Also, the precedence is arranged so that one will not lose precision when promoting a type. NOTE: char, varchar, and longvarchar must appear at the bottom of the hierarchy, but above USER_PRECEDENCE, since we allow the implicit conversion of those types to any other built-in system type.- Returns:
- The precedence of this type.
-
getCorrespondingJavaTypeName
public java.lang.String getCorrespondingJavaTypeName()
Get the name of the corresponding Java type. Each SQL type has a corresponding Java type. When a SQL value is passed to a Java method, it is translated to its corresponding Java type. For example, when a SQL date column is passed to a method, it is translated to a java.sql.Date.- Returns:
- The name of the corresponding Java type.
-
getResultSetMetaDataTypeName
public java.lang.String getResultSetMetaDataTypeName()
Get the name of the corresponding Java type. This method is used directly from EmbedResultSetMetaData (jdbc) to return the corresponding type (as choosen by getObject). It solves a specific problem for BLOB types where the getCorrespondingJavaTypeName() is used internall for casting which doesn't work if changed from byte[] to java.sql.Blob. So we do it here instread, to avoid unexpected sideeffects.- Returns:
- The name of the corresponding Java type.
-
getMaximumMaximumWidth
public int getMaximumMaximumWidth()
Get the maximum maximum width of the type (that's not a typo). For types with variable length, this is the absolute maximum for the type.- Returns:
- The maximum maximum width of the type
-
toParsableString
public java.lang.String toParsableString(DataTypeDescriptor dts)
Converts this TypeId, given a data type descriptor (including length/precision), to a string. E.g. VARCHAR(30) For most data types, we just return the SQL type name.- Parameters:
dts
- Data type descriptor that holds the length/precision etc. as necessary- Returns:
- String version of datatype, suitable for running through the Parser.
-
isNumericTypeId
public boolean isNumericTypeId()
Is this a type id for a numeric type?- Returns:
- Whether or not this a type id for a numeric type.
-
isDecimalTypeId
public boolean isDecimalTypeId()
Is this a type id for a decimal type?- Returns:
- Whether or not this a type id for a decimal type.
-
isBooleanTypeId
public boolean isBooleanTypeId()
Is this a type id for a boolean type?- Returns:
- Whether or not this a type id for a boolean type.
-
isRefTypeId
public boolean isRefTypeId()
Is this a type id for a ref type?- Returns:
- Whether or not this a type id for a ref type.
-
isConcatableTypeId
public boolean isConcatableTypeId()
Is this a type id for a concatable type?- Returns:
- Whether or not this a type id for a concatable type.
-
isBitTypeId
public boolean isBitTypeId()
Is this a type id for a bit type?- Returns:
- Whether or not this a type id for a bit type.
-
isLOBTypeId
public boolean isLOBTypeId()
Is this a type id for a LOB type?- Returns:
- Whether or not this a type id for a LOB type.
-
isLongConcatableTypeId
public boolean isLongConcatableTypeId()
Is this a type id for a long concatable type?- Returns:
- Whether or not this a type id for a long concatable type.
-
isUserDefinedTypeId
public boolean isUserDefinedTypeId()
Is this a type id for a user defined type?- Returns:
- Whether or not this a type id for a user defined type.
-
getTypeFormatId
public int getTypeFormatId()
Get the formatID which corresponds to this class.- Returns:
- the formatID of this class
-
getNull
public DataValueDescriptor getNull()
Get SQL null value.- Returns:
- SQL null value for this type.
-
streamStorable
public boolean streamStorable()
Is this type StreamStorable?- Returns:
- true if this type has variable length.
-
getApproximateLengthInBytes
public int getApproximateLengthInBytes(DataTypeDescriptor dts)
Get the approximate length of this type in bytes. For most datatypes this is just going to be dts.getMaximumWidth(). Some types, such as bit, will override this.- Parameters:
dts
- Data type descriptor that holds the length/precision etc. as necessary- Returns:
- the length in bytes
-
getBaseTypeId
public BaseTypeIdImpl getBaseTypeId()
Get the base type id that is embedded in this type id. The base type id is an object with a minimal implementation of TypeId that is intended to be usable on the client side.
-
getPrecision
public int getPrecision(DataTypeDescriptor leftType, DataTypeDescriptor rightType)
Get the precision of the merge of two Decimals- Parameters:
leftType
- the left typerightType
- the left type- Returns:
- the resultant precision
-
getScale
public int getScale(DataTypeDescriptor leftType, DataTypeDescriptor rightType)
Get the scale of the merge of two decimals- Parameters:
leftType
- the left typerightType
- the left type- Returns:
- the resultant precision
-
variableLength
public boolean variableLength()
Does type hava a declared variable length (defined by the application). Examples are CHAR(10), CLOB(1M). Unbounded long types, like LONG VARCHAR return false here.- Returns:
- boolean true if type is variable length false if not.
-
-