org.apache.derby.iapi.types
Class TypeId

java.lang.Object
  extended by 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
private static TypeId[] ALL_BUILTIN_TYPE_IDS
           
static java.lang.String ARRAY_NAME
           
private  BaseTypeIdImpl baseTypeId
           
private static TypeId BIGINT_ID
           
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  boolean classNameWasDelimitedIdentifier
           
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
           
(package private) static DataValueDescriptor decimalImplementation
          Implementation of DECIMAL datatype for generating holders through getNull.
private 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 java.lang.String LONGINT_NAME
           
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
           
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
TypeId(int formatId, BaseTypeIdImpl baseTypeId)
          Constructor for a TypeId
TypeId(int formatId, BaseTypeIdImpl baseTypeId, boolean classNameWasDelimitedIdentifier)
          Constructor for a TypeId for user defined types
 
Method Summary
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.
 boolean getClassNameWasDelimitedIdentifier()
          For user types, tell whether or not the class name was a delimited identifier.
 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 Decimals
 java.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 decimals
static 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, boolean delimitedIdentifier)
           
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/TIMESTAMP
 boolean 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 DOUBLE
 boolean 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 REAL
 boolean isRefTypeId()
          Is this a type id for a ref type?
 boolean isStringTypeId()
          Does this TypeId represent a TypeId for a StringDataType.
 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).
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

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

LONGINT_NAME

public static final java.lang.String LONGINT_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

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

private static final TypeId BIGINT_ID

REAL_ID

private static final TypeId REAL_ID

DOUBLE_ID

private 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

decimalImplementation

static DataValueDescriptor decimalImplementation
Implementation of DECIMAL datatype for generating holders through getNull. Set by the booted DataValueFactory implementation.


baseTypeId

private BaseTypeIdImpl baseTypeId

formatId

private int formatId

classNameWasDelimitedIdentifier

private boolean classNameWasDelimitedIdentifier

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

TypeId

public TypeId(int formatId,
              BaseTypeIdImpl baseTypeId,
              boolean classNameWasDelimitedIdentifier)
Constructor for a TypeId for user defined types

Parameters:
formatId - Format id of specific type id.
baseTypeId - The Base type id
classNameWasDelimitedIdentifier - Whether or not the class name was a delimited identifier
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,
                                          boolean delimitedIdentifier)
                                   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 class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.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()

getClassNameWasDelimitedIdentifier

public boolean getClassNameWasDelimitedIdentifier()
For user types, tell whether or not the class name was a delimited identifier. For all other types, return false.

Returns:
Whether or not the class name was a delimited identifier.

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

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 type
rightType - 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 type
rightType - 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.

Built on Thu 2010-12-23 20:49:13+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.