Module org.firebirdsql.jaybird
Package org.firebirdsql.gds.ng.wire.version16

# Class V16Statement

java.lang.Object
org.firebirdsql.gds.ng.AbstractFbStatement
org.firebirdsql.gds.ng.wire.AbstractFbWireStatement
org.firebirdsql.gds.ng.wire.version10.V10Statement
org.firebirdsql.gds.ng.wire.version11.V11Statement
org.firebirdsql.gds.ng.wire.version12.V12Statement
org.firebirdsql.gds.ng.wire.version13.V13Statement
org.firebirdsql.gds.ng.wire.version16.V16Statement

All Implemented Interfaces:
  `AutoCloseable`, `FbStatement`, `ExceptionListenable`, `FbWireStatement`

Direct Known Subclasses:
  `V18Statement`

public class V16Statement extends V13Statement

Since:
  4.0
Author:
  Mark Rotteveel

## Field Summary

### Fields inherited from class org.firebirdsql.gds.ng.wire.version11.V11Statement

`asyncFetchStatus`

### Fields inherited from class org.firebirdsql.gds.ng.AbstractFbStatement

`exceptionListenerDispatcher, statementListenerDispatcher`

## Constructor Summary

Constructors
Constructor
Description
`V16Statement(FbWireDatabase database)`
Creates a new instance of V16Statement for the specified database.

## Method Summary

Modifier and Type
Method
Description
`void`
`batchCancel()`
Cancels the server side batch (that is, clear any rows batched on the server).
`BatchCompletion`
`batchExecute()`
Execute the batch on the server.
`BatchParameterBuffer`
`createBatchParameterBuffer()`
Creates a `BatchParameterBuffer` instance compatible with this protocol version.
`void`
`deferredBatchCreate(FbBatchConfig batchConfig, DeferredResponse<Void> onResponse)`
Sends batch create with deferred response processing.
`void`
`deferredBatchRelease(DeferredResponse<Void> onResponse)`
Closes (releases) the batch on the server with deferred response processing.
`void`
`deferredBatchSend(Collection<RowValue> rowValues, DeferredResponse<Void> onResponse)`
Sends batch data with deferred response processing.
`protected void`
`sendBatchCreate(FbBatchConfig batchConfig)`
`protected void`
`sendBatchMsg(XdrOutputStream xdrOut, RowDescriptor parameterDescriptor, Collection<RowValue> rowValues)`
`protected void`
`sendExecute(int operation, RowValue parameters)`
Sends the execute (for `op_execute` or `op_execute2`) to the database.
`boolean`
`supportBatchUpdates()`
Reports whether this statement implementation supports server-side batch updates.

### Methods inherited from class org.firebirdsql.gds.ng.wire.version13.V13Statement

`readSqlData, writeSqlData, writeSqlData`

### Methods inherited from class org.firebirdsql.gds.ng.wire.version11.V11Statement

`asyncFetchRows, completeAsyncFetch, fetchRows, free, prepare, reset`

### Methods inherited from class org.firebirdsql.gds.ng.wire.version10.V10Statement

`doFreePacket, execute, getDefaultSqlInfoSize, getMaxSqlInfoSize, processAllocateResponse, processExecuteResponse, processExecuteSingletonResponse, processFetchResponse, processFetchResponse, processFreeResponse, processPrepareResponse, readColumnData, sendAllocate, sendFetch, sendFree, sendPrepare, setCursorNameImpl, writeColumnData`

### Methods inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireStatement

`calculateBlr, calculateBlr, close, emptyRowDescriptor, getBlrCalculator, getDatabase, getHandle, getInfo, getSqlInfo, getXdrIn, getXdrOut, isValidTransactionClass, setHandle, withLock, wrapDeferredResponse`

### Methods inherited from class org.firebirdsql.gds.ng.AbstractFbStatement

`addExceptionListener, addStatementListener, addWeakStatementListener, checkFetchSize, checkStatementHasOpenCursor, checkStatementValid, checkStatementValid, closeCursor, closeCursor, createExecutionPlanProcessor, createSqlCountProcessor, ensureClosedCursor, fetchScroll, fetchScrollImpl, forceState, getAllowedTimeout, getCursorInfo, getCursorInfo, getCursorInfoImpl, getCursorName, getExecutionPlan, getExplainedExecutionPlan, getParameterDescriptionInfoRequestItems, getParameterDescriptor, getRowDescriptor, getSqlCounts, getSqlInfo, getState, getStatementInfoRequestItems, getStatementWarningCallback, getTimeout, getTransaction, getTransactionListener, getType, hasFetched, hasFields, hasSingletonResult, isAfterLast, isBeforeFirst, isPrepareAllowed, parseStatementInfo, queueRowData, removeExceptionListener, removeStatementListener, reset, resetAll, setAfterLast, setBeforeFirst, setCursorName, setParameterDescriptor, setRowDescriptor, setTimeout, setTransaction, setType, signalAsyncFetchComplete, signalAsyncFetchStart, signalExecute, signalFetch, switchState, unprepare, validateParameters`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable

`addExceptionListener, removeExceptionListener`

### Methods inherited from interface org.firebirdsql.gds.ng.FbStatement

`addStatementListener, addWeakStatementListener, clearCursorFlag, close, closeCursor, closeCursor, emptyRowDescriptor, ensureClosedCursor, fetchScroll, getCursorInfo, getCursorInfo, getDatabase, getExecutionPlan, getExplainedExecutionPlan, getHandle, getParameterDescriptor, getRowDescriptor, getSqlCounts, getSqlInfo, getSqlInfo, getState, getTimeout, getTransaction, getType, hasFetched, isCursorFlagSet, removeStatementListener, setCursorFlag, setCursorName, setTimeout, setTransaction, supportsCursorInfo, supportsFetchScroll, unprepare, validateParameters, withLock`

## Constructor Details

### V16Statement

public V16Statement(FbWireDatabase database)
Creates a new instance of V16Statement for the specified database.

Parameters:
  `database` - FbWireDatabase implementation

## Method Details

### sendExecute

protected void sendExecute(int operation, RowValue parameters) throws IOException, SQLException
Description copied from class: `V10Statement`
Sends the execute (for `op_execute` or `op_execute2`) to the database.

Overrides:
  `sendExecute` in class `V10Statement`
Parameters:
  `operation` - Operation (`op_execute` or `op_execute2`)
  `parameters` - Parameters
Throws:
  `IOException`
  `SQLException`

### supportBatchUpdates

public boolean supportBatchUpdates()
Description copied from interface: `FbStatement`
Reports whether this statement implementation supports server-side batch updates.

Returns:
  `true` server-side batch updates supported, `false` if not supported (default implementation returns `false`)

### createBatchParameterBuffer

public BatchParameterBuffer createBatchParameterBuffer() throws SQLException
Description copied from interface: `FbStatement`
Creates a `BatchParameterBuffer` instance compatible with this protocol version.

Returns:
  batch parameter buffer
Throws:
  `SQLException` - if this statement is closed, or a database access error occurs, or when the parameter buffer could not be created for other reasons
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`

### deferredBatchCreate

public void deferredBatchCreate(FbBatchConfig batchConfig, DeferredResponse<Void> onResponse) throws SQLException
Description copied from interface: `FbStatement`
Sends batch create with deferred response processing.

Implementations that do not supported deferred or async response processing should call `DeferredResponse.onResponse(Object)` and - optionally - `DeferredResponse.onException(Exception)` synchronously. If the response is deferred, but the implementation is not capable of connecting the response back, it should call `onResponse` before method return, and any exceptions generated by deferred processing should then be thrown from the method that causes the response to be received.

Parameters:
  `batchConfig` - batch configuration
  `onResponse` - deferred action to call when response is received
Throws:
  `SQLException` - for database access errors (I/O errors)
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`

### sendBatchCreate

protected void sendBatchCreate(FbBatchConfig batchConfig) throws SQLException, IOException

Throws:
  `SQLException`
  `IOException`

### deferredBatchSend

public void deferredBatchSend(Collection<RowValue> rowValues, DeferredResponse<Void> onResponse) throws SQLException
Description copied from interface: `FbStatement`
Sends batch data with deferred response processing.

For implementations that do not supported deferred or async response processing, see `FbStatement.deferredBatchCreate(FbBatchConfig, DeferredResponse)` for expected behaviour.

Parameters:
  `rowValues` - collection of row values
  `onResponse` - deferred action to call when response is received
Throws:
  `SQLException` - for database access errors (I/O errors)
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`

### sendBatchMsg

protected void sendBatchMsg(XdrOutputStream xdrOut, RowDescriptor parameterDescriptor, Collection<RowValue> rowValues) throws SQLException, IOException

Throws:
  `SQLException`
  `IOException`

### batchExecute

public BatchCompletion batchExecute() throws SQLException
Description copied from interface: `FbStatement`
Execute the batch on the server.

Returns:
  batch completion response
Throws:
  `SQLException` - for database access errors
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`

### batchCancel

public void batchCancel() throws SQLException
Description copied from interface: `FbStatement`
Cancels the server side batch (that is, clear any rows batched on the server).

Throws:
  `SQLException` - for database access errors
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`

### deferredBatchRelease

public void deferredBatchRelease(DeferredResponse<Void> onResponse) throws SQLException
Description copied from interface: `FbStatement`
Closes (releases) the batch on the server with deferred response processing.

For implementations that do not supported deferred or async response processing, see `FbStatement.deferredBatchCreate(FbBatchConfig, DeferredResponse)` for expected behaviour.

Parameters:
  `onResponse` - deferred action to call when response is received
Throws:
  `SQLException` - for database access errors
  `SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  - `FbStatement.supportBatchUpdates()`