Package org.apache.derby.iapi.types
Class SQLBlob
- java.lang.Object
-
- org.apache.derby.iapi.types.DataType
-
- org.apache.derby.iapi.types.SQLBinary
-
- org.apache.derby.iapi.types.SQLBlob
-
- All Implemented Interfaces:
java.io.Externalizable,java.io.Serializable,java.lang.Comparable,Formatable,Storable,StreamStorable,TypedFormat,BitDataValue,ConcatableDataValue,DataValueDescriptor,Orderable,VariableSizeDataValue
public class SQLBlob extends SQLBinary
SQLBlob satisfies the DataValueDescriptor, interfaces (i.e., OrderableDataType). It uses the SQLLongVarbit implementation, which implements a String holder, e.g. for storing a column value; it can be specified when constructed to not allow nulls. Nullability cannot be changed after construction.Because LOB types are not orderable, we'll override those methods...
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.derby.iapi.types.SQLBinary
_blobValue, dataValue, PAD, stream, streamValueLength
-
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
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DataValueDescriptorcloneValue(boolean forceMaterialization)Returns a clone of this BLOB value.(package private) intgetMaxMemoryUsage()Return max memory usage for a SQL BlobDataValueDescriptorgetNewNull()Get a new null value of the same type as this data value.java.lang.ObjectgetObject()Return a JDBC Blob.intgetTypeFormatId()Return my format identifier.java.lang.StringgetTypeName()Get the SQL name of the datatypebooleanhasStream()Tells if this BLOB value is, or will be, represented by a stream.private booleanisLengthLess()Tell if this blob is length less.voidnormalize(DataTypeDescriptor desiredType, DataValueDescriptor source)Normalization method - this method may be called when putting a value into a SQLBit, for example, when inserting into a SQLBit column.voidsetInto(java.sql.PreparedStatement ps, int position)Adding this method to ensure that super class' setInto method doesn't get called that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on.(package private) voidsetObject(java.lang.Object theValue)Set the value from an non-null object.voidsetValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable)Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.voidsetWidth(int desiredWidth, int desiredScale, boolean errorOnTrunc)inttypePrecedence()Each built-in type in JSQL has a precedence.-
Methods inherited from class org.apache.derby.iapi.types.SQLBinary
charLength, checkHostVariable, cloneHolder, compare, compare, concatenate, equals, estimateMemoryUsage, getBytes, getLength, getStream, getString, getTraceString, getValue, greaterOrEquals, greaterThan, hashCode, isNull, lessOrEquals, lessThan, loadStream, notEquals, objectNull, readExternal, restoreToNull, returnStream, setFrom, setStream, setValue, setValue, setValue, substring, toString, truncate, writeExternal
-
Methods inherited from class org.apache.derby.iapi.types.DataType
coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getShort, getTime, getTimestamp, getTypeName, in, invalidFormat, isNotNull, isNullOp, outOfRange, readExternalFromArray, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch, typeToBigDecimal
-
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
coalesce, compare, compare, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getShort, getTime, getTimestamp, in, isNotNull, isNullOp, readExternalFromArray, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, typeToBigDecimal
-
-
-
-
Method Detail
-
getTypeName
public java.lang.String getTypeName()
Description copied from interface:DataValueDescriptorGet the SQL name of the datatype- Returns:
- The SQL name of the datatype
-
getMaxMemoryUsage
int getMaxMemoryUsage()
Return max memory usage for a SQL Blob- Specified by:
getMaxMemoryUsagein classSQLBinary
-
hasStream
public boolean hasStream()
Tells if this BLOB value is, or will be, represented by a stream.- Specified by:
hasStreamin interfaceDataValueDescriptor- Overrides:
hasStreamin classDataType- Returns:
trueif the value is represented by a stream,falseotherwise.- See Also:
DataValueDescriptor.getStream(),StringDataValue.getStreamWithDescriptor()
-
cloneValue
public DataValueDescriptor cloneValue(boolean forceMaterialization)
Returns a clone of this BLOB value.Unlike the other binary types, BLOBs can be very large. We try to clone the underlying stream when possible to avoid having to materialize the value into memory.
- Specified by:
cloneValuein interfaceDataValueDescriptor- Overrides:
cloneValuein classSQLBinary- 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 this BLOB value.
- See Also:
DataValueDescriptor.cloneValue(boolean)
-
getNewNull
public DataValueDescriptor getNewNull()
Description copied from interface:DataValueDescriptorGet a new null value of the same type as this data value.- See Also:
DataValueDescriptor.getNewNull()
-
getObject
public java.lang.Object getObject() throws StandardExceptionReturn a JDBC Blob. Originally implemented to support DERBY-2201.- Specified by:
getObjectin interfaceDataValueDescriptor- Overrides:
getObjectin classDataType- Returns:
- The data value as a int.
- Throws:
StandardException- Thrown on error
-
normalize
public void normalize(DataTypeDescriptor desiredType, DataValueDescriptor source) throws StandardException
Normalization method - this method may be called when putting a value into a SQLBit, for example, when inserting into a SQLBit column. See NormalizeResultSet in execution.- Specified by:
normalizein interfaceDataValueDescriptor- Overrides:
normalizein classDataType- 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
-
setWidth
public void setWidth(int desiredWidth, int desiredScale, boolean errorOnTrunc) throws StandardException- Throws:
StandardException
-
getTypeFormatId
public int getTypeFormatId()
Return my format identifier.- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
- See Also:
TypedFormat.getTypeFormatId()
-
setValueFromResultSet
public void setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable) throws java.sql.SQLException, StandardExceptionDescription copied from interface:DataValueDescriptorSet the value based on the value for the specified DataValueDescriptor from the specified ResultSet.- 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 errorStandardException- See Also:
DataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)
-
typePrecedence
public int typePrecedence()
Description copied from class:DataTypeEach 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:
typePrecedencein interfaceDataValueDescriptor- Overrides:
typePrecedencein classDataType- Returns:
- The precedence of this type.
- See Also:
DataValueDescriptor.typePrecedence()
-
setInto
public void setInto(java.sql.PreparedStatement ps, int position) throws java.sql.SQLException, StandardExceptionDescription copied from class:SQLBinaryAdding this method to ensure that super class' setInto method doesn't get called that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on.- Specified by:
setIntoin interfaceDataValueDescriptor- Overrides:
setIntoin classSQLBinary- Throws:
java.sql.SQLException- thrown by the PreparedStatement objectStandardException- thrown by me accessing my value.
-
setObject
final void setObject(java.lang.Object theValue) throws StandardExceptionSet the value from an non-null object.- Overrides:
setObjectin classDataType- Throws:
StandardException
-
isLengthLess
private final boolean isLengthLess()
Tell if this blob is length less.- Returns:
trueif the length of the blob is not known,falseotherwise
-
-