Top Description Inners Fields Constructors Methods
com.mysql.cj.jdbc

public Class BlobFromLocator

extends Object
implements Blob
Class Inheritance
All Implemented Interfaces
java.sql.Blob
Imports
java.io.BufferedInputStream, .IOException, .InputStream, .OutputStream, java.sql.SQLException, java.util.ArrayList, .List, com.mysql.cj.Messages, com.mysql.cj.conf.PropertyKey, com.mysql.cj.exceptions.ExceptionInterceptor, .MysqlErrorNumbers, com.mysql.cj.jdbc.exceptions.SQLError, com.mysql.cj.jdbc.result.ResultSetImpl, com.mysql.cj.result.Field

The representation (mapping) in the JavaTM programming language of an SQL BLOB value. An SQL BLOB is a built-in type that stores a Binary Large Object as a column value in a row of a database table. The driver implements Blob using an SQL locator(BLOB), which means that a Blob object contains a logical pointer to the SQL BLOB data rather than the data itself. A Blob object is valid for the duration of the transaction in which is was created. Methods in the interfaces ResultSet, CallableStatement, and PreparedStatement, such as getBlob and setBlob allow a programmer to access an SQL BLOB value. The Blob interface provides methods for getting the length of an SQL BLOB (Binary Large Object) value, for materializing a BLOB value on the client, and for determining the position of a pattern of bytes within a BLOB value. This class is new in the JDBC 2.0 API.

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv class

Field Summary

Modifier and TypeField and Description
private String
private ResultSetImpl
creatorResultSet

The ResultSet that created this BLOB

private ExceptionInterceptor
private int
private int
private List<String>
private List<String>
private String
private String

Constructor Summary

AccessConstructor and Description
public
BlobFromLocator(ResultSetImpl
result set
creatorResultSetToSet
,
int
column index
blobColumnIndex
,
ExceptionInterceptor
exception interceptor
exceptionInterceptor
)

Creates an updatable BLOB that can update in-place

Method Summary

Modifier and TypeMethod and Description
pack-priv PreparedStatement
public void
free()

Implements java.sql.Blob.free.

This method frees the Blob object and releases the resources that it holds.

public InputStream
getBinaryStream()

Implements java.sql.Blob.getBinaryStream.

Retrieves the BLOB value designated by this Blob instance as a stream.

public InputStream
getBinaryStream(long
the offset to the first byte of the partial value to be retrieved. The first byte in the Blob is at position 1.
pos
,
long
the length in bytes of the partial value to be retrieved
length
)

Implements java.sql.Blob.getBinaryStream.

Returns an InputStream object that contains a partial Blob value, starting with the byte specified by pos, which is length bytes in length.

public byte[]
getBytes(long
the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1
pos
,
int
the number of consecutive bytes to be copied; the value for length must be 0 or greater
length
)

Implements java.sql.Blob.getBytes.

Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes.

pack-priv byte[]
getBytesInternal(PreparedStatement pStmt, long pos, int length)

public long
length()

Implements java.sql.Blob.length.

Returns the number of bytes in the BLOB value designated by this Blob object.

private void
public long
position(Blob
the Blob object designating the BLOB value for which to search
pattern
,
long
the position in the BLOB value at which to begin searching; the first position is 1
start
)

Implements java.sql.Blob.position.

Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins.

public long
position(byte[]
the byte array for which to search
pattern
,
long
the position at which to begin searching; the first position is 1
start
)

Implements java.sql.Blob.position.

Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents.

public OutputStream
setBinaryStream(long
the position in the BLOB value at which to start writing; the first position is 1
indexToWriteAt
)

Implements java.sql.Blob.setBinaryStream.

Retrieves a stream that can be used to write to the BLOB value that this Blob object represents.

public int
setBytes(long
the position in the BLOB object at which to start writing; the first position is 1
writeAt
,
byte[]
the array of bytes to be written to this BLOB object
bytes
,
int
the offset into the array bytes at which to start reading the bytes to be set
offset
,
int
the number of bytes to be written to the BLOB value from the array of bytes bytes
length
)

Implements java.sql.Blob.setBytes.

Writes all or part of the given byte array to the BLOB value that this Blob object represents and returns the number of bytes written.

public int
setBytes(long
the position in the BLOB object at which to start writing; the first position is 1
writeAt
,
byte[]
the array of bytes to be written to the BLOB value that this Blob object represents
bytes
)

Implements java.sql.Blob.setBytes.

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.

public void
truncate(long
the length, in bytes, to which the BLOB value that this Blob object represents should be truncated
length
)

Implements java.sql.Blob.truncate.

Truncates the BLOB value that this Blob object represents to be len bytes in length.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

blobColumnNameback to summary
private String blobColumnName
creatorResultSetback to summary
private ResultSetImpl creatorResultSet

The ResultSet that created this BLOB

exceptionInterceptorback to summary
private ExceptionInterceptor exceptionInterceptor
numColsInResultSetback to summary
private int numColsInResultSet
numPrimaryKeysback to summary
private int numPrimaryKeys
primaryKeyColumnsback to summary
private List<String> primaryKeyColumns
primaryKeyValuesback to summary
private List<String> primaryKeyValues
quotedIdback to summary
private String quotedId
tableNameback to summary
private String tableName

Constructor Detail

BlobFromLocatorback to summary
public BlobFromLocator(ResultSetImpl creatorResultSetToSet, int blobColumnIndex, ExceptionInterceptor exceptionInterceptor) throws SQLException

Creates an updatable BLOB that can update in-place

Parameters
creatorResultSetToSet:ResultSetImpl

result set

blobColumnIndex:int

column index

exceptionInterceptor:ExceptionInterceptor

exception interceptor

Exceptions
SQLException:
if an error occurs

Method Detail

createGetBytesStatementback to summary
pack-priv PreparedStatement createGetBytesStatement() throws SQLException
freeback to summary
public void free() throws SQLException

Implements java.sql.Blob.free.

Doc from java.sql.Blob.free.

This method frees the Blob object and releases the resources that it holds. The object is invalid once the free method is called.

After free has been called, any attempt to invoke a method other than free will result in an SQLException being thrown. If free is called multiple times, the subsequent calls to free are treated as a no-op.

Annotations
@Override
Exceptions
SQLException:
if an error occurs releasing the Blob's resources
getBinaryStreamback to summary
public InputStream getBinaryStream() throws SQLException

Implements java.sql.Blob.getBinaryStream.

Doc from java.sql.Blob.getBinaryStream.

Retrieves the BLOB value designated by this Blob instance as a stream.

Returns:InputStream

a stream containing the BLOB data

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value
getBinaryStreamback to summary
public InputStream getBinaryStream(long pos, long length) throws SQLException

Implements java.sql.Blob.getBinaryStream.

Doc from java.sql.Blob.getBinaryStream.

Returns an InputStream object that contains a partial Blob value, starting with the byte specified by pos, which is length bytes in length.

Parameters
pos:long

the offset to the first byte of the partial value to be retrieved. The first byte in the Blob is at position 1.

length:long

the length in bytes of the partial value to be retrieved

Returns:InputStream

InputStream through which the partial Blob value can be read.

Annotations
@Override
Exceptions
SQLException:
if pos is less than 1 or if pos is greater than the number of bytes in the Blob or if pos + length is greater than the number of bytes in the Blob
getBytesback to summary
public byte[] getBytes(long pos, int length) throws SQLException

Implements java.sql.Blob.getBytes.

Doc from java.sql.Blob.getBytes.

Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes. This byte array contains up to length consecutive bytes starting at position pos.

Parameters
pos:long

the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1

length:int

the number of consecutive bytes to be copied; the value for length must be 0 or greater

Returns:byte[]

a byte array containing up to length consecutive bytes from the BLOB value designated by this Blob object, starting with the byte at position pos

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value; if pos is less than 1 or length is less than 0
getBytesInternalback to summary
pack-priv byte[] getBytesInternal(PreparedStatement pStmt, long pos, int length) throws SQLException
lengthback to summary
public long length() throws SQLException

Implements java.sql.Blob.length.

Doc from java.sql.Blob.length.

Returns the number of bytes in the BLOB value designated by this Blob object.

Returns:long

length of the BLOB in bytes

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the length of the BLOB
notEnoughInformationInQueryback to summary
private void notEnoughInformationInQuery() throws SQLException
positionback to summary
public long position(Blob pattern, long start) throws SQLException

Implements java.sql.Blob.position.

Doc from java.sql.Blob.position.

Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins. The search begins at position start.

Parameters
pattern:Blob

the Blob object designating the BLOB value for which to search

start:long

the position in the BLOB value at which to begin searching; the first position is 1

Returns:long

the position at which the pattern begins, else -1

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if start is less than 1
positionback to summary
public long position(byte[] pattern, long start) throws SQLException

Implements java.sql.Blob.position.

Doc from java.sql.Blob.position.

Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents. The search for pattern begins at position start.

Parameters
pattern:byte[]

the byte array for which to search

start:long

the position at which to begin searching; the first position is 1

Returns:long

the position at which the pattern appears, else -1

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB or if start is less than 1
setBinaryStreamback to summary
public OutputStream setBinaryStream(long indexToWriteAt) throws SQLException

Implements java.sql.Blob.setBinaryStream.

Doc from java.sql.Blob.setBinaryStream.

Retrieves a stream that can be used to write to the BLOB value that this Blob object represents. The stream begins at position pos. The bytes written to the stream will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing to the stream, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
indexToWriteAt:long

the position in the BLOB value at which to start writing; the first position is 1

Returns:OutputStream

a java.io.OutputStream object to which data can be written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
setBytesback to summary
public int setBytes(long writeAt, byte[] bytes, int offset, int length) throws SQLException

Implements java.sql.Blob.setBytes.

Doc from java.sql.Blob.setBytes.

Writes all or part of the given byte array to the BLOB value that this Blob object represents and returns the number of bytes written. Writing starts at position pos in the BLOB value; len bytes from the given byte array are written. The array of bytes will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing the array of bytes, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
writeAt:long

the position in the BLOB object at which to start writing; the first position is 1

bytes:byte[]

the array of bytes to be written to this BLOB object

offset:int

the offset into the array bytes at which to start reading the bytes to be set

length:int

the number of bytes to be written to the BLOB value from the array of bytes bytes

Returns:int

the number of bytes written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
setBytesback to summary
public int setBytes(long writeAt, byte[] bytes) throws SQLException

Implements java.sql.Blob.setBytes.

Doc from java.sql.Blob.setBytes.

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. The array of bytes will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing the array of bytes, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
writeAt:long

the position in the BLOB object at which to start writing; the first position is 1

bytes:byte[]

the array of bytes to be written to the BLOB value that this Blob object represents

Returns:int

the number of bytes written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
truncateback to summary
public void truncate(long length) throws SQLException

Implements java.sql.Blob.truncate.

Doc from java.sql.Blob.truncate.

Truncates the BLOB value that this Blob object represents to be len bytes in length.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
length:long

the length, in bytes, to which the BLOB value that this Blob object represents should be truncated

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if len is less than 0
com.mysql.cj.jdbc back to summary

pack-priv Class BlobFromLocator.LocatorInputStream

extends InputStream
Class Inheritance

Field Summary

Modifier and TypeField and Description
pack-priv long
pack-priv long
pack-priv PreparedStatement

Constructor Summary

AccessConstructor and Description
pack-priv
pack-priv
LocatorInputStream(long pos, long len)

Method Summary

Modifier and TypeMethod and Description
public void
close()

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Closes this input stream and releases any system resources associated with the stream.

public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

public int
read(byte[]
the buffer into which the data is read.
b
,
int
the start offset in array b at which the data is written.
off
,
int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.

public int
read(byte[]
the buffer into which the data is read.
b
)

Overrides java.io.InputStream.read.

Reads some number of bytes from the input stream and stores them into the buffer array b.

Inherited from java.io.InputStream:
availablemarkmarkSupportednullInputStreamreadAllBytesreadNBytesreadNBytesresetskipskipNBytestransferTo

Field Detail

currentPositionInBlobback to summary
pack-priv long currentPositionInBlob
lengthback to summary
pack-priv long length
pStmtback to summary
pack-priv PreparedStatement pStmt

Constructor Detail

LocatorInputStreamback to summary
pack-priv LocatorInputStream() throws SQLException
LocatorInputStreamback to summary
pack-priv LocatorInputStream(long pos, long len) throws SQLException
Annotations
@SuppressWarnings:synthetic-access

Method Detail

closeback to summary
public void close() throws IOException

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Doc from java.io.InputStream.close.

Closes this input stream and releases any system resources associated with the stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read(byte[] b, int off, int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Annotations
@Override
Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
readback to summary
public int read(byte[] b) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads some number of bytes from the input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

If the length of b is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at the end of the file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[0], the next one into b[1], and so on. The number of bytes read is, at most, equal to the length of b. Let k be the number of bytes actually read; these bytes will be stored in elements b[0] through b[k-1], leaving elements b[k] through b[b.length-1] unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Annotations
@Override
Exceptions
IOException:
If the first byte cannot be read for any reason other than the end of the file, if the input stream has been closed, or if some other I/O error occurs.