Package org.apache.derby.iapi.types
Class SQLVarchar
- java.lang.Object
-
- org.apache.derby.iapi.types.DataType
-
- org.apache.derby.iapi.types.SQLChar
-
- org.apache.derby.iapi.types.SQLVarchar
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,java.lang.Comparable
,Formatable
,Storable
,StreamStorable
,TypedFormat
,ConcatableDataValue
,DataValueDescriptor
,Orderable
,StringDataValue
,VariableSizeDataValue
- Direct Known Subclasses:
CollatorSQLVarchar
,SQLClob
,SQLLongvarchar
public class SQLVarchar extends SQLChar
SQLVarchar represents a VARCHAR value with UCS_BASIC collation. SQLVarchar is mostly the same as SQLChar, so it is implemented as a subclass of SQLChar. Only those methods with different behavior are implemented here.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.derby.iapi.types.SQLChar
_clobValue, arg_passer, CHAR_HEADER_GENERATOR, RETURN_SPACE_THRESHOLD, stream
-
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.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.VariableSizeDataValue
IGNORE_PRECISION
-
-
Constructor Summary
Constructors Constructor Description SQLVarchar()
SQLVarchar(char[] val)
This is a special constructor used when we need to represent a password as a VARCHAR (see DERBY-866).SQLVarchar(java.lang.String val)
SQLVarchar(java.sql.Clob val)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DataValueDescriptor
cloneValue(boolean forceMaterialization)
Clone this DataValueDescriptor.DataValueDescriptor
getNewNull()
Get a new null value of the same type as this data value.int
getTypeFormatId()
Return my format identifier.java.lang.String
getTypeName()
Get the SQL name of the datatypeStringDataValue
getValue(java.text.RuleBasedCollator collatorForComparison)
Gets either SQLChar/SQLVarchar/SQLLongvarchar/SQLClob(base classes) or CollatorSQLChar/CollatorSQLVarchar/CollatorSQLLongvarch/CollatorSQLClob (subclasses).protected int
growBy()
returns the reasonable minimum amount by which the array can grow .protected void
normalize(DataTypeDescriptor desiredType, java.lang.String sourceValue)
void
normalize(DataTypeDescriptor desiredType, DataValueDescriptor source)
Normalization method - this method may be called when putting a value into a SQLVarchar, for example, when inserting into a SQLVarchar column.int
typePrecedence()
Each built-in type in JSQL has a precedence.-
Methods inherited from class org.apache.derby.iapi.types.SQLChar
ansiTrim, charLength, cloneHolder, compare, compare, concatenate, copyState, equals, estimateMemoryUsage, getBoolean, getByte, getCharArray, getCollationKey, getCollatorForCollation, getDate, getDate, getDouble, getFloat, getInt, getLength, getLocaleFinder, getLong, getNewVarchar, getObject, getRawDataAndZeroIt, getShort, getStream, getStreamHeaderGenerator, getStreamWithDescriptor, getString, getTime, getTime, getTimestamp, getTimestamp, getTraceString, greaterOrEquals, greaterThan, hashCode, hashCodeForCollation, hasNonBlankChars, isNull, lessOrEquals, lessThan, like, like, loadStream, locate, lower, notEquals, readExternal, readExternal, readExternalClobFromArray, readExternalFromArray, restoreToNull, returnStream, setBigDecimal, setFrom, setInto, setLocaleFinder, setObjectForCast, setStream, setStreamHeaderFormat, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValueFromResultSet, setWidth, stringCompare, stringCompare, stringCompare, substring, throwStreamingIOException, toString, typeToBigDecimal, upper, writeClobUTF, writeExternal, zeroRawData
-
Methods inherited from class org.apache.derby.iapi.types.DataType
checkHostVariable, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBytes, getTypeName, hasStream, in, invalidFormat, isNotNull, isNullOp, outOfRange, recycle, setInto, setObject, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch
-
-
-
-
Constructor Detail
-
SQLVarchar
public SQLVarchar()
-
SQLVarchar
public SQLVarchar(java.lang.String val)
-
SQLVarchar
public SQLVarchar(java.sql.Clob val)
-
SQLVarchar
public SQLVarchar(char[] val)
This is a special constructor used when we need to represent a password as a VARCHAR (see DERBY-866). If you need a general-purpose constructor for char[] values and you want to re-use this constructor, make sure to read the comment on the SQLChar( char[] ) constructor.
-
-
Method Detail
-
getTypeName
public java.lang.String getTypeName()
Description copied from interface:DataValueDescriptor
Get the SQL name of the datatype- Specified by:
getTypeName
in interfaceDataValueDescriptor
- Overrides:
getTypeName
in classSQLChar
- Returns:
- The SQL name of the datatype
-
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 ifforceMaterialization
is set tofalse
. An example is if you need to access the value you just read usingcloneValue
after the current transaction has ended, or after the source result set has been closed.- Specified by:
cloneValue
in interfaceDataValueDescriptor
- Overrides:
cloneValue
in classSQLChar
- Parameters:
forceMaterialization
- any streams representing the data value will be materialized iftrue
, the data value will be kept as a stream if possible iffalse
- 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 interfaceDataValueDescriptor
- Overrides:
getNewNull
in classSQLChar
- 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 interfaceStringDataValue
- Overrides:
getValue
in classSQLChar
- See Also:
StringDataValue.getValue(RuleBasedCollator)
-
getTypeFormatId
public int getTypeFormatId()
Return my format identifier.- Specified by:
getTypeFormatId
in interfaceTypedFormat
- Overrides:
getTypeFormatId
in classSQLChar
- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
- See Also:
TypedFormat.getTypeFormatId()
-
normalize
public void normalize(DataTypeDescriptor desiredType, DataValueDescriptor source) throws StandardException
Normalization method - this method may be called when putting a value into a SQLVarchar, for example, when inserting into a SQLVarchar column. See NormalizeResultSet in execution.- Specified by:
normalize
in interfaceDataValueDescriptor
- Overrides:
normalize
in classSQLChar
- Parameters:
desiredType
- The type to normalize the source column tosource
- 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
- Overrides:
normalize
in classSQLChar
- Throws:
StandardException
-
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 interfaceDataValueDescriptor
- Overrides:
typePrecedence
in classSQLChar
- Returns:
- The precedence of this type.
- See Also:
DataValueDescriptor.typePrecedence()
-
growBy
protected final 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.
-
-