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

# Class V18Statement

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
org.firebirdsql.gds.ng.wire.version18.V18Statement

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

public class V18Statement extends V16Statement

Since:
  5
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
`V18Statement(FbWireDatabase database)`
Creates a new instance of V18Statement for the specified database.

## Method Summary

Modifier and Type
Method
Description
`final void`
`clearCursorFlag(CursorFlag flag)`
Clears cursor flag.
`protected void`
`fetchScrollImpl(FetchType fetchType, int fetchSize, int position)`
Implementation of `AbstractFbStatement.fetchScroll(FetchType, int, int)`.
`protected final int`
`getCursorFlagsAsInt()`
`protected byte[]`
`getCursorInfoImpl(byte[] requestItems, int bufferLength)`
Implementation of `AbstractFbStatement.getCursorInfo(byte[], int)`.
`final boolean`
`isCursorFlagSet(CursorFlag flag)`
Reports whether a cursor flag is set.
`protected void`
`sendExecute(int operation, RowValue parameters)`
Sends the execute (for `op_execute` or `op_execute2`) to the database.
`protected void`
`sendFetchScroll(FetchType fetchType, int fetchSize, int position)`
`final void`
`setCursorFlag(CursorFlag flag)`
Set cursor flag.
`boolean`
`supportsCursorInfo()`
Reports whether this statement implementation supports `FbStatement.getCursorInfo(byte[], int, InfoProcessor)` and `FbStatement.getCursorInfo(byte[], int)`.
`boolean`
`supportsFetchScroll()`
Reports whether this statement implementation supports `FbStatement.fetchScroll(FetchType, int, int)` with anything other than `FetchType.NEXT`.

### Methods inherited from class org.firebirdsql.gds.ng.wire.version16.V16Statement

`batchCancel, batchExecute, createBatchParameterBuffer, deferredBatchCreate, deferredBatchRelease, deferredBatchSend, sendBatchCreate, sendBatchMsg, supportBatchUpdates`

### 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, checkPrepareAllowed, checkStatementHasOpenCursor, checkStatementValid, checkStatementValid, closeCursor, closeCursor, createExecutionPlanProcessor, createSqlCountProcessor, ensureClosedCursor, fetchScroll, forceState, getAllowedTimeout, getCursorInfo, getCursorInfo, 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, close, closeCursor, closeCursor, emptyRowDescriptor, ensureClosedCursor, fetchScroll, getCursorInfo, getCursorInfo, getDatabase, getExecutionPlan, getExplainedExecutionPlan, getHandle, getParameterDescriptor, getRowDescriptor, getSqlCounts, getSqlInfo, getSqlInfo, getState, getTimeout, getTransaction, getType, hasFetched, removeStatementListener, setCursorName, setTimeout, setTransaction, unprepare, validateParameters, withLock`

## Constructor Details

### V18Statement

public V18Statement(FbWireDatabase database)
Creates a new instance of V18Statement 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 `V16Statement`
Parameters:
  `operation` - Operation (`op_execute` or `op_execute2`)
  `parameters` - Parameters
Throws:
  `IOException`
  `SQLException`

### fetchScrollImpl

protected void fetchScrollImpl(FetchType fetchType, int fetchSize, int position) throws SQLException
Description copied from class: `AbstractFbStatement`
Implementation of `AbstractFbStatement.fetchScroll(FetchType, int, int)`.

An implementation should not notify `exceptionListenerDispatcher`, as that is already handled in `AbstractFbStatement.fetchScroll(FetchType, int, int)`.

The implementation of `AbstractFbStatement.fetchScroll(FetchType, int, int)` redirects `FetchType.NEXT` to `FbStatement.fetchRows(int)`. The implementation does need to handle `NEXT`, but only when actually implementing the other scroll direction.

Overrides:
  `fetchScrollImpl` in class `AbstractFbStatement`
Throws:
  `SQLFeatureNotSupportedException` - If the protocol version or the implementation does not support scroll fetch (even for `NEXT`)
  `SQLException` - For database access errors, when called on a closed statement, when no cursor is open, or for serverside error conditions
See Also:
  - `AbstractFbStatement.fetchScroll(FetchType, int, int)`
  - `FbStatement.supportsFetchScroll()`

### sendFetchScroll

protected void sendFetchScroll(FetchType fetchType, int fetchSize, int position) throws SQLException, IOException

Throws:
  `SQLException`
  `IOException`

### getCursorInfoImpl

protected byte[] getCursorInfoImpl(byte[] requestItems, int bufferLength) throws SQLException
Description copied from class: `AbstractFbStatement`
Implementation of `AbstractFbStatement.getCursorInfo(byte[], int)`.

An implementation should not notify `exceptionListenerDispatcher`, as that is already handled in `AbstractFbStatement.getCursorInfo(byte[], int)`.

Overrides:
  `getCursorInfoImpl` in class `AbstractFbStatement`
Throws:
  `SQLException` - For errors retrieving or transforming the response
  `SQLFeatureNotSupportedException` - If requesting cursor info is not supported (Firebird 4.0 or earlier, or native implementation)
See Also:
  - `AbstractFbStatement.getCursorInfo(byte[], int)`
  - `FbStatement.supportsCursorInfo()`

### supportsFetchScroll

public boolean supportsFetchScroll()
Description copied from interface: `FbStatement`
Reports whether this statement implementation supports `FbStatement.fetchScroll(FetchType, int, int)` with anything other than `FetchType.NEXT`.

Returns:
  `true` `fetchScroll` supported, `false` if not supported (default implementation returns `false`)

### supportsCursorInfo

public boolean supportsCursorInfo()
Description copied from interface: `FbStatement`
Reports whether this statement implementation supports `FbStatement.getCursorInfo(byte[], int, InfoProcessor)` and `FbStatement.getCursorInfo(byte[], int)`.

Returns:
  `true` `getCursorInfo` supported, `false` if not supported (default implementation returns `false`)

### getCursorFlagsAsInt

protected final int getCursorFlagsAsInt()

### setCursorFlag

public final void setCursorFlag(CursorFlag flag)
Description copied from interface: `FbStatement`
Set cursor flag.

If a protocol version does not support cursor flags, this is silently ignored.

Parameters:
  `flag` - Cursor flag to set

### clearCursorFlag

public final void clearCursorFlag(CursorFlag flag)
Description copied from interface: `FbStatement`
Clears cursor flag.

Setting a cursor flag only affects subsequent executes. A currently open cursor will not be affected.

If a protocol version does not support cursor flags, this is silently ignored.

Parameters:
  `flag` - Cursor flag to clear

### isCursorFlagSet

public final boolean isCursorFlagSet(CursorFlag flag)
Description copied from interface: `FbStatement`
Reports whether a cursor flag is set.

If a protocol version does not support cursor flags, `false` should be returned.

Parameters:
  `flag` - Cursor flag
Returns:
  `true` when set, `false` otherwise