org.apache.derby.iapi.sql.compile
Interface TypeCompiler

All Known Implementing Classes:
BaseTypeCompiler

public interface TypeCompiler

This interface defines methods associated with a TypeId that are used by the compiler.


Field Summary
static java.lang.String AVG_OP
           
static int BOOLEAN_MAXWIDTH_AS_CHAR
           
static int DEFAULT_DECIMAL_PRECISION
           
static int DEFAULT_DECIMAL_SCALE
           
static java.lang.String DIVIDE_OP
           
static int DOUBLE_MAXWIDTH_AS_CHAR
           
static int INT_MAXWIDTH_AS_CHAR
           
static int LONGINT_MAXWIDTH_AS_CHAR
          Various fixed numbers related to datatypes.
static int MAX_DECIMAL_PRECISION_SCALE
           
static java.lang.String MINUS_OP
           
static java.lang.String MOD_OP
           
static java.lang.String PLUS_OP
           
static int REAL_MAXWIDTH_AS_CHAR
           
static int SMALLINT_MAXWIDTH_AS_CHAR
           
static java.lang.String SUM_OP
           
static java.lang.String TIMES_OP
           
static int TINYINT_MAXWIDTH_AS_CHAR
           
 
Method Summary
 boolean comparable(TypeId otherType, boolean forEquals, ClassFactory cf)
          Determine if this type can be compared to some other type
 boolean compatible(TypeId otherType)
          Determine if this type is compatible to some other type (e.g.
 boolean convertible(TypeId otherType, boolean forDataTypeFunction)
          Determine if this type can be CONVERTed to some other type
 void generateDataValue(MethodBuilder eb, LocalField field)
          Generate the code necessary to produce a SQL value based on a value.
 void generateNull(MethodBuilder mb)
          Generate the code necessary to produce a SQL null of the appropriate type.
 int getCastToCharWidth(DataTypeDescriptor dts)
          Return the maximum width for this data type when cast to a char type.
 java.lang.String getCorrespondingPrimitiveTypeName()
          Get the name of the corresponding Java type.
 java.lang.String getMatchingNationalCharTypeName()
          Get the name of the matching national char type.
 java.lang.String getPrimitiveMethodName()
          Get the method name for getting out the corresponding primitive Java type from a DataValueDescriptor.
 java.lang.String interfaceName()
          Get the name of the interface for this type.
 DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType, DataTypeDescriptor rightType, java.lang.String operator)
          Type resolution methods on binary operators
 boolean storable(TypeId otherType, ClassFactory cf)
          Determine if this type can have a value of another type stored into it.
 

Field Detail

LONGINT_MAXWIDTH_AS_CHAR

public static final int LONGINT_MAXWIDTH_AS_CHAR
Various fixed numbers related to datatypes.

See Also:
Constant Field Values

INT_MAXWIDTH_AS_CHAR

public static final int INT_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

SMALLINT_MAXWIDTH_AS_CHAR

public static final int SMALLINT_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

TINYINT_MAXWIDTH_AS_CHAR

public static final int TINYINT_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

DOUBLE_MAXWIDTH_AS_CHAR

public static final int DOUBLE_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

REAL_MAXWIDTH_AS_CHAR

public static final int REAL_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

DEFAULT_DECIMAL_PRECISION

public static final int DEFAULT_DECIMAL_PRECISION
See Also:
Constant Field Values

DEFAULT_DECIMAL_SCALE

public static final int DEFAULT_DECIMAL_SCALE
See Also:
Constant Field Values

MAX_DECIMAL_PRECISION_SCALE

public static final int MAX_DECIMAL_PRECISION_SCALE
See Also:
Constant Field Values

BOOLEAN_MAXWIDTH_AS_CHAR

public static final int BOOLEAN_MAXWIDTH_AS_CHAR
See Also:
Constant Field Values

PLUS_OP

public static final java.lang.String PLUS_OP
See Also:
Constant Field Values

DIVIDE_OP

public static final java.lang.String DIVIDE_OP
See Also:
Constant Field Values

MINUS_OP

public static final java.lang.String MINUS_OP
See Also:
Constant Field Values

TIMES_OP

public static final java.lang.String TIMES_OP
See Also:
Constant Field Values

SUM_OP

public static final java.lang.String SUM_OP
See Also:
Constant Field Values

AVG_OP

public static final java.lang.String AVG_OP
See Also:
Constant Field Values

MOD_OP

public static final java.lang.String MOD_OP
See Also:
Constant Field Values
Method Detail

resolveArithmeticOperation

public DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType,
                                                     DataTypeDescriptor rightType,
                                                     java.lang.String operator)
                                              throws StandardException
Type resolution methods on binary operators

Parameters:
leftType - The type of the left parameter
rightType - The type of the right parameter
operator - The name of the operator (e.g. "+").
Returns:
The type of the result
Throws:
StandardException - Thrown on error

comparable

public boolean comparable(TypeId otherType,
                          boolean forEquals,
                          ClassFactory cf)
Determine if this type can be compared to some other type

Parameters:
otherType - The CompilationType of the other type to compare this type to
forEquals - True if this is an = or <> comparison, false otherwise.
cf - A ClassFactory
Returns:
true if the types can be compared, false if comparisons between the types are not allowed

convertible

public boolean convertible(TypeId otherType,
                           boolean forDataTypeFunction)
Determine if this type can be CONVERTed to some other type

Parameters:
otherType - The CompilationType of the other type to compare this type to
forDataTypeFunction - true if this is a type function that requires more liberal behavior (e.g DOUBLE can convert a char but you cannot cast a CHAR to double.
Returns:
true if the types can be converted, false if conversion is not allowed

compatible

public boolean compatible(TypeId otherType)
Determine if this type is compatible to some other type (e.g. COALESCE(thistype, othertype)).

Parameters:
otherType - The CompilationType of the other type to compare this type to
Returns:
true if the types are compatible, false if not compatible

storable

public boolean storable(TypeId otherType,
                        ClassFactory cf)
Determine if this type can have a value of another type stored into it. Note that direction is relevant here: the test is that the otherType is storable into this type.

Parameters:
otherType - The TypeId of the other type to compare this type to
cf - A ClassFactory
Returns:
true if the other type can be stored in a column of this type.

interfaceName

public java.lang.String interfaceName()
Get the name of the interface for this type. For example, the interface for a SQLInteger is NumberDataValue. The full path name of the type is returned.

Returns:
The name of the interface for this type.

getCorrespondingPrimitiveTypeName

public java.lang.String getCorrespondingPrimitiveTypeName()
Get the name of the corresponding Java type. For numerics and booleans we will get the corresponding Java primitive type. e 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, a SQL Integer will be mapped to a Java int, but a SQL date will be mapped to a java.sql.Date.

Returns:
The name of the corresponding Java primitive type.

getPrimitiveMethodName

public java.lang.String getPrimitiveMethodName()
Get the method name for getting out the corresponding primitive Java type from a DataValueDescriptor.

Returns:
String The method call name for getting the corresponding primitive Java type.

getMatchingNationalCharTypeName

public java.lang.String getMatchingNationalCharTypeName()
Get the name of the matching national char type.

Returns:
The name of the matching national char type.

generateNull

public void generateNull(MethodBuilder mb)
Generate the code necessary to produce a SQL null of the appropriate type. The stack must contain a DataValueFactory and a null or a value of the correct type (interfaceName()).

Parameters:
mb - The method to put the expression in

generateDataValue

public void generateDataValue(MethodBuilder eb,
                              LocalField field)
Generate the code necessary to produce a SQL value based on a value. The value's type is assumed to match the type of this TypeId. For example, a TypeId for the SQL int type should be given an value that evaluates to a Java int or Integer. If the type of the value is incorrect, the generated code will not work. The stack must contain data value factory value


getCastToCharWidth

public int getCastToCharWidth(DataTypeDescriptor dts)
Return the maximum width for this data type when cast to a char type.

Parameters:
dts - The associated DataTypeDescriptor for this TypeId.
Returns:
int The maximum width for this data type when cast to a char type.

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.