org.apache.derby.iapi.types
Class SQLChar

java.lang.Object
  extended by org.apache.derby.iapi.types.DataType
      extended by org.apache.derby.iapi.types.SQLChar
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, java.lang.Comparable, Formatable, Storable, StreamStorable, TypedFormat, ConcatableDataValue, DataValueDescriptor, Orderable, StringDataValue, VariableSizeDataValue
Direct Known Subclasses:
CollatorSQLChar, SQLVarchar

public class SQLChar
extends DataType
implements StringDataValue, StreamStorable

The SQLChar represents a CHAR value with UCS_BASIC collation. SQLChar may be used directly by any code when it is guaranteed that the required collation is UCS_BASIC, e.g. system columns.

The state may be in char[], a String, a Clob, or an unread stream, depending on how the datatype was created.

Stream notes:

When the datatype comes from the database layer and the length of the bytes necessary to store the datatype on disk exceeds the size of a page of the container holding the data then the store returns a stream rather than reading all the bytes into a char[] or String. The hope is that the usual usage case is that data never need be expanded in the derby layer, and that client can just be given a stream that can be read a char at a time through the jdbc layer. Even though SQLchar's can't ever be this big, this code is shared by all the various character datatypes including SQLClob which is expected to usually larger than a page.

The state can also be a stream in the case of insert/update where the client has used a jdbc interface to set the value as a stream rather than char[]. In this case the hope is that the usual usage case is that stream never need be read until it is passed to store, read once, and inserted into the database.

See Also:
Serialized Form

Field Summary
protected  java.sql.Clob _clobValue
          The value as a user-created Clob
(package private)  char[][] arg_passer
           
private static int BASE_MEMORY_USAGE
           
private static char[] BLANKS
          Static array that can be used for blank padding.
protected static StreamHeaderGenerator CHAR_HEADER_GENERATOR
          Stream header generator for CHAR, VARCHAR and LONG VARCHAR.
private  java.text.CollationKey cKey
           
private static int GROWBY_FOR_CHAR
          when we know that the array needs to grow by at least one byte, it is not performant to grow by just one byte instead this amount is used to provide a reasonable growby size.
private  LocaleFinder localeFinder
           
private static char PAD
          The pad character (space).
private  char[] rawData
           
private  int rawLength
           
protected static int RETURN_SPACE_THRESHOLD
          threshold, that decides when we return space back to the VM see getString() where it is used
(package private)  java.io.InputStream stream
          The value as a stream in the on-disk format.
private  java.lang.String value
          Fields of the class
 
Fields inherited from interface org.apache.derby.iapi.types.StringDataValue
BOTH, COLLATION_DERIVATION_EXPLICIT, COLLATION_DERIVATION_IMPLICIT, COLLATION_DERIVATION_NONE, COLLATION_TYPE_TERRITORY_BASED, COLLATION_TYPE_TERRITORY_BASED_IDENTICAL, COLLATION_TYPE_TERRITORY_BASED_PRIMARY, COLLATION_TYPE_TERRITORY_BASED_SECONDARY, COLLATION_TYPE_TERRITORY_BASED_TERTIARY, COLLATION_TYPE_UCS_BASIC, LEADING, TRAILING
 
Fields inherited from interface org.apache.derby.iapi.types.DataValueDescriptor
UNKNOWN_LOGICAL_LENGTH
 
Fields inherited from interface org.apache.derby.iapi.types.Orderable
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN
 
Fields inherited from interface org.apache.derby.iapi.types.VariableSizeDataValue
IGNORE_PRECISION
 
Constructor Summary
SQLChar()
          no-arg constructor, required by Formattable.
SQLChar(java.sql.Clob val)
           
SQLChar(java.lang.String val)
           
 
Method Summary
 StringDataValue ansiTrim(int trimType, StringDataValue trimChar, StringDataValue result)
          The SQL Ansi trim function.
private static void appendBlanks(char[] ca, int offset, int howMany)
          Private/Protected methods of This class:
 NumberDataValue charLength(NumberDataValue result)
          This method implements the char_length function for char.
 DataValueDescriptor cloneHolder()
          Shallow clone a StreamStorable without objectifying.
 DataValueDescriptor cloneValue(boolean forceMaterialization)
          Clone this DataValueDescriptor.
 int compare(DataValueDescriptor other)
          Compare this Orderable with a given Orderable for the purpose of index positioning.
 boolean compare(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV)
          Compare this Orderable with a given Orderable for the purpose of qualification and sorting.
 StringDataValue concatenate(StringDataValue leftOperand, StringDataValue rightOperand, StringDataValue result)
          The SQL concatenation '||' operator.
protected  void copyState(SQLChar other)
           
 BooleanDataValue equals(DataValueDescriptor left, DataValueDescriptor right)
          The = operator as called from the language module, as opposed to the storage module.
 int estimateMemoryUsage()
          Estimate the memory usage in bytes of the data value and the overhead of the class.
private  void formatJDBCDate(java.util.Calendar cal, java.lang.StringBuffer sb)
           
private  void formatJDBCTime(java.util.Calendar cal, java.lang.StringBuffer sb)
           
 boolean getBoolean()
          Get Boolean from a SQLChar.
 byte getByte()
          Get Byte from a SQLChar.
 char[] getCharArray()
          Get a char array.
private  int getClobLength()
           
protected  java.text.CollationKey getCollationKey()
          This method gets called for the collation sensitive char classes ie CollatorSQLChar, CollatorSQLVarchar, CollatorSQLLongvarchar, CollatorSQLClob.
protected  java.text.RuleBasedCollator getCollatorForCollation()
           
 java.sql.Date getDate(java.util.Calendar cal)
          Get date from a SQLChar.
static java.sql.Date getDate(java.util.Calendar cal, java.lang.String str, LocaleFinder localeFinder)
          Static function to Get date from a string.
protected  java.text.DateFormat getDateFormat()
           
protected  java.text.DateFormat getDateFormat(java.util.Calendar cal)
           
 double getDouble()
          Get double from a SQLChar.
 float getFloat()
          Get float from a SQLChar.
 int getInt()
          Get int from a SQLChar.
 int getLength()
          Gets the length of the data value.
private  java.util.Locale getLocale()
           
protected  LocaleFinder getLocaleFinder()
           
 long getLong()
          Get long from a SQLChar.
 DataValueDescriptor getNewNull()
          Get a new null value of the same type as this data value.
protected  StringDataValue getNewVarchar()
          Get a SQLVarchar for a built-in string function.
 java.lang.Object getObject()
          Gets the value in the data value descriptor as a int.
 short getShort()
          Get Short from a SQLChar.
 java.io.InputStream getStream()
          Gets the value in the data stream descriptor as an InputStream.
 StreamHeaderGenerator getStreamHeaderGenerator()
          Returns the default stream header generator for the string data types.
 CharacterStreamDescriptor getStreamWithDescriptor()
          Returns a descriptor for the input stream for this character data value.
 java.lang.String getString()
          If possible, use getCharArray() if you don't really need a string.
 java.sql.Time getTime(java.util.Calendar cal)
          Get time from a SQLChar.
static java.sql.Time getTime(java.util.Calendar cal, java.lang.String str, LocaleFinder localeFinder)
          Static function to Get Time from a string.
protected  java.text.DateFormat getTimeFormat()
           
protected  java.text.DateFormat getTimeFormat(java.util.Calendar cal)
           
 java.sql.Timestamp getTimestamp(java.util.Calendar cal)
          Get Timestamp from a SQLChar.
static java.sql.Timestamp getTimestamp(java.util.Calendar cal, java.lang.String str, LocaleFinder localeFinder)
          Static function to Get Timestamp from a string.
protected  java.text.DateFormat getTimestampFormat()
           
protected  java.text.DateFormat getTimestampFormat(java.util.Calendar cal)
           
 java.lang.String getTraceString()
          Gets a trace representation for debugging.
 int getTypeFormatId()
          Return my format identifier.
 java.lang.String getTypeName()
          Get the SQL name of the datatype
 StringDataValue getValue(java.text.RuleBasedCollator collatorForComparison)
          Gets either SQLChar/SQLVarchar/SQLLongvarchar/SQLClob(base classes) or CollatorSQLChar/CollatorSQLVarchar/CollatorSQLLongvarch/CollatorSQLClob (subclasses).
 BooleanDataValue greaterOrEquals(DataValueDescriptor left, DataValueDescriptor right)
          The >= operator as called from the language module, as opposed to the storage module.
 BooleanDataValue greaterThan(DataValueDescriptor left, DataValueDescriptor right)
          The > operator as called from the language module, as opposed to the storage module.
protected  int growBy()
          returns the reasonable minimum amount by which the array can grow .
 int hashCode()
           
(package private)  int hashCodeForCollation()
          Hash code implementation for collator sensitive subclasses.
protected  void hasNonBlankChars(java.lang.String source, int start, int end)
           
 boolean isNull()
          see if the String value is null.
 BooleanDataValue lessOrEquals(DataValueDescriptor left, DataValueDescriptor right)
          The <= operator as called from the language module, as opposed to the storage module.
 BooleanDataValue lessThan(DataValueDescriptor left, DataValueDescriptor right)
          The < operator as called from the language module, as opposed to the storage module.
 BooleanDataValue like(DataValueDescriptor pattern)
          This method implements the like function for char (with no escape value).
 BooleanDataValue like(DataValueDescriptor pattern, DataValueDescriptor escape)
          This method implements the like function for char with an escape value.
 void loadStream()
          Set the value by reading the stream and converting it to an object form.
 NumberDataValue locate(StringDataValue searchFrom, NumberDataValue start, NumberDataValue result)
          This method implements the locate function for char.
 StringDataValue lower(StringDataValue result)
          Convert the string to lower case.
 void normalize(DataTypeDescriptor desiredType, DataValueDescriptor source)
          Normalization method - this method may be called when putting a value into a SQLChar, for example, when inserting into a SQLChar column.
protected  void normalize(DataTypeDescriptor desiredType, java.lang.String sourceValue)
           
 BooleanDataValue notEquals(DataValueDescriptor left, DataValueDescriptor right)
          The <> operator as called from the language module, as opposed to the storage module.
private  int rawGetClobLength()
           
 void readExternal(java.io.ObjectInput in)
           
protected  void readExternal(java.io.ObjectInput in, int utflen, int knownStrLen)
          Restores the data value from the source stream, materializing the value in memory.
protected  void readExternalClobFromArray(ArrayInputStream in, int charLen)
          Reads a CLOB from the source stream and materializes the value in a character array.
 void readExternalFromArray(ArrayInputStream in)
          Reads in a string from the specified data input stream.
private  void resetForMaterialization()
          Resets state after materializing value from an array.
 void restoreToNull()
          Restore this object to its (SQL)null value.
 java.io.InputStream returnStream()
          Public Methods of StreamStorable interface:
 void setBigDecimal(java.lang.Number bigDecimal)
          Only to be called when an application through JDBC is setting a SQLChar to a java.math.BigDecimal.
private  java.text.DateFormat setDateFormatCalendar(java.text.DateFormat df, java.util.Calendar cal)
           
protected  void setFrom(DataValueDescriptor theValue)
          Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.
 void setInto(java.sql.PreparedStatement ps, int position)
          Set the value into a PreparedStatement.
protected  void setLocaleFinder(LocaleFinder localeFinder)
           
 void setObjectForCast(java.lang.Object theValue, boolean instanceOfResultType, java.lang.String resultTypeClassName)
          Allow any Java type to be cast to a character type using Object.toString.
 void setStream(java.io.InputStream newStream)
          Set this value to the on-disk format stream.
 void setStreamHeaderFormat(java.lang.Boolean inSoftUpgradeMode)
          Sets the mode for the database being accessed.
 void setValue(boolean theValue)
          Set the value.
 void setValue(byte theValue)
          Set the value of this DataValueDescriptor to the given byte value At DataType level just throws an error lower classes will override
 void setValue(byte[] theValue)
          Set the value of this DataValueDescriptor.
 void setValue(java.sql.Clob theValue)
          Stuff a StringDataValue with a Clob.
 void setValue(java.sql.Date theValue, java.util.Calendar cal)
          Set the value of this DataValueDescriptor.
 void setValue(double theValue)
          Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will override
 void setValue(float theValue)
          Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will override
 void setValue(java.io.InputStream theStream, int valueLength)
          Set the value from the stream which is in the on-disk format.
 void setValue(int theValue)
          Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will override
 void setValue(long theValue)
          Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will override
 void setValue(short theValue)
          Set the value of this DataValueDescriptor to the given short value At DataType level just throws an error lower classes will override
 void setValue(java.lang.String theValue)
          Set the value of this DataValueDescriptor.
 void setValue(java.sql.Time theValue, java.util.Calendar cal)
          Set the value of this DataValueDescriptor.
 void setValue(java.sql.Timestamp theValue, java.util.Calendar cal)
          Set the value of this DataValueDescriptor.
 void setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable)
          Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.
 void setWidth(int desiredWidth, int desiredScale, boolean errorOnTrunc)
          Set the width of the to the desired value.
protected static int stringCompare(char[] op1, int leftlen, char[] op2, int rightlen)
          Compare two Strings using standard SQL semantics.
protected  int stringCompare(SQLChar char1, SQLChar char2)
          Compare two SQLChars.
protected static int stringCompare(java.lang.String op1, java.lang.String op2)
          Compare two Strings using standard SQL semantics.
 ConcatableDataValue substring(NumberDataValue start, NumberDataValue length, ConcatableDataValue result, int maxLen)
          The SQL substr() function.
protected  void throwStreamingIOException(java.io.IOException ioe)
          Wraps an IOException in a StandardException then throws the wrapping exception.
 java.lang.String toString()
           
private  java.lang.String trimInternal(int trimType, char trimChar, java.lang.String source)
          This function public for testing purposes.
 int typePrecedence()
          Each built-in type in JSQL has a precedence.
 int typeToBigDecimal()
          CHAR/VARCHAR/LONG VARCHAR implementation.
 StringDataValue upper(StringDataValue result)
          Convert the string to upper case.
protected  void writeClobUTF(java.io.ObjectOutput out)
          Writes the header and the user data for a CLOB to the destination stream.
 void writeExternal(java.io.ObjectOutput out)
          Writes a non-Clob data value to the modified UTF-8 format used by Derby.
private  void writeUTF(java.io.ObjectOutput out, int strLen, boolean isRaw, java.io.Reader characterReader)
          Writes the user data value to a stream in the modified UTF-8 format.
 
Methods inherited from class org.apache.derby.iapi.types.DataType
checkHostVariable, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBytes, getNationalString, getTypeName, hasStream, in, invalidFormat, isNotNull, isNullOp, outOfRange, recycle, setInto, setObject, setToNull, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.types.DataValueDescriptor
checkHostVariable, coalesce, compare, compare, getBytes, hasStream, in, isNotNull, isNullOp, recycle, setInto, setToNull, setValue, setValue, setValue, setValue, setValue
 

Field Detail

PAD

private static final char PAD
The pad character (space).

See Also:
Constant Field Values

RETURN_SPACE_THRESHOLD

protected static final int RETURN_SPACE_THRESHOLD
threshold, that decides when we return space back to the VM see getString() where it is used

See Also:
Constant Field Values

GROWBY_FOR_CHAR

private static final int GROWBY_FOR_CHAR
when we know that the array needs to grow by at least one byte, it is not performant to grow by just one byte instead this amount is used to provide a reasonable growby size.

See Also:
Constant Field Values

BASE_MEMORY_USAGE

private static final int BASE_MEMORY_USAGE

BLANKS

private static final char[] BLANKS
Static array that can be used for blank padding.


CHAR_HEADER_GENERATOR

protected static final StreamHeaderGenerator CHAR_HEADER_GENERATOR
Stream header generator for CHAR, VARCHAR and LONG VARCHAR. Currently, only one header format is used for these data types.


value

private java.lang.String value
Fields of the class


rawData

private char[] rawData

rawLength

private int rawLength

cKey

private java.text.CollationKey cKey

_clobValue

protected java.sql.Clob _clobValue
The value as a user-created Clob


stream

java.io.InputStream stream
The value as a stream in the on-disk format.


localeFinder

private LocaleFinder localeFinder

arg_passer

char[][] arg_passer
Constructor Detail

SQLChar

public SQLChar()
no-arg constructor, required by Formattable.


SQLChar

public SQLChar(java.lang.String val)

SQLChar

public SQLChar(java.sql.Clob val)
Method Detail

appendBlanks

private static void appendBlanks(char[] ca,
                                 int offset,
                                 int howMany)
Private/Protected methods of This class:


getBoolean

public boolean getBoolean()
                   throws StandardException
Get Boolean from a SQLChar.

Return false for only "0" or "false" for false. No case insensitivity. Everything else is true.

The above matches JCC.

Specified by:
getBoolean in interface DataValueDescriptor
Overrides:
getBoolean in class DataType
Returns:
The data value as a boolean.
Throws:
StandardException - Thrown on error
See Also:
DataValueDescriptor.getBoolean()

getByte

public byte getByte()
             throws StandardException
Get Byte from a SQLChar.

Uses java standard Byte.parseByte() to perform coercion.

Specified by:
getByte in interface DataValueDescriptor
Overrides:
getByte in class DataType
Returns:
The data value as a byte.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getByte()

getShort

public short getShort()
               throws StandardException
Get Short from a SQLChar.

Uses java standard Short.parseShort() to perform coercion.

Specified by:
getShort in interface DataValueDescriptor
Overrides:
getShort in class DataType
Returns:
The data value as a short.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getShort()

getInt

public int getInt()
           throws StandardException
Get int from a SQLChar.

Uses java standard Short.parseInt() to perform coercion.

Specified by:
getInt in interface DataValueDescriptor
Overrides:
getInt in class DataType
Returns:
The data value as a int.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getInt()

getLong

public long getLong()
             throws StandardException
Get long from a SQLChar.

Uses java standard Short.parseLong() to perform coercion.

Specified by:
getLong in interface DataValueDescriptor
Overrides:
getLong in class DataType
Returns:
The data value as a long.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getLong()

getFloat

public float getFloat()
               throws StandardException
Get float from a SQLChar.

Uses java standard Float.floatValue() to perform coercion.

Specified by:
getFloat in interface DataValueDescriptor
Overrides:
getFloat in class DataType
Returns:
The data value as a float.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getFloat()

getDouble

public double getDouble()
                 throws StandardException
Get double from a SQLChar.

Uses java standard Double.doubleValue() to perform coercion.

Specified by:
getDouble in interface DataValueDescriptor
Overrides:
getDouble in class DataType
Returns:
The data value as a double.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getDouble()

getDate

public java.sql.Date getDate(java.util.Calendar cal)
                      throws StandardException
Get date from a SQLChar.

Specified by:
getDate in interface DataValueDescriptor
Overrides:
getDate in class DataType
Parameters:
cal - calendar for object creation
Returns:
The data value as a java.sql.Date.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getDate(java.util.Calendar)

getDate

public static java.sql.Date getDate(java.util.Calendar cal,
                                    java.lang.String str,
                                    LocaleFinder localeFinder)
                             throws StandardException
Static function to Get date from a string.

Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getDate(java.util.Calendar)

getTime

public java.sql.Time getTime(java.util.Calendar cal)
                      throws StandardException
Get time from a SQLChar.

Specified by:
getTime in interface DataValueDescriptor
Overrides:
getTime in class DataType
Parameters:
cal - calendar for object creation
Returns:
The data value as a java.sql.Time.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getTime(java.util.Calendar)

getTime

public static java.sql.Time getTime(java.util.Calendar cal,
                                    java.lang.String str,
                                    LocaleFinder localeFinder)
                             throws StandardException
Static function to Get Time from a string.

Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getTime(java.util.Calendar)

getTimestamp

public java.sql.Timestamp getTimestamp(java.util.Calendar cal)
                                throws StandardException
Get Timestamp from a SQLChar.

Specified by:
getTimestamp in interface DataValueDescriptor
Overrides:
getTimestamp in class DataType
Parameters:
cal - calendar for object creation
Returns:
The data value as a java.sql.Timestamp.
Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getTimestamp(java.util.Calendar)

getTimestamp

public static java.sql.Timestamp getTimestamp(java.util.Calendar cal,
                                              java.lang.String str,
                                              LocaleFinder localeFinder)
                                       throws StandardException
Static function to Get Timestamp from a string.

Throws:
StandardException - thrown on failure to convert
See Also:
DataValueDescriptor.getTimestamp(java.util.Calendar)

returnStream

public java.io.InputStream returnStream()
Public Methods of StreamStorable interface:

Specified by:
returnStream in interface StreamStorable

setStream

public void setStream(java.io.InputStream newStream)
Set this value to the on-disk format stream.

Specified by:
setStream in interface StreamStorable

loadStream

public void loadStream()
                throws StandardException
Description copied from interface: StreamStorable
Set the value by reading the stream and converting it to an object form.

Specified by:
loadStream in interface StreamStorable
Throws:
StandardException - on error

getObject

public java.lang.Object getObject()
                           throws StandardException
Description copied from class: DataType
Gets the value in the data value descriptor as a int. Throws an exception if the data value is not receivable as a int.

Specified by:
getObject in interface DataValueDescriptor
Overrides:
getObject in class DataType
Returns:
The data value as a int.
Throws:
StandardException - Thrown on error

getStream

public java.io.InputStream getStream()
                              throws StandardException
Description copied from class: DataType
Gets the value in the data stream descriptor as an InputStream. Throws an exception if the data value is not receivable as a stream.

Specified by:
getStream in interface DataValueDescriptor
Overrides:
getStream in class DataType
Returns:
The data value as an InputStream.
Throws:
StandardException - Thrown on error
See Also:
DataValueDescriptor.hasStream(), StringDataValue.getStreamWithDescriptor()

getStreamWithDescriptor

public CharacterStreamDescriptor getStreamWithDescriptor()
                                                  throws StandardException
Returns a descriptor for the input stream for this character data value.

Specified by:
getStreamWithDescriptor in interface StringDataValue
Returns:
Nothing, throws exception.
Throws:
StandardException - if the value isn't represented by a stream
See Also:
SQLClob.getStreamWithDescriptor()

typeToBigDecimal

public int typeToBigDecimal()
                     throws StandardException
CHAR/VARCHAR/LONG VARCHAR implementation. Convert to a BigDecimal using getString.

Specified by:
typeToBigDecimal in interface DataValueDescriptor
Overrides:
typeToBigDecimal in class DataType
Returns:
Types.CHAR for String conversion through getString Types.DECIMAL for BigDecimal through getObject or Types.BIGINT for long conversion through getLong
Throws:
StandardException - Conversion is not possible

getLength

public int getLength()
              throws StandardException
Description copied from interface: DataValueDescriptor
Gets the length of the data value. The meaning of this is implementation-dependent. For string types, it is the number of characters in the string. For numeric types, it is the number of bytes used to store the number. This is the actual length of this value, not the length of the type it was defined as. For example, a VARCHAR value may be shorter than the declared VARCHAR (maximum) length.

Specified by:
getLength in interface DataValueDescriptor
Returns:
The length of the data value
Throws:
StandardException - Thrown on error

throwStreamingIOException

protected void throwStreamingIOException(java.io.IOException ioe)
                                  throws StandardException
Wraps an IOException in a StandardException then throws the wrapping exception.

Parameters:
ioe - the IOException to wrap
Throws:
StandardException - the wrapping exception

getTypeName

public java.lang.String getTypeName()
Description copied from interface: DataValueDescriptor
Get the SQL name of the datatype

Specified by:
getTypeName in interface DataValueDescriptor
Returns:
The SQL name of the datatype

getString

public java.lang.String getString()
                           throws StandardException
If possible, use getCharArray() if you don't really need a string. getString() will cause an extra char array to be allocated when it calls the the String() constructor (the first time through), so may be cheaper to use getCharArray().

Specified by:
getString in interface DataValueDescriptor
Returns:
The data value as a String.
Throws:
StandardException - Thrown on error

getCharArray

public char[] getCharArray()
                    throws StandardException
Get a char array. Typically, this is a simple getter that is cheaper than getString() because we always need to create a char array when doing I/O. Use this instead of getString() where reasonable.

WARNING: may return a character array that has spare characters at the end. MUST be used in conjunction with getLength() to be safe.

Specified by:
getCharArray in interface StringDataValue
Throws:
StandardException - Thrown on error

getTypeFormatId

public int getTypeFormatId()
Return my format identifier.

Specified by:
getTypeFormatId in interface TypedFormat
Returns:
The identifier. (A UUID stuffed in an array of 16 bytes).
See Also:
TypedFormat.getTypeFormatId()

isNull

public boolean isNull()
see if the String value is null.

Specified by:
isNull in interface Storable
Returns:
true if the value is null and false otherwise.
See Also:
Storable.isNull()

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Writes a non-Clob data value to the modified UTF-8 format used by Derby. The maximum stored size is based upon the UTF format used to stored the String. The format consists of a two byte length field and a maximum number of three bytes for each character.
This puts an upper limit on the length of a stored String. The maximum stored length is 65535, these leads to the worse case of a maximum string length of 21844 ((65535 - 2) / 3).
Strings with stored length longer than 64K is handled with the following format: (1) 2 byte length: will be assigned 0. (2) UTF formated string data. (3) terminate the string with the following 3 bytes: first byte is: +---+---+---+---+---+---+---+---+ | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | +---+---+---+---+---+---+---+---+ second byte is: +---+---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +---+---+---+---+---+---+---+---+ third byte is: +---+---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +---+---+---+---+---+---+---+---+ The UTF format: Writes a string to the underlying output stream using UTF-8 encoding in a machine-independent manner.

First, two bytes are written to the output stream as if by the writeShort method giving the number of bytes to follow. This value is the number of bytes actually written out, not the length of the string. Following the length, each character of the string is output, in sequence, using the UTF-8 encoding for the character.

Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException - if an I/O error occurs.
java.io.IOException - thrown by writeUTF
Since:
JDK1.0
See Also:
DataInputStream

writeUTF

private final void writeUTF(java.io.ObjectOutput out,
                            int strLen,
                            boolean isRaw,
                            java.io.Reader characterReader)
                     throws java.io.IOException
Writes the user data value to a stream in the modified UTF-8 format.

Parameters:
out - destination stream
strLen - string length of the value
isRaw - true if the source is rawData, false if the source is value
characterReader - Reader from _clobValue if it exists
Throws:
java.io.IOException - if writing to the destination stream fails

writeClobUTF

protected final void writeClobUTF(java.io.ObjectOutput out)
                           throws java.io.IOException
Writes the header and the user data for a CLOB to the destination stream.

Parameters:
out - destination stream
Throws:
java.io.IOException - if writing to the destination stream fails

readExternalFromArray

public void readExternalFromArray(ArrayInputStream in)
                           throws java.io.IOException
Reads in a string from the specified data input stream. The string has been encoded using a modified UTF-8 format.

The first two bytes are read as if by readUnsignedShort. This value gives the number of following bytes that are in the encoded string, not the length of the resulting string. The following bytes are then interpreted as bytes encoding characters in the UTF-8 format and are converted into characters.

This method blocks until all the bytes are read, the end of the stream is detected, or an exception is thrown.

Specified by:
readExternalFromArray in interface DataValueDescriptor
Parameters:
in - a data input stream.
Throws:
java.io.EOFException - if the input stream reaches the end before all the bytes.
java.io.IOException - if an I/O error occurs.
java.io.UTFDataFormatException - if the bytes do not represent a valid UTF-8 encoding of a Unicode string.
See Also:
DataInputStream.readUnsignedShort(), Externalizable.readExternal(java.io.ObjectInput)

readExternalClobFromArray

protected void readExternalClobFromArray(ArrayInputStream in,
                                         int charLen)
                                  throws java.io.IOException
Reads a CLOB from the source stream and materializes the value in a character array.

Parameters:
in - source stream
charLen - the char length of the value, or 0 if unknown
Throws:
java.io.IOException - if reading from the source fails

resetForMaterialization

private void resetForMaterialization()
Resets state after materializing value from an array.


readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

protected void readExternal(java.io.ObjectInput in,
                            int utflen,
                            int knownStrLen)
                     throws java.io.IOException
Restores the data value from the source stream, materializing the value in memory.

Parameters:
in - the source stream
utflen - the byte length, or 0 if unknown
knownStrLen - the char length, or 0 if unknown
Throws:
java.io.UTFDataFormatException - if an encoding error is detected
java.io.IOException - if reading the stream fails

growBy

protected int growBy()
returns the reasonable minimum amount by which the array can grow . See readExternal. when we know that the array needs to grow by at least one byte, it is not performant to grow by just one byte instead this amount is used to provide a resonable growby size.

Returns:
minimum reasonable growby size

restoreToNull

public void restoreToNull()
Description copied from interface: Storable
Restore this object to its (SQL)null value.

Specified by:
restoreToNull in interface Storable
See Also:
Storable.restoreToNull()

compare

public boolean compare(int op,
                       DataValueDescriptor other,
                       boolean orderedNulls,
                       boolean unknownRV)
                throws StandardException
Description copied from interface: DataValueDescriptor
Compare this Orderable with a given Orderable for the purpose of qualification and sorting. The caller gets to determine how nulls should be treated - they can either be ordered values or unknown values.

Specified by:
compare in interface DataValueDescriptor
Overrides:
compare in class DataType
Parameters:
op - Orderable.ORDER_OP_EQUALS means do an = comparison. Orderable.ORDER_OP_LESSTHAN means compare this < other. Orderable.ORDER_OP_LESSOREQUALS means compare this <= other.
other - The DataValueDescriptor to compare this one to.
orderedNulls - True means to treat nulls as ordered values, that is, treat SQL null as equal to null, and less than all other values. False means to treat nulls as unknown values, that is, the result of any comparison with a null is the UNKNOWN truth value.
unknownRV - The return value to use if the result of the comparison is the UNKNOWN truth value. In other words, if orderedNulls is false, and a null is involved in the comparison, return unknownRV. This parameter is not used orderedNulls is true.
Returns:
true if the comparison is true (duh!)
Throws:
StandardException - thrown on error

compare

public int compare(DataValueDescriptor other)
            throws StandardException
Description copied from interface: DataValueDescriptor
Compare this Orderable with a given Orderable for the purpose of index positioning. This method treats nulls as ordered values - that is, it treats SQL null as equal to null and greater than all other values.

Specified by:
compare in interface DataValueDescriptor
Parameters:
other - The Orderable to compare this one to.
Returns:
<0 - this Orderable is less than other. 0 - this Orderable equals other. >0 - this Orderable is greater than other. The code should not explicitly look for -1, or 1.
Throws:
StandardException - thrown on error

cloneHolder

public DataValueDescriptor cloneHolder()
Shallow clone a StreamStorable without objectifying. This is used to avoid unnecessary objectifying of a stream object. The only difference of this method from cloneValue is this method does not objectify a stream.

Specified by:
cloneHolder in interface DataValueDescriptor
Overrides:
cloneHolder in class DataType
Returns:
A shallow clone.

cloneValue

public DataValueDescriptor cloneValue(boolean forceMaterialization)
Description copied from interface: DataValueDescriptor
Clone this DataValueDescriptor. Results in a new object that has the same value as this but can be modified independently.

Even though the objects can be modified independently regardless of the value of forceMaterialization, both the clone and the original may be dependent on the store state if forceMaterialization is set to false. An example is if you need to access the value you just read using cloneValue after the current transaction has ended, or after the source result set has been closed.

Specified by:
cloneValue in interface DataValueDescriptor
Parameters:
forceMaterialization - any streams representing the data value will be materialized if true, the data value will be kept as a stream if possible if false
Returns:
A clone of the DataValueDescriptor with the same initial value as this.
See Also:
DataValueDescriptor.cloneValue(boolean)

getNewNull

public DataValueDescriptor getNewNull()
Description copied from interface: DataValueDescriptor
Get a new null value of the same type as this data value.

Specified by:
getNewNull in interface DataValueDescriptor
See Also:
DataValueDescriptor.getNewNull()

getValue

public StringDataValue getValue(java.text.RuleBasedCollator collatorForComparison)
Description copied from interface: StringDataValue
Gets either SQLChar/SQLVarchar/SQLLongvarchar/SQLClob(base classes) or CollatorSQLChar/CollatorSQLVarchar/CollatorSQLLongvarch/CollatorSQLClob (subclasses). Whether this method returns the base class or the subclass depends on the value of the RuleBasedCollator. If RuleBasedCollator is null, then the object returned would be baseclass otherwise it would be subcalss.

Specified by:
getValue in interface StringDataValue
See Also:
StringDataValue.getValue(RuleBasedCollator)

setValueFromResultSet

public final void setValueFromResultSet(java.sql.ResultSet resultSet,
                                        int colNumber,
                                        boolean isNullable)
                                 throws java.sql.SQLException
Description copied from interface: DataValueDescriptor
Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.

Specified by:
setValueFromResultSet in interface DataValueDescriptor
Parameters:
resultSet - The specified ResultSet.
colNumber - The 1-based column # into the resultSet.
isNullable - Whether or not the column is nullable (No need to call wasNull() if not)
Throws:
java.sql.SQLException - Thrown on error
See Also:
DataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)

setInto

public final void setInto(java.sql.PreparedStatement ps,
                          int position)
                   throws java.sql.SQLException,
                          StandardException
Set the value into a PreparedStatement.

Specified by:
setInto in interface DataValueDescriptor
Overrides:
setInto in class DataType
Throws:
java.sql.SQLException - thrown by the PreparedStatement object
StandardException - thrown by me accessing my value.

setValue

public void setValue(java.sql.Clob theValue)
Description copied from interface: StringDataValue
Stuff a StringDataValue with a Clob.

Specified by:
setValue in interface StringDataValue

setValue

public void setValue(java.lang.String theValue)
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The BigDecimal value to set this DataValueDescriptor to

setValue

public void setValue(boolean theValue)
              throws StandardException
Description copied from class: DataType
Set the value. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - Contains the boolean value to set this to
Throws:
StandardException

setValue

public void setValue(int theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(double theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(float theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(short theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given short value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(long theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(byte theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor to the given byte value At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The value to set this DataValueDescriptor to
Throws:
StandardException - Thrown on error

setValue

public void setValue(byte[] theValue)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The byte value to set this DataValueDescriptor to
Throws:
StandardException

setBigDecimal

public void setBigDecimal(java.lang.Number bigDecimal)
                   throws StandardException
Only to be called when an application through JDBC is setting a SQLChar to a java.math.BigDecimal.

Specified by:
setBigDecimal in interface DataValueDescriptor
Overrides:
setBigDecimal in class DataType
Parameters:
bigDecimal - required to be a BigDecimal or null.
Throws:
StandardException

setValue

public void setValue(java.sql.Date theValue,
                     java.util.Calendar cal)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The Date value to set this DataValueDescriptor to
cal - The time zone from the calendar is used to construct the database date value
Throws:
StandardException - Thrown on error

setValue

public void setValue(java.sql.Time theValue,
                     java.util.Calendar cal)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The Time value to set this DataValueDescriptor to
cal - The time zone from the calendar is used to construct the database time value
Throws:
StandardException - Thrown on error

setValue

public void setValue(java.sql.Timestamp theValue,
                     java.util.Calendar cal)
              throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The Timestamp value to set this DataValueDescriptor to
cal - The time zone from the calendar is used to construct the database timestamp value
Throws:
StandardException - Thrown on error

formatJDBCDate

private void formatJDBCDate(java.util.Calendar cal,
                            java.lang.StringBuffer sb)

formatJDBCTime

private void formatJDBCTime(java.util.Calendar cal,
                            java.lang.StringBuffer sb)

setValue

public final void setValue(java.io.InputStream theStream,
                           int valueLength)
Set the value from the stream which is in the on-disk format.

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theStream - On disk format of the stream
valueLength - length of the logical value in characters, or DataValueDescriptor.UNKNOWN_LOGICAL_LENGTH

setObjectForCast

public void setObjectForCast(java.lang.Object theValue,
                             boolean instanceOfResultType,
                             java.lang.String resultTypeClassName)
                      throws StandardException
Allow any Java type to be cast to a character type using Object.toString.

Specified by:
setObjectForCast in interface DataValueDescriptor
Overrides:
setObjectForCast in class DataType
Parameters:
theValue - The new value
instanceOfResultType - Whether or not the new value is an instanceof the result type.
resultTypeClassName - The class name of the resulting (declared) type (for error messages only).
Throws:
StandardException - thrown on failure
See Also:
DataValueDescriptor.setObjectForCast(java.lang.Object, boolean, java.lang.String)

setFrom

protected void setFrom(DataValueDescriptor theValue)
                throws StandardException
Description copied from class: DataType
Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.

Overrides:
setFrom in class DataType
Parameters:
theValue - The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.
Throws:
StandardException

normalize

public void normalize(DataTypeDescriptor desiredType,
                      DataValueDescriptor source)
               throws StandardException
Normalization method - this method may be called when putting a value into a SQLChar, for example, when inserting into a SQLChar column. See NormalizeResultSet in execution.

Specified by:
normalize in interface DataValueDescriptor
Overrides:
normalize in class DataType
Parameters:
desiredType - The type to normalize the source column to
source - The value to normalize
Throws:
StandardException - Thrown for null into non-nullable column, and for truncation error

normalize

protected void normalize(DataTypeDescriptor desiredType,
                         java.lang.String sourceValue)
                  throws StandardException
Throws:
StandardException

hasNonBlankChars

protected final void hasNonBlankChars(java.lang.String source,
                                      int start,
                                      int end)
                               throws StandardException
Throws:
StandardException

setWidth

public void setWidth(int desiredWidth,
                     int desiredScale,
                     boolean errorOnTrunc)
              throws StandardException
Set the width of the to the desired value. Used when CASTing. Ideally we'd recycle normalize(), but the behavior is different (we issue a warning instead of an error, and we aren't interested in nullability).

Specified by:
setWidth in interface VariableSizeDataValue
Parameters:
desiredWidth - the desired length
desiredScale - the desired scale (ignored)
errorOnTrunc - throw an error on truncation
Throws:
StandardException - Thrown when errorOnTrunc is true and when a shrink will truncate non-white spaces.

equals

public BooleanDataValue equals(DataValueDescriptor left,
                               DataValueDescriptor right)
                        throws StandardException
The = operator as called from the language module, as opposed to the storage module.

Specified by:
equals in interface DataValueDescriptor
Overrides:
equals in class DataType
Parameters:
left - The value on the left side of the =
right - The value on the right side of the =
Returns:
A SQL boolean value telling whether the two parameters are equal
Throws:
StandardException - Thrown on error

notEquals

public BooleanDataValue notEquals(DataValueDescriptor left,
                                  DataValueDescriptor right)
                           throws StandardException
The <> operator as called from the language module, as opposed to the storage module.

Specified by:
notEquals in interface DataValueDescriptor
Overrides:
notEquals in class DataType
Parameters:
left - The value on the left side of the <>
right - The value on the right side of the <>
Returns:
A SQL boolean value telling whether the two parameters are not equal
Throws:
StandardException - Thrown on error

lessThan

public BooleanDataValue lessThan(DataValueDescriptor left,
                                 DataValueDescriptor right)
                          throws StandardException
The < operator as called from the language module, as opposed to the storage module.

Specified by:
lessThan in interface DataValueDescriptor
Overrides:
lessThan in class DataType
Parameters:
left - The value on the left side of the <
right - The value on the right side of the <
Returns:
A SQL boolean value telling whether the first operand is less than the second operand
Throws:
StandardException - Thrown on error

greaterThan

public BooleanDataValue greaterThan(DataValueDescriptor left,
                                    DataValueDescriptor right)
                             throws StandardException
The > operator as called from the language module, as opposed to the storage module.

Specified by:
greaterThan in interface DataValueDescriptor
Overrides:
greaterThan in class DataType
Parameters:
left - The value on the left side of the >
right - The value on the right side of the >
Returns:
A SQL boolean value telling whether the first operand is greater than the second operand
Throws:
StandardException - Thrown on error

lessOrEquals

public BooleanDataValue lessOrEquals(DataValueDescriptor left,
                                     DataValueDescriptor right)
                              throws StandardException
The <= operator as called from the language module, as opposed to the storage module.

Specified by:
lessOrEquals in interface DataValueDescriptor
Overrides:
lessOrEquals in class DataType
Parameters:
left - The value on the left side of the <=
right - The value on the right side of the <=
Returns:
A SQL boolean value telling whether the first operand is less than or equal to the second operand
Throws:
StandardException - Thrown on error

greaterOrEquals

public BooleanDataValue greaterOrEquals(DataValueDescriptor left,
                                        DataValueDescriptor right)
                                 throws StandardException
The >= operator as called from the language module, as opposed to the storage module.

Specified by:
greaterOrEquals in interface DataValueDescriptor
Overrides:
greaterOrEquals in class DataType
Parameters:
left - The value on the left side of the >=
right - The value on the right side of the >=
Returns:
A SQL boolean value telling whether the first operand is greater than or equal to the second operand
Throws:
StandardException - Thrown on error

charLength

public NumberDataValue charLength(NumberDataValue result)
                           throws StandardException
This method implements the char_length function for char.

Specified by:
charLength in interface ConcatableDataValue
Parameters:
result - The result of a previous call to this method, null if not called yet
Returns:
A SQLInteger containing the length of the char value
Throws:
StandardException - Thrown on error
See Also:
ConcatableDataValue.charLength(NumberDataValue)

concatenate

public StringDataValue concatenate(StringDataValue leftOperand,
                                   StringDataValue rightOperand,
                                   StringDataValue result)
                            throws StandardException
Description copied from interface: StringDataValue
The SQL concatenation '||' operator.

Specified by:
concatenate in interface StringDataValue
Parameters:
leftOperand - String on the left hand side of '||'
rightOperand - String on the right hand side of '||'
result - The result of a previous call to this method, null if not called yet.
Returns:
A ConcatableDataValue containing the result of the '||'
Throws:
StandardException - Thrown on error
See Also:
StringDataValue.concatenate(org.apache.derby.iapi.types.StringDataValue, org.apache.derby.iapi.types.StringDataValue, org.apache.derby.iapi.types.StringDataValue)

like

public BooleanDataValue like(DataValueDescriptor pattern)
                      throws StandardException
This method implements the like function for char (with no escape value).

Specified by:
like in interface StringDataValue
Parameters:
pattern - The pattern to use
Returns:
A SQL boolean value telling whether the first operand is like the second operand
Throws:
StandardException - Thrown on error

like

public BooleanDataValue like(DataValueDescriptor pattern,
                             DataValueDescriptor escape)
                      throws StandardException
This method implements the like function for char with an escape value.

Specified by:
like in interface StringDataValue
Parameters:
pattern - The pattern to use
escape - the escape character
Returns:
A SQL boolean value telling whether the first operand is like the second operand
Throws:
StandardException - Thrown on error

locate

public NumberDataValue locate(StringDataValue searchFrom,
                              NumberDataValue start,
                              NumberDataValue result)
                       throws StandardException
This method implements the locate function for char.

Specified by:
locate in interface StringDataValue
Parameters:
searchFrom - - The string to search from
start - - The position to search from in string searchFrom
result - - The object to return Note: use getString() to get the string to search for.
Returns:
The position in searchFrom the fist occurrence of this.value. 0 is returned if searchFrom does not contain this.value.
Throws:
StandardException - Thrown on error

substring

public ConcatableDataValue substring(NumberDataValue start,
                                     NumberDataValue length,
                                     ConcatableDataValue result,
                                     int maxLen)
                              throws StandardException
The SQL substr() function.

Specified by:
substring in interface ConcatableDataValue
Parameters:
start - Start of substr
length - Length of substr
result - The result of a previous call to this method, null if not called yet.
maxLen - Maximum length of the result
Returns:
A ConcatableDataValue containing the result of the substr()
Throws:
StandardException - Thrown on error

trimInternal

private java.lang.String trimInternal(int trimType,
                                      char trimChar,
                                      java.lang.String source)
This function public for testing purposes.

Parameters:
trimType - Type of trim (LEADING, TRAILING, or BOTH)
trimChar - Character to trim
source - String from which to trim trimChar
Returns:
A String containing the result of the trim.

ansiTrim

public StringDataValue ansiTrim(int trimType,
                                StringDataValue trimChar,
                                StringDataValue result)
                         throws StandardException
Description copied from interface: StringDataValue
The SQL Ansi trim function.

Specified by:
ansiTrim in interface StringDataValue
Parameters:
trimType - Type of trim (LEADING, TRAILING, or BOTH)
trimChar - Character to trim from this SQLChar (may be null)
result - The result of a previous call to this method, null if not called yet.
Returns:
A StringDataValue containing the result of the trim.
Throws:
StandardException

upper

public StringDataValue upper(StringDataValue result)
                      throws StandardException
Description copied from interface: StringDataValue
Convert the string to upper case.

Specified by:
upper in interface StringDataValue
Parameters:
result - The result (reusable - allocate if null).
Returns:
The string converted to upper case.
Throws:
StandardException - Thrown on error
See Also:
StringDataValue.upper(org.apache.derby.iapi.types.StringDataValue)

lower

public StringDataValue lower(StringDataValue result)
                      throws StandardException
Description copied from interface: StringDataValue
Convert the string to lower case.

Specified by:
lower in interface StringDataValue
Parameters:
result - The result (reusable - allocate if null).
Returns:
The string converted to lower case.
Throws:
StandardException - Thrown on error
See Also:
StringDataValue.lower(org.apache.derby.iapi.types.StringDataValue)

typePrecedence

public int typePrecedence()
Description copied from class: DataType
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.

Specified by:
typePrecedence in interface DataValueDescriptor
Overrides:
typePrecedence in class DataType
Returns:
The precedence of this type.
See Also:
DataValueDescriptor.typePrecedence()

stringCompare

protected static int stringCompare(java.lang.String op1,
                                   java.lang.String op2)
Compare two Strings using standard SQL semantics.

Parameters:
op1 - The first String
op2 - The second String
Returns:
-1 - op1 < op2 0 - op1 == op2 1 - op1 > op2

stringCompare

protected int stringCompare(SQLChar char1,
                            SQLChar char2)
                     throws StandardException
Compare two SQLChars.

Throws:
StandardException - Thrown on error

stringCompare

protected static int stringCompare(char[] op1,
                                   int leftlen,
                                   char[] op2,
                                   int rightlen)
Compare two Strings using standard SQL semantics.

Parameters:
op1 - The first String
op2 - The second String
Returns:
-1 - op1 < op2 0 - op1 == op2 1 - op1 > op2

getCollationKey

protected java.text.CollationKey getCollationKey()
                                          throws StandardException
This method gets called for the collation sensitive char classes ie CollatorSQLChar, CollatorSQLVarchar, CollatorSQLLongvarchar, CollatorSQLClob. These collation sensitive chars need to have the collation key in order to do string comparison. And the collation key is obtained using the Collator object that these classes already have.

Returns:
CollationKey obtained using Collator on the string
Throws:
StandardException

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

hashCodeForCollation

int hashCodeForCollation()
Hash code implementation for collator sensitive subclasses.


getNewVarchar

protected StringDataValue getNewVarchar()
                                 throws StandardException
Get a SQLVarchar for a built-in string function.

Returns:
a SQLVarchar.
Throws:
StandardException - Thrown on error

setLocaleFinder

protected void setLocaleFinder(LocaleFinder localeFinder)

getLocale

private java.util.Locale getLocale()
                            throws StandardException
Throws:
StandardException - Thrown on error

getCollatorForCollation

protected java.text.RuleBasedCollator getCollatorForCollation()
                                                       throws StandardException
Throws:
StandardException

getLocaleFinder

protected LocaleFinder getLocaleFinder()

getDateFormat

protected java.text.DateFormat getDateFormat()
                                      throws StandardException
Throws:
StandardException

getTimeFormat

protected java.text.DateFormat getTimeFormat()
                                      throws StandardException
Throws:
StandardException

getTimestampFormat

protected java.text.DateFormat getTimestampFormat()
                                           throws StandardException
Throws:
StandardException

getDateFormat

protected java.text.DateFormat getDateFormat(java.util.Calendar cal)
                                      throws StandardException
Throws:
StandardException

getTimeFormat

protected java.text.DateFormat getTimeFormat(java.util.Calendar cal)
                                      throws StandardException
Throws:
StandardException

getTimestampFormat

protected java.text.DateFormat getTimestampFormat(java.util.Calendar cal)
                                           throws StandardException
Throws:
StandardException

setDateFormatCalendar

private java.text.DateFormat setDateFormatCalendar(java.text.DateFormat df,
                                                   java.util.Calendar cal)

estimateMemoryUsage

public int estimateMemoryUsage()
Description copied from interface: DataValueDescriptor
Estimate the memory usage in bytes of the data value and the overhead of the class.

Specified by:
estimateMemoryUsage in interface DataValueDescriptor
Returns:
the estimated memory usage

copyState

protected void copyState(SQLChar other)

getTraceString

public java.lang.String getTraceString()
                                throws StandardException
Gets a trace representation for debugging.

Specified by:
getTraceString in interface DataValueDescriptor
Overrides:
getTraceString in class DataType
Returns:
a trace representation of this SQL Type.
Throws:
StandardException - if getting the data value fails.
See Also:
DataValueDescriptor.getString()

getStreamHeaderGenerator

public StreamHeaderGenerator getStreamHeaderGenerator()
Returns the default stream header generator for the string data types.

Specified by:
getStreamHeaderGenerator in interface StringDataValue
Returns:
A stream header generator.
See Also:
StringDataValue.setStreamHeaderFormat(java.lang.Boolean)

setStreamHeaderFormat

public void setStreamHeaderFormat(java.lang.Boolean inSoftUpgradeMode)
Sets the mode for the database being accessed.

Specified by:
setStreamHeaderFormat in interface StringDataValue
Parameters:
inSoftUpgradeMode - true if the database is being accessed in soft upgrade mode, false if not, and null if unknown

getClobLength

private int getClobLength()
                   throws StandardException
Throws:
StandardException

rawGetClobLength

private int rawGetClobLength()
                      throws java.sql.SQLException
Throws:
java.sql.SQLException

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.