Package com.mysql.cj.protocol.a.result
Class BinaryBufferRow
java.lang.Object
com.mysql.cj.protocol.result.AbstractResultsetRow
com.mysql.cj.protocol.a.result.AbstractBufferRow
com.mysql.cj.protocol.a.result.BinaryBufferRow
- All Implemented Interfaces:
ProtocolEntity,ResultsetRow,Row
public class BinaryBufferRow extends AbstractBufferRow
A BufferRow implementation that holds one row packet from a server-side prepared statement (which is re-used by the driver,
and thus saves memory allocations), and tries when possible to avoid allocations to break out the results as individual byte[]s.
Rows from a server-side prepared statement are encoded differently, so we have different ways of finding where each column is, and
unpacking them.
(this isn't possible when doing things like reading floating point values).
-
Field Summary
Fields inherited from class com.mysql.cj.protocol.a.result.AbstractBufferRow
homePosition, lastRequestedIndex, lastRequestedPos, rowFromServerFields inherited from class com.mysql.cj.protocol.result.AbstractResultsetRow
exceptionInterceptor, metadata, valueDecoder, wasNull -
Constructor Summary
Constructors Constructor Description BinaryBufferRow(NativePacketPayload buf, ColumnDefinition cd, ExceptionInterceptor exceptionInterceptor, ValueDecoder valueDecoder) -
Method Summary
Modifier and Type Method Description protected intfindAndSeekToOffset(int index)byte[]getBytes(int index)Returns the value at the given column as a byte array.booleangetNull(int columnIndex)Check whether a column is NULL and update the 'wasNull' status.<T> TgetValue(int columnIndex, ValueFactory<T> vf)Implementation of getValue() based on the underlying Buffer object.booleanisBinaryEncoded()voidsetBytes(int columnIndex, byte[] value)Sets the given byte array as a raw column value (only works currently with ByteArrayRow).RowsetMetadata(ColumnDefinition f)Set metadata to enable getValue functionality.Methods inherited from class com.mysql.cj.protocol.result.AbstractResultsetRow
getValueFromBytes, wasNull
-
Constructor Details
-
BinaryBufferRow
public BinaryBufferRow(NativePacketPayload buf, ColumnDefinition cd, ExceptionInterceptor exceptionInterceptor, ValueDecoder valueDecoder)
-
-
Method Details
-
isBinaryEncoded
public boolean isBinaryEncoded() -
findAndSeekToOffset
protected int findAndSeekToOffset(int index) -
getBytes
public byte[] getBytes(int index)Description copied from interface:RowReturns the value at the given column as a byte array. The bytes represent the raw values returned by the server.- Parameters:
index- index of column (starting at 0) to return from.- Returns:
- the value for the given column; if the value is SQL
NULL, the value returned isnull
-
getNull
public boolean getNull(int columnIndex)Check whether a column is NULL and update the 'wasNull' status.- Parameters:
columnIndex- of the column value (starting at 0) to check.- Returns:
- true if the column value is NULL, false if not.
-
setMetadata
Description copied from interface:RowSet metadata to enable getValue functionality.- Specified by:
setMetadatain interfaceRow- Overrides:
setMetadatain classAbstractResultsetRow- Parameters:
f-ColumnDefinition- Returns:
Row
-
getValue
Implementation of getValue() based on the underlying Buffer object. Delegate to superclass for decoding.- Type Parameters:
T- type to decode to- Parameters:
columnIndex- index of column to retrieve value from (0-indexed, not JDBC 1-indexed)vf- value factory used to create the return value after decoding- Returns:
- The return value from the value factory
-
setBytes
public void setBytes(int columnIndex, byte[] value)Description copied from interface:RowSets the given byte array as a raw column value (only works currently with ByteArrayRow).- Parameters:
columnIndex- index of the column (starting at 0) to set to.value- the (raw) value to set
-