org.apache.derby.iapi.types
Class SQLBlob

java.lang.Object
  extended by org.apache.derby.iapi.types.DataType
      extended by org.apache.derby.iapi.types.SQLBinary
          extended by 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
 
Constructor Summary
SQLBlob()
           
SQLBlob(java.sql.Blob val)
           
SQLBlob(byte[] val)
           
 
Method Summary
 DataValueDescriptor cloneValue(boolean forceMaterialization)
          Returns a clone of this BLOB value.
(package private)  int getMaxMemoryUsage()
          Return max memory usage for a SQL Blob
 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 datatype
 boolean hasStream()
          Tells if this BLOB value is, or will be, represented by a stream.
private  boolean isLengthLess()
          Tell if this blob is length less.
 void normalize(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.
 void setInto(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)  void setObject(java.lang.Object theValue)
          Set the value from an non-null object.
 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)
           
 int typePrecedence()
          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, getObject, getStream, getString, getTraceString, getValue, greaterOrEquals, greaterThan, hashCode, isNull, lessOrEquals, lessThan, loadStream, notEquals, objectNull, readExternal, readExternalFromArray, restoreToNull, returnStream, setFrom, setStream, setValue, setValue, setValue, substring, toString, 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, getNationalString, getShort, getTime, getTimestamp, getTypeName, in, invalidFormat, isNotNull, isNullOp, outOfRange, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, 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, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, typeToBigDecimal
 

Constructor Detail

SQLBlob

public SQLBlob()

SQLBlob

public SQLBlob(byte[] val)

SQLBlob

public SQLBlob(java.sql.Blob val)
Method Detail

getTypeName

public java.lang.String getTypeName()
Description copied from interface: DataValueDescriptor
Get 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:
getMaxMemoryUsage in class SQLBinary

hasStream

public boolean hasStream()
Tells if this BLOB value is, or will be, represented by a stream.

Specified by:
hasStream in interface DataValueDescriptor
Overrides:
hasStream in class DataType
Returns:
true if the value is represented by a stream, false otherwise.
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:
cloneValue in interface DataValueDescriptor
Overrides:
cloneValue in class SQLBinary
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 this BLOB value.
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.

See Also:
DataValueDescriptor.getNewNull()

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:
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

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,
                                  StandardException
Description copied from interface: DataValueDescriptor
Set 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 error
StandardException
See Also:
DataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)

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()

setInto

public void setInto(java.sql.PreparedStatement ps,
                    int position)
             throws java.sql.SQLException,
                    StandardException
Description copied from class: SQLBinary
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.

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

setObject

final void setObject(java.lang.Object theValue)
              throws StandardException
Set the value from an non-null object.

Overrides:
setObject in class DataType
Throws:
StandardException

isLengthLess

private final boolean isLengthLess()
Tell if this blob is length less.

Returns:
true if the length of the blob is not known, false otherwise

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.