Class AbstractFbStatement
- java.lang.Object
- 
- org.firebirdsql.gds.ng.AbstractFbStatement
 
- 
- All Implemented Interfaces:
- java.lang.AutoCloseable,- FbStatement,- ExceptionListenable
 - Direct Known Subclasses:
- AbstractFbWireStatement,- JnaStatement
 
 public abstract class AbstractFbStatement extends java.lang.Object implements FbStatement - Since:
- 3.0
- Author:
- Mark Rotteveel
 
- 
- 
Field SummaryFields Modifier and Type Field Description protected ExceptionListenerDispatcherexceptionListenerDispatcherprotected StatementListenerDispatcherstatementListenerDispatcher
 - 
Constructor SummaryConstructors Modifier Constructor Description protectedAbstractFbStatement()
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddExceptionListener(ExceptionListener listener)Adds an exception listener to this object.voidaddStatementListener(StatementListener statementListener)Registers aStatementListener.protected voidcheckStatementValid()Checks if this statement is not inStatementState.CLOSED,StatementState.CLOSING,StatementState.NEWorStatementState.ERROR, and throws anSQLExceptionif it is.protected voidcheckStatementValid(StatementState ignoreState)Performs the same check ascheckStatementValid(), but considersignoreStateas valid.voidclose()Close and deallocate this statement.voidcloseCursor()Closes the cursor associated with this statement, leaving the statement itself allocated.voidcloseCursor(boolean transactionEnd)Closes the cursor associated with this statement, leaving the statement itself allocated.protected ExecutionPlanProcessorcreateExecutionPlanProcessor()protected SqlCountProcessorcreateSqlCountProcessor()voidensureClosedCursor(boolean transactionEnd)Ensures that the statement cursor is closed.voidfetchScroll(FetchType fetchType, int fetchSize, int position)Requests this statement to fetch rows using the specified fetch type.protected voidfetchScrollImpl(FetchType fetchType, int fetchSize, int position)Implementation offetchScroll(FetchType, int, int).protected voidfinalize()protected voidforceState(StatementState newState)Forces the statement to the specified state without throwing an exception if this is not a valid transition.protected abstract voidfree(int option)Frees the currently allocated statement.protected longgetAllowedTimeout()byte[]getCursorInfo(byte[] requestItems, int bufferLength)Request cursor info.<T> TgetCursorInfo(byte[] requestItems, int bufferLength, InfoProcessor<T> infoProcessor)Request cursor info.protected byte[]getCursorInfoImpl(byte[] requestItems, int bufferLength)Implementation ofgetCursorInfo(byte[], int).java.lang.StringgetExecutionPlan()java.lang.StringgetExplainedExecutionPlan()byte[]getParameterDescriptionInfoRequestItems()RowDescriptorgetParameterDescriptor()RowDescriptorgetRowDescriptor()SqlCountHoldergetSqlCounts()Retrieves the SQL counts for the last execution of this statement.<T> TgetSqlInfo(byte[] requestItems, int bufferLength, InfoProcessor<T> infoProcessor)Request statement info.StatementStategetState()byte[]getStatementInfoRequestItems()protected WarningMessageCallbackgetStatementWarningCallback()longgetTimeout()Gets the current statement timeout for this statement.FbTransactiongetTransaction()protected TransactionListenergetTransactionListener()Gets theTransactionListenerinstance for this statement.StatementTypegetType()booleanhasFetched()Has at least one fetch been executed on the current cursor?protected booleanhasFields()protected booleanhasSingletonResult()protected booleanisAfterLast()protected booleanisBeforeFirst()protected booleanisPrepareAllowed(StatementState state)Is a call toFbStatement.prepare(String)allowed for the suppliedStatementState.protected abstract booleanisValidTransactionClass(java.lang.Class<? extends FbTransaction> transactionClass)Method to decide if a transaction implementation class is valid for the statement implementation.protected voidparseStatementInfo(byte[] statementInfoResponse)Parse the statement info response instatementInfoResponse.protected voidqueueRowData(RowValue rowData)Queues row data for consumptionvoidremoveExceptionListener(ExceptionListener listener)Removes an exception listener to this object.voidremoveStatementListener(StatementListener statementListener)Removes aStatementListener.protected voidreset()Reset statement state, equivalent to callingreset(boolean)withfalse.protected voidreset(boolean resetAll)Resets the statement for next execution.protected voidresetAll()Reset statement state and clear parameter description, equivalent to callingreset(boolean)withtrue.protected voidsetAfterLast()Marks the cursor position as after-last.protected voidsetBeforeFirst()Marks the cursor position as before-first.protected voidsetParameterDescriptor(RowDescriptor parameterDescriptor)Sets the parameter descriptor.protected voidsetRowDescriptor(RowDescriptor rowDescriptor)Sets the (result set) row descriptor.voidsetTimeout(long statementTimeout)Sets the statement timeout.voidsetTransaction(FbTransaction newTransaction)Associates a transaction with this statementprotected voidsetType(StatementType type)Sets the StatementTypeprotected OperationCloseHandlesignalExecute()Signals the start of an execute for this statement.protected OperationCloseHandlesignalFetch()Signals the start of a fetch for this statement.protected voidswitchState(StatementState newState)Sets the StatementState.voidunprepare()Attempts to unprepare the currently prepared statement.voidvalidateParameters(RowValue parameters)Validates if the number of parameters matches the expected number and types, and if all values have been set.- 
Methods inherited from class java.lang.Objectclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.firebirdsql.gds.ng.FbStatementbatchCancel, batchExecute, clearCursorFlag, createBatchParameterBuffer, deferredBatchCreate, deferredBatchRelease, deferredBatchSend, emptyRowDescriptor, execute, fetchRows, getDatabase, getDefaultSqlInfoSize, getHandle, getMaxSqlInfoSize, getSqlInfo, isCursorFlagSet, prepare, setCursorFlag, setCursorName, supportBatchUpdates, supportsCursorInfo, supportsFetchScroll, withLock
 
- 
 
- 
- 
- 
Field Detail- 
statementListenerDispatcherprotected final StatementListenerDispatcher statementListenerDispatcher 
 - 
exceptionListenerDispatcherprotected final ExceptionListenerDispatcher exceptionListenerDispatcher 
 
- 
 - 
Method Detail- 
getTransactionListenerprotected final TransactionListener getTransactionListener() Gets theTransactionListenerinstance for this statement.This method should only be called by this object itself. Subclasses may provide their own transaction listener, but the instance returned by this method should be the same for the lifetime of this FbStatement.- Returns:
- The transaction listener instance for this statement.
 
 - 
getStatementWarningCallbackprotected final WarningMessageCallback getStatementWarningCallback() 
 - 
hasFetchedpublic final boolean hasFetched() Description copied from interface:FbStatementHas at least one fetch been executed on the current cursor?- Specified by:
- hasFetchedin interface- FbStatement
- Returns:
- trueif at least one fetch has been executed on the current cursor,- falseotherwise (including if nothing has been executed, or the current statement has no cursor)
 
 - 
closepublic void close() throws java.sql.SQLExceptionDescription copied from interface:FbStatementClose and deallocate this statement.- Specified by:
- closein interface- java.lang.AutoCloseable
- Specified by:
- closein interface- FbStatement
- Throws:
- java.sql.SQLException
 
 - 
closeCursorpublic final void closeCursor() throws java.sql.SQLExceptionDescription copied from interface:FbStatementCloses the cursor associated with this statement, leaving the statement itself allocated.Equivalent to calling FbStatement.closeCursor(boolean)withfalse.- Specified by:
- closeCursorin interface- FbStatement
- Throws:
- java.sql.SQLException
 
 - 
closeCursorpublic final void closeCursor(boolean transactionEnd) throws java.sql.SQLExceptionDescription copied from interface:FbStatementCloses the cursor associated with this statement, leaving the statement itself allocated.When this method is called in preparation of a commit, rollback or another operation which will close the cursor (see transactionEnd), then implementations may opt to not close the cursor on the server as the server closes the cursor automatically, or the statement as a whole is closed by the implementation.- Specified by:
- closeCursorin interface- FbStatement
- Parameters:
- transactionEnd- close is in response to a transaction end or another operation which will close the cursor
- Throws:
- java.sql.SQLException
 
 - 
ensureClosedCursorpublic final void ensureClosedCursor(boolean transactionEnd) throws java.sql.SQLExceptionDescription copied from interface:FbStatementEnsures that the statement cursor is closed. Resets a statement, so it is ready to be reused for re-execute or prepare.- Specified by:
- ensureClosedCursorin interface- FbStatement
- Parameters:
- transactionEnd- Close is in response to a transaction end
- Throws:
- java.sql.SQLException- If this statement is closed or the cursor could not be closed.
 
 - 
unpreparepublic void unprepare() throws java.sql.SQLExceptionDescription copied from interface:FbStatementAttempts to unprepare the currently prepared statement.For Firebird versions that do not support DSQL_unprepare, the implementation should attempt to close the cursor (usingFbStatement.closeCursor()).- Specified by:
- unpreparein interface- FbStatement
- Throws:
- java.sql.SQLException- If a database access error occurs
 
 - 
getStatepublic final StatementState getState() - Specified by:
- getStatein interface- FbStatement
- Returns:
- The current state of this statement
 
 - 
switchStateprotected final void switchState(StatementState newState) throws java.sql.SQLException Sets the StatementState.- Parameters:
- newState- New state
- Throws:
- java.sql.SQLException- When the state is changed to an illegal next state
 
 - 
forceStateprotected void forceState(StatementState newState) Forces the statement to the specified state without throwing an exception if this is not a valid transition.Does nothing if current state is CLOSED. - Parameters:
- newState- New state
- See Also:
- switchState(StatementState)
 
 - 
getTypepublic final StatementType getType() - Specified by:
- getTypein interface- FbStatement
- Returns:
- The statement type
 
 - 
setTypeprotected void setType(StatementType type) Sets the StatementType- Parameters:
- type- New type
 
 - 
queueRowDataprotected final void queueRowData(RowValue rowData) Queues row data for consumption- Parameters:
- rowData- Row data
 
 - 
setBeforeFirstprotected final void setBeforeFirst() Marks the cursor position as before-first.All registered StatementListenerinstances are notified for theStatementListener.beforeFirst(FbStatement)event.
 - 
isBeforeFirstprotected final boolean isBeforeFirst() 
 - 
setAfterLastprotected final void setAfterLast() Marks the cursor position as after-last.All registered StatementListenerinstances are notified for theStatementListener.afterLast(FbStatement)event.
 - 
isAfterLastprotected final boolean isAfterLast() 
 - 
resetprotected final void reset() Reset statement state, equivalent to callingreset(boolean)withfalse.
 - 
resetAllprotected final void resetAll() Reset statement state and clear parameter description, equivalent to callingreset(boolean)withtrue.
 - 
resetprotected void reset(boolean resetAll) Resets the statement for next execution. Implementation in derived class must lock onFbStatement.withLock()and callsuper.reset(resetAll)- Parameters:
- resetAll- Also reset field and parameter info
 
 - 
isPrepareAllowedprotected boolean isPrepareAllowed(StatementState state) Is a call toFbStatement.prepare(String)allowed for the suppliedStatementState.- Parameters:
- state- The statement state
- Returns:
- truecall to- prepareis allowed
 
 - 
getParameterDescriptorpublic final RowDescriptor getParameterDescriptor() - Specified by:
- getParameterDescriptorin interface- FbStatement
- Returns:
- descriptor of the parameters of this statement
 
 - 
setParameterDescriptorprotected void setParameterDescriptor(RowDescriptor parameterDescriptor) Sets the parameter descriptor.- Parameters:
- parameterDescriptor- Parameter descriptor
 
 - 
getRowDescriptorpublic final RowDescriptor getRowDescriptor() - Specified by:
- getRowDescriptorin interface- FbStatement
- Returns:
- descriptor of the row returned by this statement
 
 - 
setRowDescriptorprotected void setRowDescriptor(RowDescriptor rowDescriptor) Sets the (result set) row descriptor.- Parameters:
- rowDescriptor- Row descriptor
 
 - 
getStatementInfoRequestItemspublic byte[] getStatementInfoRequestItems() - Returns:
- The (full) statement info request items.
- See Also:
- getParameterDescriptionInfoRequestItems()
 
 - 
getParameterDescriptionInfoRequestItemspublic byte[] getParameterDescriptionInfoRequestItems() - Returns:
- The isc_info_sql_describe_varsinfo request items.
- See Also:
- getStatementInfoRequestItems()
 
 - 
fetchScrollpublic final void fetchScroll(FetchType fetchType, int fetchSize, int position) throws java.sql.SQLException Description copied from interface:FbStatementRequests this statement to fetch rows using the specified fetch type.The default implementation only supports FetchType.NEXTby redirecting toFbStatement.fetchRows(int)and throws anSQLFeatureNotSupportedfor other types.The caller is responsible for tracking and correcting for server-side positional state, taking into account any rows already fetched. For example, if 100 rows have been fetched with NEXTorPRIOR, and 80 rows are still in the local buffer, the server-side position is actually 80 rows ahead (or behind). The next fetch withRELATIVEwill need to correct this inposition, and aPRIORafter aNEXTor aNEXTafter aPRIORwill need to reposition withRELATIVEorABSOLUTE, or know how many rows to ignore from the fetched batch.- Specified by:
- fetchScrollin interface- FbStatement
- Parameters:
- fetchType- Fetch type
- fetchSize- Number of rows to fetch (must be- > 0) (ignored by server for types other than- FetchType.NEXTand- FetchType.PRIOR)
- position- Absolute or relative position for the row to fetch (ignored by server for types other than- FetchType.ABSOLUTEand- FetchType.RELATIVE)
- Throws:
- java.sql.SQLFeatureNotSupportedException- For types other than- FetchType.NEXTif the protocol version or the implementation does not support scroll fetch
- java.sql.SQLException- For database access errors, when called on a closed statement, when no cursor is open or for server-side error conditions
- See Also:
- FbStatement.supportsFetchScroll()
 
 - 
fetchScrollImplprotected void fetchScrollImpl(FetchType fetchType, int fetchSize, int position) throws java.sql.SQLException Implementation offetchScroll(FetchType, int, int).An implementation should not notify exceptionListenerDispatcher, as that is already handled infetchScroll(FetchType, int, int).The implementation of fetchScroll(FetchType, int, int)redirectsFetchType.NEXTtoFbStatement.fetchRows(int). The implementation does need to handleNEXT, but only when actually implementing the other scroll direction.- Throws:
- java.sql.SQLFeatureNotSupportedException- If the protocol version or the implementation does not support scroll fetch (even for- NEXT)
- java.sql.SQLException- For database access errors, when called on a closed statement, when no cursor is open, or for serverside error conditions
- See Also:
- fetchScroll(FetchType, int, int),- FbStatement.supportsFetchScroll()
 
 - 
getSqlInfopublic final <T> T getSqlInfo(byte[] requestItems, int bufferLength, InfoProcessor<T> infoProcessor) throws java.sql.SQLExceptionRequest statement info.- Specified by:
- getSqlInfoin interface- FbStatement
- Parameters:
- requestItems- Array of info items to request
- bufferLength- Response buffer length to use
- infoProcessor- Implementation of- InfoProcessorto transform the info response
- Returns:
- Transformed info response of type T
- Throws:
- java.sql.SQLException- For errors retrieving or transforming the response.
 
 - 
getCursorInfopublic final <T> T getCursorInfo(byte[] requestItems, int bufferLength, InfoProcessor<T> infoProcessor) throws java.sql.SQLExceptionDescription copied from interface:FbStatementRequest cursor info.- Specified by:
- getCursorInfoin interface- FbStatement
- Parameters:
- requestItems- Array of info items to request
- bufferLength- Response buffer length to use
- infoProcessor- Implementation of- InfoProcessorto transform the info response
- Returns:
- Transformed info response of type T
- Throws:
- java.sql.SQLException- For errors retrieving or transforming the response
- java.sql.SQLFeatureNotSupportedException- If requesting cursor info is not supported (Firebird 4.0 or earlier, or native implementation)
- See Also:
- FbStatement.supportsCursorInfo()
 
 - 
getCursorInfopublic final byte[] getCursorInfo(byte[] requestItems, int bufferLength) throws java.sql.SQLExceptionDescription copied from interface:FbStatementRequest cursor info.- Specified by:
- getCursorInfoin interface- FbStatement
- Parameters:
- requestItems- Array of info items to request
- bufferLength- Response buffer length to use
- Returns:
- Response buffer
- Throws:
- java.sql.SQLException- For errors retrieving or transforming the response
- java.sql.SQLFeatureNotSupportedException- If requesting cursor info is not supported (Firebird 4.0 or earlier, or native implementation)
 
 - 
getCursorInfoImplprotected byte[] getCursorInfoImpl(byte[] requestItems, int bufferLength) throws java.sql.SQLExceptionImplementation ofgetCursorInfo(byte[], int).An implementation should not notify exceptionListenerDispatcher, as that is already handled ingetCursorInfo(byte[], int).- Throws:
- java.sql.SQLException- For errors retrieving or transforming the response
- java.sql.SQLFeatureNotSupportedException- If requesting cursor info is not supported (Firebird 4.0 or earlier, or native implementation)
- See Also:
- getCursorInfo(byte[], int),- FbStatement.supportsCursorInfo()
 
 - 
getExecutionPlanpublic final java.lang.String getExecutionPlan() throws java.sql.SQLException- Specified by:
- getExecutionPlanin interface- FbStatement
- Returns:
- The execution plan of the currently prepared statement
- Throws:
- java.sql.SQLException- If this statement is closed.
 
 - 
getExplainedExecutionPlanpublic final java.lang.String getExplainedExecutionPlan() throws java.sql.SQLException- Specified by:
- getExplainedExecutionPlanin interface- FbStatement
- Returns:
- The detailed execution plan of the currently prepared statement
- Throws:
- java.sql.SQLException- If this statement is closed.
 
 - 
createExecutionPlanProcessorprotected ExecutionPlanProcessor createExecutionPlanProcessor() - Returns:
- New instance of ExecutionPlanProcessor(or subclass) for this statement.
 
 - 
getSqlCountspublic SqlCountHolder getSqlCounts() throws java.sql.SQLException Description copied from interface:FbStatementRetrieves the SQL counts for the last execution of this statement.The retrieved SQL counts are also notified to all registered StatementListeners.In general the FbStatementwill (should) retrieve and notify listeners of the SQL counts automatically at times where it is relevant (eg after executing a statement that does not produce multiple rows, or after fetching all rows).- Specified by:
- getSqlCountsin interface- FbStatement
- Returns:
- The SQL counts of the last execution of this statement
- Throws:
- java.sql.SQLException- If this statement is closed, or if this statement is in state- StatementState.CURSOR_OPENand not all rows have been fetched.
 
 - 
createSqlCountProcessorprotected SqlCountProcessor createSqlCountProcessor() - Returns:
- New instance of SqlCountProcessor(or subclass) for this statement.
 
 - 
freeprotected abstract void free(int option) throws java.sql.SQLExceptionFrees the currently allocated statement. Either close the cursor withISCConstants.DSQL_closeor drop the statement handle usingISCConstants.DSQL_drop.- Parameters:
- option- Free option
- Throws:
- java.sql.SQLException
 
 - 
validateParameterspublic final void validateParameters(RowValue parameters) throws java.sql.SQLException Description copied from interface:FbStatementValidates if the number of parameters matches the expected number and types, and if all values have been set.- Specified by:
- validateParametersin interface- FbStatement
- Parameters:
- parameters- Parameter values to validate
- Throws:
- java.sql.SQLException- When the number or type of parameters does not match- FbStatement.getParameterDescriptor(), or when a parameter has not been set.
 
 - 
addStatementListenerpublic final void addStatementListener(StatementListener statementListener) Description copied from interface:FbStatementRegisters aStatementListener.- Specified by:
- addStatementListenerin interface- FbStatement
- Parameters:
- statementListener- The row listener
 
 - 
removeStatementListenerpublic final void removeStatementListener(StatementListener statementListener) Description copied from interface:FbStatementRemoves aStatementListener.- Specified by:
- removeStatementListenerin interface- FbStatement
- Parameters:
- statementListener- The row listener
 
 - 
addExceptionListenerpublic final void addExceptionListener(ExceptionListener listener) Description copied from interface:ExceptionListenableAdds an exception listener to this object.Implementations use WeakReference.- Specified by:
- addExceptionListenerin interface- ExceptionListenable
- Parameters:
- listener- Listener to register
 
 - 
removeExceptionListenerpublic final void removeExceptionListener(ExceptionListener listener) Description copied from interface:ExceptionListenableRemoves an exception listener to this object.- Specified by:
- removeExceptionListenerin interface- ExceptionListenable
- Parameters:
- listener- Listener to remove
 
 - 
checkStatementValidprotected final void checkStatementValid() throws java.sql.SQLExceptionChecks if this statement is not inStatementState.CLOSED,StatementState.CLOSING,StatementState.NEWorStatementState.ERROR, and throws anSQLExceptionif it is.- Throws:
- java.sql.SQLException- When this statement is closed or in error state.
 
 - 
checkStatementValidprotected final void checkStatementValid(StatementState ignoreState) throws java.sql.SQLException Performs the same check ascheckStatementValid(), but considersignoreStateas valid.- Parameters:
- ignoreState- The invalid state (see- checkStatementValid()to ignore
- Throws:
- java.sql.SQLException- When this statement is closed or in error state.
 
 - 
finalizeprotected void finalize() throws java.lang.Throwable- Overrides:
- finalizein class- java.lang.Object
- Throws:
- java.lang.Throwable
 
 - 
getTransactionpublic FbTransaction getTransaction() - Specified by:
- getTransactionin interface- FbStatement
- Returns:
- Transaction currently associated with this statement
 
 - 
isValidTransactionClassprotected abstract boolean isValidTransactionClass(java.lang.Class<? extends FbTransaction> transactionClass) Method to decide if a transaction implementation class is valid for the statement implementation.Eg a V10Statementwill only work with anFbWireTransactionimplementation.- Parameters:
- transactionClass- Class of the transaction
- Returns:
- truewhen the transaction class is valid for the statement implementation.
 
 - 
setTransactionpublic final void setTransaction(FbTransaction newTransaction) throws java.sql.SQLException Description copied from interface:FbStatementAssociates a transaction with this statement- Specified by:
- setTransactionin interface- FbStatement
- Parameters:
- newTransaction- The transaction
- Throws:
- java.sql.SQLException
 
 - 
setTimeoutpublic void setTimeout(long statementTimeout) throws java.sql.SQLExceptionDescription copied from interface:FbStatementSets the statement timeout.The statement timeout value is ignored in implementations that do not support timeouts. If the provided timeout value is greater than supported (eg greater than â€4294967295‬ milliseconds on Firebird 4), the implementation should behave as if zero ( 0) was set, but still report the original value.The configured timeout only affects subsequent executes on this statement. The timeout includes time spent between reading from the result set. - Specified by:
- setTimeoutin interface- FbStatement
- Parameters:
- statementTimeout- Timeout value in milliseconds
- Throws:
- java.sql.SQLException- If the value is less than zero, this statement is closed, or a database access error occurs
 
 - 
getTimeoutpublic long getTimeout() throws java.sql.SQLExceptionDescription copied from interface:FbStatementGets the current statement timeout for this statement.This method will only return the current statement timeout value for this method, it will not consider attachment or connection level timeouts. This is an implementation decision that might change in a point release. - Specified by:
- getTimeoutin interface- FbStatement
- Returns:
- The configured timeout in milliseconds; read the documentation in FbStatement.setTimeout(long)
- Throws:
- java.sql.SQLException- If this statement is closed, or a database access error occurs
- See Also:
- FbStatement.setTimeout(long)
 
 - 
getAllowedTimeoutprotected long getAllowedTimeout() throws java.sql.SQLException- Returns:
- The timeout value, or 0if the timeout is larger than supported
- Throws:
- java.sql.SQLException- If the statement is invalid
 
 - 
parseStatementInfoprotected void parseStatementInfo(byte[] statementInfoResponse) throws java.sql.SQLExceptionParse the statement info response instatementInfoResponse. If the response is truncated, a new request is done usinggetStatementInfoRequestItems()- Parameters:
- statementInfoResponse- Statement info response
- Throws:
- java.sql.SQLException
 
 - 
hasSingletonResultprotected final boolean hasSingletonResult() - Returns:
- trueif this is a stored procedure (or other singleton result producing statement) with at least 1 output field
 
 - 
hasFieldsprotected final boolean hasFields() - Returns:
- trueif this statement has at least one output field (either singleton or result set)
 
 - 
signalExecuteprotected final OperationCloseHandle signalExecute() Signals the start of an execute for this statement.- Returns:
- OperationCloseHandlehandle for the operation
 
 - 
signalFetchprotected final OperationCloseHandle signalFetch() Signals the start of a fetch for this statement.- Returns:
- OperationCloseHandlehandle for the operation
 
 
- 
 
-