org.apache.derby.impl.sql.compile
Class BaseTypeCompiler

java.lang.Object
  extended byorg.apache.derby.impl.sql.compile.BaseTypeCompiler
All Implemented Interfaces:
TypeCompiler
Direct Known Subclasses:
BitTypeCompiler, BooleanTypeCompiler, CharTypeCompiler, CLOBTypeCompiler, DateTypeCompiler, LOBTypeCompiler, NumericTypeCompiler, RefTypeCompiler, TimestampTypeCompiler, TimeTypeCompiler, UserDefinedTypeCompiler, XMLTypeCompiler

abstract class BaseTypeCompiler
extends java.lang.Object
implements TypeCompiler

This is the base implementation of TypeCompiler

Author:
Jeff

Field Summary
private  TypeId correspondingTypeId
           
 
Fields inherited from interface org.apache.derby.iapi.sql.compile.TypeCompiler
AVG_OP, BOOLEAN_MAXWIDTH_AS_CHAR, DEFAULT_DECIMAL_PRECISION, DEFAULT_DECIMAL_SCALE, DIVIDE_OP, DOUBLE_MAXWIDTH_AS_CHAR, INT_MAXWIDTH_AS_CHAR, LONGINT_MAXWIDTH_AS_CHAR, MAX_DECIMAL_PRECISION_SCALE, MINUS_OP, MOD_OP, PLUS_OP, REAL_MAXWIDTH_AS_CHAR, SMALLINT_MAXWIDTH_AS_CHAR, SUM_OP, TIMES_OP, TINYINT_MAXWIDTH_AS_CHAR
 
Constructor Summary
(package private) BaseTypeCompiler()
           
 
Method Summary
protected  java.lang.String dataValueMethodName()
          Return the method name to get a Derby DataValueDescriptor object of the correct type.
 void generateDataValue(MethodBuilder mb, 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.
 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.
protected  int getStoredFormatIdFromTypeId()
          Get the StoredFormatId from the corresponding TypeId.
protected  TypeCompiler getTypeCompiler(TypeId typeId)
          Get the TypeCompiler that corresponds to the given TypeId.
protected  TypeId getTypeId()
          Get the TypeId that corresponds to this TypeCompiler.
protected abstract  java.lang.String nullMethodName()
           
 boolean numberComparable(TypeId otherType, boolean forEquals, ClassFactory cf)
          Tell whether this numeric type can be compared to the given type.
 boolean numberConvertible(TypeId otherType, boolean forDataTypeFunction)
          Tell whether this numeric type can be converted to the given type.
 boolean numberStorable(TypeId thisType, TypeId otherType, ClassFactory cf)
          Tell whether this numeric type can be stored into from the given type.
 DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType, DataTypeDescriptor rightType, java.lang.String operator)
          Type resolution methods on binary operators
(package private)  void setTypeId(TypeId typeId)
          Set the TypeCompiler that corresponds to the given TypeId.
protected  boolean userTypeStorable(TypeId thisType, TypeId otherType, ClassFactory cf)
          Determine whether thisType is storable in otherType due to otherType being a user type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.sql.compile.TypeCompiler
comparable, compatible, convertible, getCastToCharWidth, getCorrespondingPrimitiveTypeName, interfaceName, storable
 

Field Detail

correspondingTypeId

private TypeId correspondingTypeId
Constructor Detail

BaseTypeCompiler

BaseTypeCompiler()
Method Detail

getPrimitiveMethodName

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

Specified by:
getPrimitiveMethodName in interface TypeCompiler
Returns:
String The method call name for getting the corresponding primitive Java type.

getMatchingNationalCharTypeName

public java.lang.String getMatchingNationalCharTypeName()
Description copied from interface: TypeCompiler
Get the name of the matching national char type.

Specified by:
getMatchingNationalCharTypeName in interface TypeCompiler
Returns:
The name of the matching national char type.
See Also:
TypeCompiler.getMatchingNationalCharTypeName()

resolveArithmeticOperation

public DataTypeDescriptor resolveArithmeticOperation(DataTypeDescriptor leftType,
                                                     DataTypeDescriptor rightType,
                                                     java.lang.String operator)
                                              throws StandardException
Description copied from interface: TypeCompiler
Type resolution methods on binary operators

Specified by:
resolveArithmeticOperation in interface TypeCompiler
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
See Also:
TypeCompiler.resolveArithmeticOperation(org.apache.derby.iapi.types.DataTypeDescriptor, org.apache.derby.iapi.types.DataTypeDescriptor, java.lang.String)

generateNull

public void generateNull(MethodBuilder mb)
Description copied from interface: TypeCompiler
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()).

Specified by:
generateNull in interface TypeCompiler
Parameters:
mb - The method to put the expression in
See Also:
TypeCompiler.generateNull(org.apache.derby.iapi.services.compiler.MethodBuilder)

generateDataValue

public void generateDataValue(MethodBuilder mb,
                              LocalField field)
Description copied from interface: TypeCompiler
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

Specified by:
generateDataValue in interface TypeCompiler
See Also:
TypeCompiler.generateDataValue(org.apache.derby.iapi.services.compiler.MethodBuilder, org.apache.derby.iapi.services.compiler.LocalField)

nullMethodName

protected abstract java.lang.String nullMethodName()

dataValueMethodName

protected java.lang.String dataValueMethodName()
Return the method name to get a Derby DataValueDescriptor object of the correct type. This implementation returns "getDataValue".


userTypeStorable

protected boolean userTypeStorable(TypeId thisType,
                                   TypeId otherType,
                                   ClassFactory cf)
Determine whether thisType is storable in otherType due to otherType being a user type.

Parameters:
thisType - The TypeId of the value to be stored
otherType - The TypeId of the value to be stored in
Returns:
true if thisType is storable in otherType

numberComparable

public boolean numberComparable(TypeId otherType,
                                boolean forEquals,
                                ClassFactory cf)
Tell whether this numeric type can be compared to the given type.

Parameters:
otherType - The TypeId of the other type.

numberConvertible

public boolean numberConvertible(TypeId otherType,
                                 boolean forDataTypeFunction)
Tell whether this numeric type can be converted to the given type.

Parameters:
otherType - The TypeId of the other type.
forDataTypeFunction - was this called from a scalarFunction like CHAR() or DOUBLE()

numberStorable

public boolean numberStorable(TypeId thisType,
                              TypeId otherType,
                              ClassFactory cf)
Tell whether this numeric type can be stored into from the given type.

Parameters:
thisType - The TypeId of this type
otherType - The TypeId of the other type.
cf - A ClassFactory

getTypeId

protected TypeId getTypeId()
Get the TypeId that corresponds to this TypeCompiler.


getTypeCompiler

protected TypeCompiler getTypeCompiler(TypeId typeId)
Get the TypeCompiler that corresponds to the given TypeId.


setTypeId

void setTypeId(TypeId typeId)
Set the TypeCompiler that corresponds to the given TypeId.


getStoredFormatIdFromTypeId

protected int getStoredFormatIdFromTypeId()
Get the StoredFormatId from the corresponding TypeId.

Returns:
The StoredFormatId from the corresponding TypeId.

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.