Interface RawStoreFactory
- All Superinterfaces:
Corruptable
- All Known Implementing Classes:
RawStore
Segments are identified by integer identifiers that are unique within a RawStoreFactory.
Containers are also identified by unique integer identifiers within a RawStoreFactory, but will overlap with segment identifiers.
LIMITS
This is a list of (hopefully) all limits within the raw store. Where a size
has more than one limit all are documented (rather than just the most
restrictive) so that the correct limit can be found if the most restictive
is every removed.
- Field -
- Max length 2^31 - 1 (2147483647) -
- Record -
- Max number of fields 2^31 - 1 (2147483647) - from use of Object[] array to represent row, which can "only" have int sized number of array members.
- Page -
- Container -
- Segment -
- Raw Store -
Access and RawStore work together to provide the ACID properties of transactions. On a high level, RawStore deals with anything that directly impacts persistency. On a more detailed level, RawStore provides logging, rollback and recovery, data management on page, page allocation and deallocation, container allocation and deallocation.
RawStore is organized as 3 branches, transaction, data, and logging. These branches each have its own "factory", the transaction factory hands out transactions, the data factory hands out containers, and the log factory hands out logger (or log buffers) for transactions to write on. For a more detailed description on these factories, please see their corresponding javadocs. MT - Thread Safe
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Default value for CONTAINER_CACHE_SIZE_PARAMETER (100).static final int
Maximum container cache size we will accept (MAXINT).static final int
Minimum container cache size accepted (2).static final String
Property name for the number of open files to maintain associated with the page cache.static final String
Property name for container which attempts to be created with an initial size of this many pages.static final String
A File used to save the old copy of the verify key (Attribute.CRYPTO_EXTERNAL_KEY_VERIFY_FILE) file during re-encryption of the database.static final String
This variable is used to store the encryption scheme to allow for any future changes in encryption schemes of data This property has been introduced in version 10 Value starts at 1static final int
static final int
static final int
static final String
Tracks the status of any database-wide cryptographic operations.static final int
default encryption block size In old existing databases (ie 5.1.x), the default encryption block size used is 8.static final int
Derby 10 Store Major versionstatic final int
Derby Store Minor Version (1)static final int
Derby Store Minor Version (10)static final int
Derby Store Minor Version (2)static final int
Derby Store Minor Version (3)static final int
Derby Store Minor Version (4)static final String
If dataEncryption is true, store the encrypted key in services.properties file.static final int
encryption alignment requirement.static final String
encryption block size used during creation of encrypted database This property is not set by the user; it is set by the engine when RawStore boots up during creation of an encrypted databasestatic final String
for debugging, keep all transaction logs intact.static final String
Store the encryption scheme used for logging This will allow for any future changes in encryption schemes of logs This variable has been introduced in version 10 and value starts at 1.static final short
Maximum number of initial pages when a container is createdstatic final int
Default value for MINIMUM_RECORD_SIZE_PARAMETER for heap tables that allow overflow.static final int
Minimum value for MINIMUM_RECORD_SIZE_PARAMETER (1).static final String
Property name for the default minimum record size to be used in the storage area.static final String
module namestatic final String
When the datbase is getting re-encrypted old encrypted key is stored in the service.properties until re-encyrption successfully completes or rolled back.static final int
Default value for PAGE_CACHE_SIZE_PARAMETER (1000).static final int
Maximum page cache size we will accept (MAXINT).static final int
Minimum page cache size we will accept (40).static final String
Property name for the page cache size to be used in the storage area.static final String
Property name for percentage of space to leave free on page for updates.static final String
static final String
Property name for container which reuses recordId when a page is reused.static final int
Default value for PAGE_SIZE_PARAMETER (4096).static final int
Minimum page size we will accept (1024).static final String
static final String
The following is a to enable patch for databases with recovery errors during redo of InitPage.static final String
Property name for the number of pages we try to pre-allocate in one /** synchronous I/Ostatic final int
Default value for STREAM_FILE_BUFFER_SIZE_PARAMETER (16384).static final int
Maximum stream file buffer size we will accept (MAXINT).static final int
Minimum stream file buffer size we will accept (1024).static final String
Property name for buffer size to be used in the stream file container. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Backup the database to backupDir.void
backupAndEnableLogArchiveMode
(String backupDir, boolean deleteOnlineArchivedLogFiles, boolean wait) Backup the database to a backup directory and enable the log archive mode that will keep the archived log files required for roll-forward from this version backup.changeBootPassword
(Properties properties, Serializable changePassword) Change the boot password.void
Checkpoint the database.boolean
checkVersion
(int requiredMajorVersion, int requiredMinorVersion, String feature) Check to see if a database has been upgraded to the required level in order to use a store feature.void
Use the available storage factory handle to create a readme file in "seg0" directory warning users to not edit/delete any files in the directory to avoid database corruption.void
int
decrypt
(byte[] ciphertext, int offset, int length, byte[] cleartext, int outputOffset) Decrypt cleartext from ciphertext.void
disableLogArchiveMode
(boolean deleteOnlineArchivedLogFiles) disables the log archival process, i.e No old log files will be kept around for a roll-forward recovery.int
encrypt
(byte[] cleartext, int offset, int length, byte[] ciphertext, int outputOffset, boolean newEngine) Encrypt cleartext into ciphertext.void
Start failover for this database.findUserTransaction
(ContextManager contextMgr, String transName) Find a user transaction in the context manager, which must be the current context manager.void
freeze()
Freeze the database temporarily so a backup can be taken.void
Freeze the database from altering any persistent storage.If this raw store has a daemon that services its need, return the daemon.int
Returns the encryption block size used during creation of the encrypted databaseGet the LockFactory to use with this store.long
Return an id which can be used to create a container.void
Get JBMS properties relevant to raw storeGet the Transaction Factory to use with this store.void
idle()
Idle the raw store as much as possible.boolean
Is the store read-only.openFlushedScan
(DatabaseInstant start, int groupsIWant) Get a flushed scan.int
random()
Returns a secure random number for this raw store - if database is not encrypted, returns 0.void
setUndoInsertEventHandler
(UndoHandler undo_handle) Register a handler class for insert undo events.startGlobalTransaction
(ContextManager contextMgr, int format_id, byte[] global_id, byte[] local_id) Create a global user transaction, almost all work within the raw store is performed in the context of a transaction.startInternalTransaction
(ContextManager contextMgr) Create an internal transaction.startNestedReadOnlyUserTransaction
(Transaction parentTransaction, CompatibilitySpace compatibilitySpace, ContextManager contextMgr, String transName) Create a nested user transaction, almost all work within the raw store is performed in the context of a transaction.startNestedUpdateUserTransaction
(Transaction parentTransaction, ContextManager contextMgr, String transName, boolean flush_log_on_xact_end) Create a nested user transaction, almost all work within the raw store is performed in the context of a transaction.void
startReplicationMaster
(String dbmaster, String host, int port, String replicationMode) Start the replication master role for this databasestartTransaction
(ContextManager contextMgr, String transName) Create a user transaction, almost all work within the raw store is performed in the context of a transaction.void
Stop the replication master role for this database.void
unfreeze()
Unfreeze the database after a backup has been taken.void
Unfreeze the database, persistent storage can now be altered.Methods inherited from interface org.apache.derby.iapi.store.raw.Corruptable
markCorrupt
-
Field Details
-
DERBY_STORE_MINOR_VERSION_1
static final int DERBY_STORE_MINOR_VERSION_1Derby Store Minor Version (1)- See Also:
-
DERBY_STORE_MINOR_VERSION_2
static final int DERBY_STORE_MINOR_VERSION_2Derby Store Minor Version (2)- See Also:
-
DERBY_STORE_MINOR_VERSION_3
static final int DERBY_STORE_MINOR_VERSION_3Derby Store Minor Version (3)- See Also:
-
DERBY_STORE_MINOR_VERSION_4
static final int DERBY_STORE_MINOR_VERSION_4Derby Store Minor Version (4)- See Also:
-
DERBY_STORE_MINOR_VERSION_10
static final int DERBY_STORE_MINOR_VERSION_10Derby Store Minor Version (10)- See Also:
-
DERBY_STORE_MAJOR_VERSION_10
static final int DERBY_STORE_MAJOR_VERSION_10Derby 10 Store Major version- See Also:
-
PAGE_SIZE_DEFAULT
static final int PAGE_SIZE_DEFAULTDefault value for PAGE_SIZE_PARAMETER (4096).- See Also:
-
PAGE_SIZE_MINIMUM
static final int PAGE_SIZE_MINIMUMMinimum page size we will accept (1024).- See Also:
-
PAGE_SIZE_STRING
- See Also:
-
PAGE_CACHE_SIZE_PARAMETER
Property name for the page cache size to be used in the storage area. Equal to 'derby.storage.pageCacheSize'- See Also:
-
PAGE_CACHE_SIZE_DEFAULT
static final int PAGE_CACHE_SIZE_DEFAULTDefault value for PAGE_CACHE_SIZE_PARAMETER (1000).- See Also:
-
PAGE_CACHE_SIZE_MINIMUM
static final int PAGE_CACHE_SIZE_MINIMUMMinimum page cache size we will accept (40).- See Also:
-
PAGE_CACHE_SIZE_MAXIMUM
static final int PAGE_CACHE_SIZE_MAXIMUMMaximum page cache size we will accept (MAXINT).- See Also:
-
CONTAINER_CACHE_SIZE_PARAMETER
Property name for the number of open files to maintain associated with the page cache. Internally this is referred to as the "ContainerCache". Each object in this cache maps to a java level "open" file on a file in the database directory. Although actual implementation depends on JVM implementation, this usually maps to underlying open file resources in the underlying operating system. Setting this number too high may result in I/O failures reported by Derby, which are the result of hitting some user and/or OS limit on the number of open files allowed. These I/O errors may happen during read, write and/or open operations. Sometimes these limits can be avoided simply by executing an OS specific command to raise the maximum open files allowed by whatever mechanism is used to control resources allowed to be consumed by the JVM. Derby may also open other files separate from this cache, so exausting the open file resource may cause other operations than I/O to data pages to fail. A partial list of these operations includes: recovery logging, error logging, external sorting, and LOB disk overflow. The default maximum size of this cache is 100 open files. The minimum size of this cache is 2 open files, attempting to set this cache to a smaller size or a negative number will result in a size 2 cache. Setting the cache size to a number bigger than an INT, or any sort of illegal format number will result in a cache size of 100 open files. Equal to 'derby.storage.fileCacheSize'- See Also:
-
CONTAINER_CACHE_SIZE_DEFAULT
static final int CONTAINER_CACHE_SIZE_DEFAULTDefault value for CONTAINER_CACHE_SIZE_PARAMETER (100).- See Also:
-
CONTAINER_CACHE_SIZE_MINIMUM
static final int CONTAINER_CACHE_SIZE_MINIMUMMinimum container cache size accepted (2).- See Also:
-
CONTAINER_CACHE_SIZE_MAXIMUM
static final int CONTAINER_CACHE_SIZE_MAXIMUMMaximum container cache size we will accept (MAXINT).- See Also:
-
MAX_CONTAINER_INITIAL_PAGES
static final short MAX_CONTAINER_INITIAL_PAGESMaximum number of initial pages when a container is created- See Also:
-
MINIMUM_RECORD_SIZE_PARAMETER
Property name for the default minimum record size to be used in the storage area. Minimum record size is the minimum number of bytes that a record will reserve on disk.- See Also:
-
MINIMUM_RECORD_SIZE_DEFAULT
static final int MINIMUM_RECORD_SIZE_DEFAULTDefault value for MINIMUM_RECORD_SIZE_PARAMETER for heap tables that allow overflow. By setting minimumRecordSize to 12 bytes, we guarantee there is enough space to update the a head row even if there is not enough space on the page. The 12 bytes of user data along with the existing space in the record header will guarantee there is room to write an overflow row header which will use the same initial portion of the record header and at most 12 additional bytes for an overflow pointer (page + id). Note that this is the "user" portion of the record. The record also will contain space for the "non-user" portion which includes the offset table and the record header.- See Also:
-
MINIMUM_RECORD_SIZE_MINIMUM
static final int MINIMUM_RECORD_SIZE_MINIMUMMinimum value for MINIMUM_RECORD_SIZE_PARAMETER (1).- See Also:
-
PAGE_RESERVED_SPACE_PARAMETER
Property name for percentage of space to leave free on page for updates.- See Also:
-
PAGE_RESERVED_ZERO_SPACE_STRING
- See Also:
-
PRE_ALLOCATE_PAGE
Property name for the number of pages we try to pre-allocate in one /** synchronous I/O- See Also:
-
PAGE_REUSABLE_RECORD_ID
Property name for container which reuses recordId when a page is reused. Defaults to false, which means recordId is never reused. This property should NOT be set by the end user, only Access should set it for special conglomerates which does not count on permanant unique recordIds for all records.- See Also:
-
STREAM_FILE_BUFFER_SIZE_PARAMETER
Property name for buffer size to be used in the stream file container. Equal to 'derby.storage.streamFileBufferSize'- See Also:
-
STREAM_FILE_BUFFER_SIZE_DEFAULT
static final int STREAM_FILE_BUFFER_SIZE_DEFAULTDefault value for STREAM_FILE_BUFFER_SIZE_PARAMETER (16384).- See Also:
-
STREAM_FILE_BUFFER_SIZE_MINIMUM
static final int STREAM_FILE_BUFFER_SIZE_MINIMUMMinimum stream file buffer size we will accept (1024).- See Also:
-
STREAM_FILE_BUFFER_SIZE_MAXIMUM
static final int STREAM_FILE_BUFFER_SIZE_MAXIMUMMaximum stream file buffer size we will accept (MAXINT).- See Also:
-
CONTAINER_INITIAL_PAGES
Property name for container which attempts to be created with an initial size of this many pages. Defaults to 1 page.
All containers are guarenteed to be created with at least 1 page, if this property is set, it will attempt to allocate CONTAINER_INITIAL_PAGES, but with no guarentee. CONTAIENR_INITIAL_PAGES legally ranges from 1 to MAX_CONTAINER_INITIAL_PAGES. Values < 1 will be set to 1 and values > MAX_CONTAINER_INITIAL_PAGES will be set to MAX_CONTAINER_INITIAL_PAGES This property should only be set in the PROPERTIES list in a CREATE TABLE or CREATE INDEX statement. The global setting of this property has no effect.- See Also:
-
ENCRYPTION_ALIGNMENT
static final int ENCRYPTION_ALIGNMENTencryption alignment requirement.- See Also:
-
DEFAULT_ENCRYPTION_BLOCKSIZE
static final int DEFAULT_ENCRYPTION_BLOCKSIZEdefault encryption block size In old existing databases (ie 5.1.x), the default encryption block size used is 8. Do not change this value unless you account for downgrade issues- See Also:
-
ENCRYPTION_BLOCKSIZE
encryption block size used during creation of encrypted database This property is not set by the user; it is set by the engine when RawStore boots up during creation of an encrypted database- See Also:
-
DATA_ENCRYPT_ALGORITHM_VERSION
This variable is used to store the encryption scheme to allow for any future changes in encryption schemes of data This property has been introduced in version 10 Value starts at 1- See Also:
-
LOG_ENCRYPT_ALGORITHM_VERSION
Store the encryption scheme used for logging This will allow for any future changes in encryption schemes of logs This variable has been introduced in version 10 and value starts at 1.- See Also:
-
ENCRYPTED_KEY
If dataEncryption is true, store the encrypted key in services.properties file. It is really the encrypted key, but the property key is called the encryptedBootPassword.- See Also:
-
OLD_ENCRYPTED_KEY
When the datbase is getting re-encrypted old encrypted key is stored in the service.properties until re-encyrption successfully completes or rolled back. It is really the old encryptedkey, but the property key is called the OldEncryptedBootPassword.- See Also:
-
DB_ENCRYPTION_STATUS
Tracks the status of any database-wide cryptographic operations.The relevant operations are encryption, re-encryption and decryption. THe property is required to be able to bring the database back to state it was in before the cryptographic operation started in case the transformation of the database is aborted.
- See Also:
-
DB_ENCRYPTION_IN_PROGRESS
static final int DB_ENCRYPTION_IN_PROGRESS- See Also:
-
DB_ENCRYPTION_IN_UNDO
static final int DB_ENCRYPTION_IN_UNDO- See Also:
-
DB_ENCRYPTION_IN_CLEANUP
static final int DB_ENCRYPTION_IN_CLEANUP- See Also:
-
CRYPTO_OLD_EXTERNAL_KEY_VERIFY_FILE
A File used to save the old copy of the verify key (Attribute.CRYPTO_EXTERNAL_KEY_VERIFY_FILE) file during re-encryption of the database.- See Also:
-
KEEP_TRANSACTION_LOG
for debugging, keep all transaction logs intact.- See Also:
-
PATCH_INITPAGE_RECOVER_ERROR
The following is a to enable patch for databases with recovery errors during redo of InitPage. If this property is set and the page on the disk is corrupted and is getting exceptions like invalid page format ids, we cook up the page during the recovery time. We have seen this kind of problem with 1.5.1 databases from customer Tridium ( Bug no: 3813). This patch needs to be kept unless we find the problem is during recovery process. If we discover this problem is actaully happening at the recovery then this patch should be backed out.- See Also:
-
MODULE
module name- See Also:
-
-
Method Details
-
isReadOnly
boolean isReadOnly()Is the store read-only. -
getLockFactory
LockFactory getLockFactory()Get the LockFactory to use with this store. -
setUndoInsertEventHandler
Register a handler class for insert undo events.Register a class to be called when an undo of an insert is executed. When an undo of an event is executed by the raw store UndoHandler.insertUndoNotify() will be called, allowing upper level callers to execute code as necessary. The initial need is for the access layer to be able to queue post commit reclaim space in the case of inserts which are aborted (including the normal case of inserts failed for duplicate key violations) (see DERBY-4057)
- Throws:
StandardException
- Standard Derby error policy
-
startTransaction
Create a user transaction, almost all work within the raw store is performed in the context of a transaction.Starting a transaction always performs the following steps.
- Create an raw store transaction context
- Create a new idle transaction and then link it to the context.
Only one user transaction and one nested user transaction can be active
in a context at any one time.
After a commit the transaction may be re-used.
Raw Store Transaction Context Behaviour
The cleanupOnError() method of this context behaves as follows:- If error is an instance of StandardException that has a severity less than ExceptionSeverity.TRANSACTION_SEVERITY then no action is taken.
- If error is an instance of StandardException that has a severity equal to ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, and the transaction returned to the idle state.
- If error is an instance of StandardException that has a severity greater than ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- If error is not an instance of StandardException then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- Parameters:
contextMgr
- is the context manager to use. An exception will be thrown if context is not the current context.transName
- is the name of the transaction. Thsi name will be displayed by the transactiontable VTI.- Throws:
StandardException
- Standard Derby error policy- See Also:
-
startGlobalTransaction
Transaction startGlobalTransaction(ContextManager contextMgr, int format_id, byte[] global_id, byte[] local_id) throws StandardException Create a global user transaction, almost all work within the raw store is performed in the context of a transaction.The (format_id, global_id, branch_id) triplet is meant to come exactly from a javax.transaction.xa.Xid. We don't use Xid so that the system can be delivered on a non-1.2 vm system and not require the javax classes in the path.
Starting a transaction always performs the following steps.
- Create an raw store transaction context
- Create a new idle transaction and then link it to the context.
Only one user transaction can be active in a context at any one time.
After a commit the transaction may be re-used.
Raw Store Transaction Context Behaviour
The cleanupOnError() method of this context behaves as follows:- If error is an instance of StandardException that has a severity less than ExceptionSeverity.TRANSACTION_SEVERITY then no action is taken.
- If error is an instance of StandardException that has a severity equal to ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, and the transaction returned to the idle state.
- If error is an instance of StandardException that has a severity greater than ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- If error is not an instance of StandardException then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- Parameters:
contextMgr
- is the context manager to use. An exception will be thrown if context is not the current context.format_id
- the format id part of the Xid - ie. Xid.getFormatId().global_id
- the global transaction identifier part of XID - ie. Xid.getGlobalTransactionId().local_id
- The branch qualifier of the Xid - ie. Xid.getBranchQaulifier()- Throws:
StandardException
- Standard Derby error policy- See Also:
-
findUserTransaction
Transaction findUserTransaction(ContextManager contextMgr, String transName) throws StandardException Find a user transaction in the context manager, which must be the current context manager. If a user transaction does not already exist, then create one @see #startTransaction- Parameters:
contextMgr
- the context manager to use. An exception will be thrown if context is not the current context.transName
- If a new transaction is started, it will be given this name. The name is displayed in the transactiontable VTI.- Throws:
StandardException
- Standard Derby error policy- See Also:
-
startInternalTransaction
Create an internal transaction.Starting an internal transaction always performs the following steps.
- Create an raw store internal transaction context
- Create a new idle internal transaction and then link it to the
context.
AN internal transaction is identical to a user transaction with the exception that
- Logical operations are not supported
- Savepoints are not supported
- Containers are not closed when commit() is called.
- Pages are not unlatched (since containers are not closed) when commit() is called.
- During recovery time internal transactions are rolled back before user transactions.
Raw Store Internal Transaction Context Behaviour
The cleanupOnError() method of this context behaves as follows:- If error is an instance of StandardException that has a severity less than ExceptionSeverity.TRANSACTION_SEVERITY then the internal transaction is aborted, the internal transaction is closed, the context is popped off the stack, and an exception of severity Transaction exception is re-thrown.
- If error is an instance of StandardException that has a severity greater than or equal to ExceptionSeverity.TRANSACTION_SEVERITY then the context's internal transaction is aborted, the internal transaction is closed and the context is popped off the stack.
- If error is not an instance of StandardException then the context's internal transaction is aborted, the internal transaction is closed and the context is popped off the stack.
- Throws:
StandardException
- Standard Derby error policy- See Also:
-
startNestedReadOnlyUserTransaction
Transaction startNestedReadOnlyUserTransaction(Transaction parentTransaction, CompatibilitySpace compatibilitySpace, ContextManager contextMgr, String transName) throws StandardException Create a nested user transaction, almost all work within the raw store is performed in the context of a transaction.A nested user transaction is exactly the same as a user transaction, except that one can specify a compatibility space to associate with the transaction. Starting a transaction always performs the following steps.
- Create an raw store transaction context
- Create a new idle transaction and then link it to the context.
Only one user transaction and one nested user transaction can be active
in a context at any one time.
After a commit the transaction may be re-used.
Raw Store Transaction Context Behaviour
The cleanupOnError() method of this context behaves as follows:- If error is an instance of StandardException that has a severity less than ExceptionSeverity.TRANSACTION_SEVERITY then no action is taken.
- If error is an instance of StandardException that has a severity equal to ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, and the transaction returned to the idle state. If a user transaction exists on the context stack then that transaction is aborted also.
- If error is an instance of StandardException that has a severity greater than ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- If error is not an instance of StandardException then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- Parameters:
parentTransaction
- parent transactioncompatibilitySpace
- compatibility space to use for locks.contextMgr
- is the context manager to use. An exception will be thrown if context is not the current context.transName
- is the name of the transaction. This name will be displayed by the transactiontable VTI.- Throws:
StandardException
- Standard Derby error policy- See Also:
-
startNestedUpdateUserTransaction
Transaction startNestedUpdateUserTransaction(Transaction parentTransaction, ContextManager contextMgr, String transName, boolean flush_log_on_xact_end) throws StandardException Create a nested user transaction, almost all work within the raw store is performed in the context of a transaction.A nested user transaction is exactly the same as a user transaction, except that one can specify a compatibility space to associate with the transaction. Starting a transaction always performs the following steps.
- Create an raw store transaction context
- Create a new idle transaction and then link it to the context.
Only one user transaction and one nested user transaction can be active
in a context at any one time.
After a commit the transaction may be re-used.
Raw Store Transaction Context Behaviour
The cleanupOnError() method of this context behaves as follows:- If error is an instance of StandardException that has a severity less than ExceptionSeverity.TRANSACTION_SEVERITY then no action is taken.
- If error is an instance of StandardException that has a severity equal to ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, and the transaction returned to the idle state. If a user transaction exists on the context stack then that transaction is aborted also.
- If error is an instance of StandardException that has a severity greater than ExceptionSeverity.TRANSACTION_SEVERITY then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- If error is not an instance of StandardException then the context's transaction is aborted, the transaction closed, and the context is popped off the stack.
- Parameters:
parentTransaction
- parent transactioncontextMgr
- is the context manager to use. An exception will be thrown if context is not the current context.transName
- is the name of the transaction. This name will be displayed by the transactiontable VTI.flush_log_on_xact_end
- By default should the transaction commit and abort be synced to the log. Normal usage should pick true, unless there is specific performance need and usage works correctly if a commit can be lost on system crash.- Throws:
StandardException
- Standard Derby error policy- See Also:
-
getTransactionInfo
TransactionInfo[] getTransactionInfo()- See Also:
-
startReplicationMaster
void startReplicationMaster(String dbmaster, String host, int port, String replicationMode) throws StandardException Start the replication master role for this database- Parameters:
dbmaster
- The master database that is being replicated.host
- The hostname for the slaveport
- The port the slave is listening onreplicationMode
- The type of replication contract. Currently only asynchronous replication is supported, but 1-safe/2-safe/very-safe modes may be added later.- Throws:
StandardException
- Standard Derby exception policy, thrown on error.
-
stopReplicationMaster
Stop the replication master role for this database.- Throws:
StandardException
- Standard Derby exception policy, thrown on error.
-
failover
Start failover for this database.- Parameters:
dbname
- the replication database that is being failed over.- Throws:
StandardException
- Standard Derby exception policy, 1) If the failover succeeds, an exception is thrown to indicate that the master database was shutdown after a successful failover 2) If a failure occurs during network communication with slave.
-
freeze
Freeze the database temporarily so a backup can be taken.Please see Derby on line documentation on backup and restore.
- Throws:
StandardException
- Thrown on error
-
unfreeze
Unfreeze the database after a backup has been taken.Please see Derby on line documentation on backup and restore.
- Throws:
StandardException
- Thrown on error
-
backup
Backup the database to backupDir.Please see Derby on line documentation on backup and restore.
- Parameters:
backupDir
- the name of the directory where the backup should be stored.wait
- if true, waits for all the backup blocking operations in progress to finish.- Throws:
StandardException
- Thrown on error
-
backupAndEnableLogArchiveMode
void backupAndEnableLogArchiveMode(String backupDir, boolean deleteOnlineArchivedLogFiles, boolean wait) throws StandardException Backup the database to a backup directory and enable the log archive mode that will keep the archived log files required for roll-forward from this version backup.- Parameters:
backupDir
- the directory name where the database backup should go. This directory will be created if not it does not exist.deleteOnlineArchivedLogFiles
- If true deletes online archived log files that exist before this backup, delete will occur only after backup is complete.wait
- if true, waits for all the backup blocking operations in progress to finish.- Throws:
StandardException
- Thrown on error
-
disableLogArchiveMode
disables the log archival process, i.e No old log files will be kept around for a roll-forward recovery.- Parameters:
deleteOnlineArchivedLogFiles
- If true deletes all online archived log files that exist before this call immediately; Only restore that can be performed after disabling log archive mode is version recovery.- Throws:
StandardException
- Thrown on error
-
checkpoint
Checkpoint the database. The raw store will wait for any current checkpoints to complete. It will start a new checkpoint and not return until that checkpoint completes.- Throws:
StandardException
- Standard Derby error policy
-
idle
Idle the raw store as much as possible.- Throws:
StandardException
- Standard Derby error policy
-
openFlushedScan
Get a flushed scan.- Parameters:
start
- The instant for the beginning of the scan.groupsIWant
- log record groups the caller wants to scan.- Throws:
StandardException
- StandardDerby error policy
-
getDaemon
DaemonService getDaemon()If this raw store has a daemon that services its need, return the daemon. If not, return null -
getTransactionFactoryModule
String getTransactionFactoryModule() -
getDataFactoryModule
String getDataFactoryModule() -
getLogFactoryModule
String getLogFactoryModule() -
getXAResourceManager
- Throws:
StandardException
-
createFinished
- Throws:
StandardException
-
getRawStoreProperties
Get JBMS properties relevant to raw store- Throws:
StandardException
- Standard Derby exception policy.
-
freezePersistentStore
Freeze the database from altering any persistent storage.- Throws:
StandardException
- Standard Derby exception policy.
-
unfreezePersistentStore
Unfreeze the database, persistent storage can now be altered.- Throws:
StandardException
- Standard Derby exception policy.
-
encrypt
int encrypt(byte[] cleartext, int offset, int length, byte[] ciphertext, int outputOffset, boolean newEngine) throws StandardException Encrypt cleartext into ciphertext.- Throws:
StandardException
- Standard Derby Error Policy- See Also:
-
decrypt
int decrypt(byte[] ciphertext, int offset, int length, byte[] cleartext, int outputOffset) throws StandardException Decrypt cleartext from ciphertext.- Throws:
StandardException
- Standard Derby Error Policy- See Also:
-
getEncryptionBlockSize
int getEncryptionBlockSize()Returns the encryption block size used during creation of the encrypted database -
random
int random()Returns a secure random number for this raw store - if database is not encrypted, returns 0. -
changeBootPassword
Serializable changeBootPassword(Properties properties, Serializable changePassword) throws StandardException Change the boot password. Return the encrypted form of the secret key. The new value must be a String of the form: oldBootPassword, newBootPassword- Throws:
StandardException
- Standard Derby Error Policy
-
getMaxContainerId
Return an id which can be used to create a container.Return an id number with is greater than any existing container in the current database. Caller will use this to allocate future container numbers - most likely caching the value and then incrementing it as it is used.
- Returns:
- The an id which can be used to create a container.
- Throws:
StandardException
- Standard exception policy.
-
getXactFactory
TransactionFactory getXactFactory()Get the Transaction Factory to use with this store. -
checkVersion
boolean checkVersion(int requiredMajorVersion, int requiredMinorVersion, String feature) throws StandardException Check to see if a database has been upgraded to the required level in order to use a store feature.- Parameters:
requiredMajorVersion
- required database Engine major versionrequiredMinorVersion
- required database Engine minor versionfeature
- Non-null to throw an exception, null to return the state of the version match.- Returns:
true
if the database has been upgraded to the required level,false
otherwise.- Throws:
StandardException
- if the database is not at the require version whenfeature
feature is notnull
.
-
createDataWarningFile
Use the available storage factory handle to create a readme file in "seg0" directory warning users to not edit/delete any files in the directory to avoid database corruption.- Throws:
StandardException
-