|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.derby.impl.jdbc.ConnectionChild
org.apache.derby.impl.jdbc.EmbedBlob
Implements java.sql.Blob (see the JDBC 2.0 spec). A blob sits on top of a BINARY, VARBINARY or LONG VARBINARY column. If its data is small (less than 1 page) it is a byte array taken from the SQLBit class. If it is large (more than 1 page) it is a long column in the database. The long column is accessed as a stream, and is implemented in store as an OverflowInputStream. The Resetable interface allows sending messages to that stream to initialize itself (reopen its container and lock the corresponding row) and to reset itself to the beginning. NOTE: In the case that the data is large, it is represented as a stream. This stream is returned to the user in the getBinaryStream() method. This means that we have limited control over the state of the stream, since the user can read bytes from it at any time. Thus all methods here reset the stream to the beginning before doing any work. CAVEAT: The methods may not behave correctly if a user sets up multiple threads and sucks data from the stream (returned from getBinaryStream()) at the same time as calling the Blob methods.
Supports
Field Summary | |
private BinaryToRawStream |
biStream
|
private static int |
BLOB_BUF_SIZE
|
private byte[] |
buf
|
protected static boolean |
CLOSE
|
protected InternalDriver |
factory
Factory for JDBC objects to be created. |
private boolean |
isBytes
|
protected EmbedConnection |
localConn
|
private byte[] |
myBytes
|
private java.io.InputStream |
myStream
|
protected static boolean |
NOCLOSE
|
private long |
pos
|
Constructor Summary | |
protected |
EmbedBlob(DataValueDescriptor dvd,
EmbedConnection con)
|
Method Summary | |
private boolean |
checkMatch(java.sql.Blob pattern)
|
private boolean |
checkMatch(byte[] pattern)
|
protected void |
commitIfAutoCommit()
Perform a commit if autocommit is enabled. |
protected void |
commitIfNeeded()
Perform a commit if one is needed. |
protected void |
finalize()
|
java.io.InputStream |
getBinaryStream()
Retrieves the BLOB designated by this
Blob instance as a stream. |
byte[] |
getBytes(long startPos,
int length)
Returns as an array of bytes part or all of the BLOB
value that this Blob object designates. |
protected java.util.Calendar |
getCal()
Get and save a unique calendar object for this JDBC object. |
protected java.lang.Object |
getConnectionSynchronization()
Return an object to be used for connection synchronization. |
ContextManager |
getContextManager()
|
Database |
getDatabase()
|
protected EmbedConnection |
getEmbedConnection()
Return a reference to the EmbedConnection |
protected java.sql.SQLException |
handleException(java.lang.Throwable t)
Handle any exception. |
protected java.sql.SQLException |
handleException(java.lang.Throwable t,
boolean close)
Handle any exception. |
private java.sql.SQLException |
handleMyExceptions(java.lang.Throwable t)
|
long |
length()
Returns the number of bytes in the BLOB value
designated by this Blob object. |
protected void |
needCommit()
If Autocommit is on, note that a commit is needed. |
protected java.sql.SQLException |
newSQLException(java.lang.String messageId)
|
protected java.sql.SQLException |
newSQLException(java.lang.String messageId,
java.lang.Object arg1)
|
protected java.sql.SQLException |
newSQLException(java.lang.String messageId,
java.lang.Object arg1,
java.lang.Object arg2)
|
long |
position(java.sql.Blob pattern,
long start)
Determines the byte position in the BLOB value
designated by this Blob object at which
pattern begins. |
long |
position(byte[] pattern,
long start)
Determines the byte position at which the specified byte pattern begins within the BLOB
value that this Blob object represents. |
private int |
read()
|
protected void |
restoreContextStack()
Setup the context stack (a.k.a. context manager) for this connection. |
java.io.OutputStream |
setBinaryStream(long pos)
JDBC 3.0 Retrieves a stream that can be used to write to the BLOB value that this Blob object represents. |
int |
setBytes(long pos,
byte[] bytes)
JDBC 3.0 Writes the given array of bytes to the BLOB value that this Blob object represents, starting at position pos, and returns the number of bytes written. |
int |
setBytes(long pos,
byte[] bytes,
int offset,
int len)
JDBC 3.0 Writes all or part of the given array of byte array to the BLOB value that this Blob object represents and returns the number of bytes written. |
private void |
setPosition(long newPos)
|
protected void |
setupContextStack()
Setup the context stack (a.k.a. context manager) for this connection. |
void |
truncate(long len)
JDBC 3.0 Truncates the BLOB value that this Blob object represents to be len bytes in length. |
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private boolean isBytes
private java.io.InputStream myStream
private byte[] myBytes
private long pos
private BinaryToRawStream biStream
private static int BLOB_BUF_SIZE
private byte[] buf
protected static final boolean CLOSE
protected static final boolean NOCLOSE
protected EmbedConnection localConn
protected final InternalDriver factory
Constructor Detail |
protected EmbedBlob(DataValueDescriptor dvd, EmbedConnection con) throws StandardException
Method Detail |
private void setPosition(long newPos) throws StandardException, java.io.IOException
StandardException
java.io.IOException
private int read() throws java.io.IOException
java.io.IOException
public long length() throws java.sql.SQLException
BLOB
value
designated by this Blob
object.
length
in interface java.sql.Blob
BLOB
in bytes
java.sql.SQLException
- if there is an error accessing the
length of the BLOB
public byte[] getBytes(long startPos, int length) throws java.sql.SQLException
BLOB
value that this Blob
object designates. The byte
array contains up to length
consecutive bytes
starting at position pos
.
getBytes
in interface java.sql.Blob
length
- is the number of consecutive bytes to be copied
length
consecutive bytes from the BLOB
value designated
by this Blob
object, starting with the
byte at position pos
.
java.sql.SQLException
- if there is an error accessing the
BLOB
NOTE: return new byte[0] if startPos is too largepublic java.io.InputStream getBinaryStream() throws java.sql.SQLException
BLOB
designated by this
Blob
instance as a stream.
getBinaryStream
in interface java.sql.Blob
BLOB
data
java.sql.SQLException
- if there is an error accessing the
BLOB
public long position(byte[] pattern, long start) throws java.sql.SQLException
pattern
begins within the BLOB
value that this Blob
object represents. The
search for patternstart
position
in interface java.sql.Blob
pattern
- the byte array for which to searchstart
- the position at which to begin searching; the
first position is 1
java.sql.SQLException
- if there is an error accessing the
BLOB
private boolean checkMatch(byte[] pattern) throws java.io.IOException
java.io.IOException
public long position(java.sql.Blob pattern, long start) throws java.sql.SQLException
BLOB
value
designated by this Blob
object at which
pattern
begins. The search begins at position
start
.
position
in interface java.sql.Blob
pattern
- the Blob
object designating
the BLOB
value for which to searchstart
- the position in the BLOB
value
at which to begin searching; the first position is 1
java.sql.SQLException
- if there is an error accessing the
BLOB
private boolean checkMatch(java.sql.Blob pattern) throws java.io.IOException
java.io.IOException
private java.sql.SQLException handleMyExceptions(java.lang.Throwable t) throws java.sql.SQLException
java.sql.SQLException
protected void finalize()
public int setBytes(long pos, byte[] bytes) throws java.sql.SQLException
setBytes
in interface java.sql.Blob
pos
- - the position in the BLOB object at which to start writingbytes
- - the array of bytes to be written to the BLOB value that this
Blob object represents
java.sql.SQLException
- Feature not implemented for now.public int setBytes(long pos, byte[] bytes, int offset, int len) throws java.sql.SQLException
setBytes
in interface java.sql.Blob
pos
- - the position in the BLOB object at which to start writingbytes
- - the array of bytes to be written to the BLOB value that this
Blob object representsoffset
- - the offset into the array bytes at which to start reading
the bytes to be setlen
- - the number of bytes to be written to the BLOB value from the
array of bytes bytes
java.sql.SQLException
- Feature not implemented for now.public java.io.OutputStream setBinaryStream(long pos) throws java.sql.SQLException
setBinaryStream
in interface java.sql.Blob
pos
- - the position in the BLOB object at which to start writing
java.sql.SQLException
- Feature not implemented for now.public void truncate(long len) throws java.sql.SQLException
truncate
in interface java.sql.Blob
len
- - the length, in bytes, to which the BLOB value that this Blob
object represents should be truncated
java.sql.SQLException
- Feature not implemented for now.protected final EmbedConnection getEmbedConnection()
protected final java.lang.Object getConnectionSynchronization()
protected final java.sql.SQLException handleException(java.lang.Throwable t) throws java.sql.SQLException
java.sql.SQLException
- thrown if can't handleEmbedConnection.handleException(java.lang.Throwable)
protected final java.sql.SQLException handleException(java.lang.Throwable t, boolean close) throws java.sql.SQLException
java.sql.SQLException
- thrown if can't handleEmbedConnection.handleException(java.lang.Throwable)
protected final void needCommit()
EmbedConnection.needCommit
protected final void commitIfNeeded() throws java.sql.SQLException
java.sql.SQLException
- thrown on failureEmbedConnection.commitIfNeeded()
protected final void commitIfAutoCommit() throws java.sql.SQLException
java.sql.SQLException
- thrown on failureEmbedConnection.commitIfNeeded()
protected final void setupContextStack() throws java.sql.SQLException
java.sql.SQLException
- thrown on failureEmbedConnection.setupContextStack()
protected final void restoreContextStack() throws java.sql.SQLException
java.sql.SQLException
- thrown on failureEmbedConnection.restoreContextStack()
public ContextManager getContextManager()
public Database getDatabase()
protected java.util.Calendar getCal()
protected java.sql.SQLException newSQLException(java.lang.String messageId)
protected java.sql.SQLException newSQLException(java.lang.String messageId, java.lang.Object arg1)
protected java.sql.SQLException newSQLException(java.lang.String messageId, java.lang.Object arg1, java.lang.Object arg2)
|
Built on Mon 2007-06-04 09:58:47+0400, from revision ??? | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |