java.lang.Object
org.firebirdsql.gds.ng.AbstractFbAttachment<T>
org.firebirdsql.gds.ng.AbstractFbDatabase<WireDatabaseConnection>
org.firebirdsql.gds.ng.wire.AbstractFbWireDatabase
org.firebirdsql.gds.ng.wire.version10.V10Database
- All Implemented Interfaces:
AutoCloseable,FbAttachment,FbDatabase,ExceptionListenable,TransactionListener,FbWireAttachment,FbWireDatabase
- Direct Known Subclasses:
V11Database
FbWireDatabase implementation for the version 10 wire protocol.- Since:
- 3.0
- Author:
- Mark Rotteveel
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.firebirdsql.gds.ng.wire.FbWireAttachment
FbWireAttachment.AcceptPacket -
Field Summary
Fields inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireDatabase
protocolDescriptor, wireOperationsFields inherited from class org.firebirdsql.gds.ng.AbstractFbDatabase
databaseListenerDispatcherFields inherited from class org.firebirdsql.gds.ng.AbstractFbAttachment
connection, exceptionListenerDispatcher -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedV10Database(WireDatabaseConnection connection, ProtocolDescriptor descriptor) Creates a V10Database instance. -
Method Summary
Modifier and TypeMethodDescriptionprotected final voidAdditional tasks to execute directly after attach operation.final voidattach()Attach to the attachment type.protected final voidattachOrCreate(DatabaseParameterBuffer dpb, boolean create) final voidauthReceiveResponse(FbWireAttachment.AcceptPacket acceptPacket) Receive authentication response from the server.voidcancelOperation(int kind) Cancels the current operation.final voidCreates a new database, connection remains attached to database.final FbStatementcreateStatement(FbTransaction transaction) Creates a statement associated with a transactionprotected final voiddoReleaseObjectPacket(int operation, int objectId) Sends - without flushing - the (release) operation and objectId.final voidDrops (and deletes) the currently attached database.final voidexecuteImmediate(String statementText, FbTransaction transaction) Performs an execute immediate of a statement.final BlrCalculatorprotected EncodingGets theEncodingto use for the database filename.Initializes the asynchronous channel (for event notification).protected final voidActual implementation of database detach.protected final voidprocessAttachOrCreateResponse(GenericResponse genericResponse) Processes the response from the server to the attach or create operation.protected final voidprocessReleaseObjectResponse(Response response) Process the release object responsefinal FbTransactionreconnectTransaction(long transactionId) Reconnects a prepared transaction.voidreleaseObject(int operation, int objectId) Release object.protected final voidsendAttachOrCreateToBuffer(DatabaseParameterBuffer dpb, boolean create) Sends the buffer for op_attach or op_createstartTransaction(String statementText) Creates and starts a transaction using a SQL statementfinal FbWireTransactionCreates and starts a transaction.Methods inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireDatabase
cancelEvent, checkAttached, checkConnected, closeConnection, completeDeferredActions, consumePackets, countEvents, createBlobForInput, createBlobForOutput, createEventHandle, enqueueDeferredAction, forceClose, getDatabaseInfo, getHandle, getInfo, getWireOperations, getXdrIn, getXdrOut, getXdrStreamAccess, isAttached, queueEvent, readGenericResponse, readResponse, readSqlResponse, setNetworkTimeoutMethods inherited from class org.firebirdsql.gds.ng.AbstractFbDatabase
addDatabaseListener, addWeakDatabaseListener, close, createBlobParameterBuffer, createTransactionParameterBuffer, emptyRowDescriptor, getActiveTransactionCount, getConnectionDialect, getConnectionProperties, getDatabaseDialect, getDatabaseInfo, getDatabaseInformationProcessor, getDatabaseWarningCallback, getDescribeDatabaseInfoBlock, getOdsMajor, getOdsMinor, getOdsVersion, getParameterDescriptionInfoRequestItems, getStatementInfoRequestItems, getTransactionIdBuffer, removeDatabaseListener, setDatabaseDialect, setOdsMajor, setOdsMinor, transactionAdded, transactionStateChangedMethods inherited from class org.firebirdsql.gds.ng.AbstractFbAttachment
addExceptionListener, getDatatypeCoder, getEncoding, getEncodingFactory, getNetworkTimeout, getServerVersion, isLockedByCurrentThread, removeExceptionListener, requireNotAttached, safelyDetach, setAttached, setDetached, setServerVersion, withLockMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable
addExceptionListener, removeExceptionListenerMethods inherited from interface org.firebirdsql.gds.ng.FbAttachment
close, forceClose, getDatatypeCoder, getEncoding, getEncodingFactory, getNetworkTimeout, getServerVersion, isAttached, isLockedByCurrentThread, setNetworkTimeout, withLockMethods inherited from interface org.firebirdsql.gds.ng.FbDatabase
addDatabaseListener, addWeakDatabaseListener, cancelEvent, countEvents, createBlobForInput, createBlobForInput, createBlobForInput, createBlobForOutput, createBlobForOutput, createBlobForOutput, createBlobParameterBuffer, createEventHandle, createTransactionParameterBuffer, emptyRowDescriptor, getConnectionDialect, getConnectionProperties, getDatabaseDialect, getDatabaseInfo, getDatabaseInfo, getHandle, getOdsMajor, getOdsMinor, getOdsVersion, queueEvent, removeDatabaseListenerMethods inherited from interface org.firebirdsql.gds.ng.wire.FbWireAttachment
getWireOperations, getXdrStreamAccess, readGenericResponseMethods inherited from interface org.firebirdsql.gds.ng.wire.FbWireDatabase
completeDeferredActions, consumePackets, enqueueDeferredAction, getInfo, readResponse, readSqlResponse
-
Constructor Details
-
V10Database
Creates a V10Database instance.- Parameters:
connection- A WireConnection with an established connection to the server.descriptor- The ProtocolDescriptor that created this connection (this is used for creating further dependent objects).
-
-
Method Details
-
attach
Description copied from interface:FbAttachmentAttach to the attachment type.- Specified by:
attachin interfaceFbAttachment- Throws:
SQLException
-
attachOrCreate
protected final void attachOrCreate(DatabaseParameterBuffer dpb, boolean create) throws SQLException - Parameters:
dpb- Database parameter buffercreate-truecreate database,falseonly attach- Throws:
SQLException- For errors during attach or create
-
sendAttachOrCreateToBuffer
protected final void sendAttachOrCreateToBuffer(DatabaseParameterBuffer dpb, boolean create) throws SQLException, IOException Sends the buffer for op_attach or op_create- Parameters:
dpb- Database parameter buffercreate-truecreate database,falseonly attach- Throws:
SQLException- If the connection is not openIOException- For errors writing to the connection
-
getFilenameEncoding
Gets theEncodingto use for the database filename.- Parameters:
dpb- Database parameter buffer- Returns:
- Encoding
-
processAttachOrCreateResponse
Processes the response from the server to the attach or create operation.- Parameters:
genericResponse- GenericResponse received from the server.
-
afterAttachActions
Additional tasks to execute directly after attach operation.Implementation retrieves database information like dialect ODS and server version.
- Throws:
SQLException- For errors reading or writing database information.
-
internalDetach
Description copied from class:AbstractFbDatabaseActual implementation of database detach.Implementations of this method should only be called from
AbstractFbDatabase.close(), and should not notify database listeners of the databaseDatabaseListener.detaching(FbDatabase)andDatabaseListener.detached(FbDatabase)events.- Specified by:
internalDetachin classAbstractFbDatabase<WireDatabaseConnection>- Throws:
SQLException
-
createDatabase
Description copied from interface:FbDatabaseCreates a new database, connection remains attached to database.- Specified by:
createDatabasein interfaceFbDatabase- Throws:
SQLException
-
dropDatabase
Description copied from interface:FbDatabaseDrops (and deletes) the currently attached database.- Specified by:
dropDatabasein interfaceFbDatabase- Throws:
SQLException
-
startTransaction
Description copied from interface:FbDatabaseCreates and starts a transaction.- Specified by:
startTransactionin interfaceFbDatabase- Parameters:
tpb- TransactionParameterBuffer with the required transaction options- Returns:
- FbTransaction
- Throws:
SQLException
-
startTransaction
Description copied from interface:FbDatabaseCreates and starts a transaction using a SQL statement- Specified by:
startTransactionin interfaceFbDatabase- Parameters:
statementText- statement which starts a transaction- Returns:
- FbTransaction
- Throws:
SQLException- for database access error
-
reconnectTransaction
Description copied from interface:FbDatabaseReconnects a prepared transaction.Reconnecting transactions is only allowed for transactions in limbo (prepared, but not committed or rolled back).
- Specified by:
reconnectTransactionin interfaceFbDatabase- Parameters:
transactionId- The id of the transaction to reconnect.- Returns:
- FbTransaction
- Throws:
SQLException- For errors reconnecting the transaction
-
createStatement
Description copied from interface:FbDatabaseCreates a statement associated with a transaction- Specified by:
createStatementin interfaceFbDatabase- Parameters:
transaction- FbTransaction to associate with this statement (can benull)- Returns:
- FbStatement
- Throws:
SQLException
-
cancelOperation
Description copied from interface:FbDatabaseCancels the current operation.The cancellation types are:
ISCConstants.fb_cancel_disable- disables execution of fb_cancel_raise requests for the specified attachment. It can be useful when your program is executing critical operations, such as cleanup, for example.
ISCConstants.fb_cancel_enable- re-enables delivery of a cancel execution that was previously disabled. The 'cancel' state is effective by default, being initialized when the attachment is created.
ISCConstants.fb_cancel_raise- cancels any activity related to the database handle. The effect will be that, as soon as possible, the engine will try to stop the running request and return an exception to the caller
ISCConstants.fb_cancel_abort- forcibly close client side of connection. Useful if you need to close a connection urgently. All active transactions will be rolled back by the server. 'Success' is always returned to the application. Use with care!
- Specified by:
cancelOperationin interfaceFbDatabase- Parameters:
kind- Cancellation type- Throws:
SQLException- For errors cancelling, or if the cancel operation is not supported.
-
executeImmediate
public final void executeImmediate(String statementText, FbTransaction transaction) throws SQLException Description copied from interface:FbDatabasePerforms an execute immediate of a statement.A call to this method is the equivalent of a
isc_dsql_execute_immediate()without parameters.- Specified by:
executeImmediatein interfaceFbDatabase- Parameters:
statementText- Statement texttransaction- Transaction (nullonly allowed if database is not attached!)- Throws:
SQLException- For errors executing the statement, or iftransactionisnullwhen the database is attached or notnullwhen the database is not attached
-
releaseObject
Description copied from interface:FbWireDatabaseRelease object.- Specified by:
releaseObjectin interfaceFbWireDatabase- Parameters:
operation- OperationobjectId- ID of the object to release- Throws:
SQLException
-
initAsynchronousChannel
Description copied from class:AbstractFbWireDatabaseInitializes the asynchronous channel (for event notification).- Specified by:
initAsynchronousChannelin classAbstractFbWireDatabase- Throws:
SQLException- For errors establishing the channel, or if the channel already exists.
-
doReleaseObjectPacket
protected final void doReleaseObjectPacket(int operation, int objectId) throws IOException, SQLException Sends - without flushing - the (release) operation and objectId.- Parameters:
operation- OperationobjectId- Id of the object to release- Throws:
IOException- For errors writing to the connectionSQLException- If the database connection is not available
-
processReleaseObjectResponse
Process the release object response- Parameters:
response- The response object
-
getBlrCalculator
- Specified by:
getBlrCalculatorin interfaceFbWireDatabase- Returns:
- The
BlrCalculatorinstance for this database.
-
authReceiveResponse
public final void authReceiveResponse(FbWireAttachment.AcceptPacket acceptPacket) throws IOException, SQLException Description copied from interface:FbWireAttachmentReceive authentication response from the server.This method is only relevant for protocol V13 or higher.
- Specified by:
authReceiveResponsein interfaceFbWireAttachment- Parameters:
acceptPacket- Packet withop_cond_acceptdata, ornullwhen the data should be read from the connection.- Throws:
IOException- For errors reading the response from the connection.SQLException- For errors returned from the server, or when attempting to read.
-