java.lang.Object
org.firebirdsql.gds.ng.AbstractFbStatement
org.firebirdsql.gds.ng.wire.AbstractFbWireStatement
org.firebirdsql.gds.ng.wire.version10.V10Statement
- All Implemented Interfaces:
AutoCloseable
,FbStatement
,ExceptionListenable
,FbWireStatement
- Direct Known Subclasses:
V11Statement
FbWireStatement
implementation for the version 10 wire protocol.- Since:
- 3.0
- Author:
- Mark Rotteveel
-
Field Summary
Fields inherited from class org.firebirdsql.gds.ng.AbstractFbStatement
exceptionListenerDispatcher, statementListenerDispatcher
-
Constructor Summary
ConstructorsConstructorDescriptionV10Statement
(FbWireDatabase database) Creates a new instance of V10Statement for the specified database. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
doFreePacket
(int option) Handles sending the free statement packet and associated state changes on this statementvoid
Execute the statement.void
fetchRows
(int fetchSize) Requests this statement to fetch the nextfetchSize
rows.protected void
free
(int option) Frees the currently allocated statement.int
int
void
Prepare the statement text.protected void
processAllocateResponse
(GenericResponse response) Processes the allocate response from the server.protected void
processExecuteResponse
(GenericResponse genericResponse) Process the execute response.protected void
processExecuteSingletonResponse
(SqlResponse sqlResponse) Process the execute response for statements with a singleton response (op_execute2
; stored procedures).protected void
processFetchResponse
(FetchDirection direction) Process the fetch response by reading the returned rows and queuing them.protected void
processFetchResponse
(FetchDirection direction, Response response) Process the fetch response by reading the returned rows and queuing them.protected void
processFreeResponse
(Response response) Processes the response to the free statement.protected void
processPrepareResponse
(GenericResponse genericResponse) Processes the prepare response from the server.protected byte[]
readColumnData
(XdrInputStream xdrIn, int len) protected RowValue
Reads a single row from the database.protected void
Sends the allocate request to the server.protected void
sendExecute
(int operation, RowValue parameters) Sends the execute (forop_execute
orop_execute2
) to the database.protected void
sendFetch
(int fetchSize) Sends the fetch request to the database.protected void
sendFree
(int option) Sends the free statement to the databaseprotected void
sendPrepare
(String statementText) Sends the statement prepare to the connection.protected void
setCursorNameImpl
(String cursorName) Implementation ofAbstractFbStatement.setCursorName(String)
.protected void
writeColumnData
(XdrOutputStream xdrOut, int len, byte[] buffer, FieldDescriptor fieldDescriptor) protected void
writeSqlData
(RowDescriptor rowDescriptor, RowValue fieldValues, boolean useActualLength) Write a set of SQL data from aRowValue
.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, asyncFetchRows, checkFetchSize, checkPrepareAllowed, 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, 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, asyncFetchRows, batchCancel, batchExecute, clearCursorFlag, close, closeCursor, closeCursor, createBatchParameterBuffer, deferredBatchCreate, deferredBatchRelease, deferredBatchSend, 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, supportBatchUpdates, supportsCursorInfo, supportsFetchScroll, unprepare, validateParameters, withLock
-
Constructor Details
-
V10Statement
Creates a new instance of V10Statement for the specified database.- Parameters:
database
- FbWireDatabase implementation
-
-
Method Details
-
free
Description copied from class:AbstractFbStatement
Frees the currently allocated statement. Either close the cursor withISCConstants.DSQL_close
or drop the statement handle usingISCConstants.DSQL_drop
.- Specified by:
free
in classAbstractFbStatement
- Parameters:
option
- Free option- Throws:
SQLException
-
doFreePacket
Handles sending the free statement packet and associated state changes on this statement- Parameters:
option
- free statement option- Throws:
SQLException
IOException
-
sendFree
Sends the free statement to the database- Parameters:
option
- Free statement option- Throws:
IOException
SQLException
-
processFreeResponse
Processes the response to the free statement.- Parameters:
response
- Response object
-
prepare
Description copied from interface:FbStatement
Prepare the statement text.If this handle is in state
StatementState.NEW
then it will first allocate the statement.- Specified by:
prepare
in interfaceFbStatement
- Parameters:
statementText
- Statement text- Throws:
SQLException
- If a database access error occurs, or this statement is currently executing a query.
-
sendPrepare
Sends the statement prepare to the connection.- Parameters:
statementText
- Statement- Throws:
SQLException
IOException
-
processPrepareResponse
Processes the prepare response from the server.- Parameters:
genericResponse
- GenericResponse- Throws:
SQLException
-
setCursorNameImpl
Description copied from class:AbstractFbStatement
Implementation ofAbstractFbStatement.setCursorName(String)
.The caller of this method will take out the lock, check statement validity and call
exceptionListenerDispatcher
for exceptions, so implementations of this method do not need to do so.- Specified by:
setCursorNameImpl
in classAbstractFbStatement
- Parameters:
cursorName
- Name of the cursor- Throws:
SQLException
- If this statement is closed, or if the cursor name is set andcursorName
is different from the current cursor name
-
execute
Description copied from interface:FbStatement
Execute the statement.- Specified by:
execute
in interfaceFbStatement
- Parameters:
parameters
- The list of parameter values to use for execution.- Throws:
SQLException
- When the number of type of parameters does not match the types returned byFbStatement.getParameterDescriptor()
, a parameter value was not set, or when an error occurred executing this statement.
-
sendExecute
Sends the execute (forop_execute
orop_execute2
) to the database.- Parameters:
operation
- Operation (op_execute
orop_execute2
)parameters
- Parameters- Throws:
IOException
SQLException
-
processExecuteSingletonResponse
protected void processExecuteSingletonResponse(SqlResponse sqlResponse) throws SQLException, IOException Process the execute response for statements with a singleton response (op_execute2
; stored procedures).- Parameters:
sqlResponse
- SQL response object- Throws:
SQLException
IOException
-
processExecuteResponse
Process the execute response.- Parameters:
genericResponse
- Generic response object
-
fetchRows
Description copied from interface:FbStatement
Requests this statement to fetch the nextfetchSize
rows.Fetched rows are not returned from this method, but sent to the registered
StatementListener
instances.If an asynchronous fetch is pending, that pending fetch should be completed instead of performing a new fetch.
- Specified by:
fetchRows
in interfaceFbStatement
- Parameters:
fetchSize
- Number of rows to fetch (must be greater than0
)- Throws:
SQLException
- For database access errors, when called on a closed statement, when no cursor is open or when the fetch size is not greater than0
- See Also:
-
processFetchResponse
Process the fetch response by reading the returned rows and queuing them.- Parameters:
direction
- fetch direction- Throws:
IOException
SQLException
-
processFetchResponse
protected void processFetchResponse(FetchDirection direction, Response response) throws IOException, SQLException Process the fetch response by reading the returned rows and queuing them.- Parameters:
direction
- fetch directionresponse
- initial response, ornull
to retrieve initial response- Throws:
IOException
SQLException
-
sendFetch
Sends the fetch request to the database.- Parameters:
fetchSize
- Number of rows to fetch.- Throws:
SQLException
IOException
-
readSqlData
Reads a single row from the database.- Returns:
- Row as a
RowValue
- Throws:
SQLException
IOException
-
readColumnData
- Throws:
IOException
-
writeSqlData
protected void writeSqlData(RowDescriptor rowDescriptor, RowValue fieldValues, boolean useActualLength) throws IOException, SQLException Write a set of SQL data from aRowValue
.- Parameters:
rowDescriptor
- The row descriptorfieldValues
- The List containing the SQL data to be writtenuseActualLength
- Should actual field length be used (applies to CHAR)- Throws:
IOException
- if an error occurs while writing to the underlying output streamSQLException
-
writeColumnData
protected void writeColumnData(XdrOutputStream xdrOut, int len, byte[] buffer, FieldDescriptor fieldDescriptor) throws IOException - Throws:
IOException
-
sendAllocate
Sends the allocate request to the server.- Throws:
SQLException
IOException
-
processAllocateResponse
Processes the allocate response from the server.- Parameters:
response
- GenericResponse- Throws:
SQLException
-
getDefaultSqlInfoSize
public int getDefaultSqlInfoSize()- Specified by:
getDefaultSqlInfoSize
in interfaceFbStatement
- Returns:
- The default size to use for the sql info buffer
-
getMaxSqlInfoSize
public int getMaxSqlInfoSize()- Specified by:
getMaxSqlInfoSize
in interfaceFbStatement
- Returns:
- The maximum size to use for the sql info buffer
-