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:
  java.lang.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.AbstractFbStatement

`exceptionListenerDispatcher, statementListenerDispatcher`

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`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<java.lang.Void> onResponse)` Sends batch create with deferred response processing.
`void` `deferredBatchRelease(DeferredResponse<java.lang.Void> onResponse)` Closes (releases) the batch on the server with deferred response processing.
`void` `deferredBatchSend(java.util.Collection<RowValue> rowValues, DeferredResponse<java.lang.Void> onResponse)` Sends batch data with deferred response processing.
`protected void` `sendBatchCreate(FbBatchConfig batchConfig)`
`protected void` `sendBatchMsg(java.util.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

`getDefaultSqlInfoSize, getMaxSqlInfoSize, readSqlData, writeSqlData, writeSqlData`

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

`free, prepare`

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

`doFreePacket, execute, fetchRows, processAllocateResponse, processExecuteResponse, processExecuteSingletonResponse, processFetchResponse, processFreeResponse, processPrepareResponse, readColumnData, sendAllocate, sendFetch, sendFree, sendPrepare, setCursorName, writeColumnData`

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

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

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

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

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

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

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

`addStatementListener, 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, setTimeout, setTransaction, supportsCursorInfo, supportsFetchScroll, unprepare, validateParameters, withLock`

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

`addExceptionListener, removeExceptionListener`

### Constructor Detail

#### V16Statement

    public V16Statement(FbWireDatabase database)

Creates a new instance of V16Statement for the specified database.

Parameters:
  `database` - FbWireDatabase implementation

### Method Detail

#### sendExecute

    protected void sendExecute(int operation,
                               RowValue parameters)
                        throws java.io.IOException,
                               java.sql.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:
  `java.io.IOException`
  `java.sql.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 java.sql.SQLException

Description copied from interface: `FbStatement`
Creates a `BatchParameterBuffer` instance compatible with this protocol version.

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

#### deferredBatchCreate

    public void deferredBatchCreate(FbBatchConfig batchConfig,
                                    DeferredResponse<java.lang.Void> onResponse)
                             throws java.sql.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:
  `java.sql.SQLException` - for database access errors (I/O errors)
  `java.sql.SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  `FbStatement.supportBatchUpdates()`

#### sendBatchCreate

    protected void sendBatchCreate(FbBatchConfig batchConfig)
                            throws java.sql.SQLException,
                                   java.io.IOException

Throws:
  `java.sql.SQLException`
  `java.io.IOException`

#### deferredBatchSend

    public void deferredBatchSend(java.util.Collection<RowValue> rowValues,
                                  DeferredResponse<java.lang.Void> onResponse)
                           throws java.sql.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:
  `java.sql.SQLException` - for database access errors (I/O errors)
  `java.sql.SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  `FbStatement.supportBatchUpdates()`

#### sendBatchMsg

    protected void sendBatchMsg(java.util.Collection<RowValue> rowValues)
                         throws java.sql.SQLException,
                                java.io.IOException

Throws:
  `java.sql.SQLException`
  `java.io.IOException`

#### batchExecute

    public BatchCompletion batchExecute()
                                 throws java.sql.SQLException

Description copied from interface: `FbStatement`
Execute the batch on the server.

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

#### batchCancel

    public void batchCancel()
                     throws java.sql.SQLException

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

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

#### deferredBatchRelease

    public void deferredBatchRelease(DeferredResponse<java.lang.Void> onResponse)
                              throws java.sql.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:
  `java.sql.SQLException` - for database access errors
  `java.sql.SQLFeatureNotSupportedException` - when this statement implementation does not support batch updates
See Also:
  `FbStatement.supportBatchUpdates()`