Interface DataFactory

All Superinterfaces:
Corruptable
All Known Implementing Classes:
BaseDataFileFactory, BaseDataFileFactoryJ4

public interface DataFactory extends Corruptable
  • Field Details

  • Method Details

    • isReadOnly

      boolean isReadOnly()
      Is the store read-only.
    • openContainer

      ContainerHandle openContainer(RawTransaction t, ContainerKey containerId, LockingPolicy locking, int mode) throws StandardException
      Open a container that is not droped.
      Parameters:
      t - the raw transaction that is opening the container
      containerId - the container's identity
      locking - the locking policy
      mode - see the different mode in @see ContainerHandle then will return a null handle if the container is dropped.
      Returns:
      the handle to the opened container
      Throws:
      StandardException - Standard Derby error policy
    • openDroppedContainer

      RawContainerHandle openDroppedContainer(RawTransaction t, ContainerKey containerId, LockingPolicy locking, int mode) throws StandardException
      Open a container that may have been dropped. Only internal raw store code should call this, e.g. recovery.
      Throws:
      StandardException - Standard Derby error policy
      See Also:
    • addContainer

      long addContainer(RawTransaction t, long segmentId, long containerid, int mode, Properties tableProperties, int temporaryFlag) throws StandardException
      Add a container.
      Parameters:
      t - the transaction that is creating the container
      segmentId - the segment where the container is to go
      mode - whether or not to LOGGED or not. The effect of this mode is only for this addContainer call, not persisently stored throughout the lifetime of the container
      tableProperties - properties of the container that is persistently stored throughout the lifetime of the container
      Returns:
      the containerId of the newly created container
      Throws:
      StandardException - Standard Derby Error policy
    • addAndLoadStreamContainer

      long addAndLoadStreamContainer(RawTransaction t, long segmentId, Properties tableProperties, RowSource rowSource) throws StandardException
      Create and load a stream container.
      Parameters:
      t - the transaction that is creating the container
      segmentId - the segment where the container is to go
      tableProperties - properties of the container that is persistently stored throughout the lifetime of the container
      rowSource - the data to load the container with
      Returns:
      the containerId of the newly created stream container
      Throws:
      StandardException - Standard Derby Error policy
    • openStreamContainer

      StreamContainerHandle openStreamContainer(RawTransaction t, long segmentId, long containerId, boolean hold) throws StandardException
      Open a stream container.
      Returns:
      a valid StreamContainerHandle or null if the container does not exist.
      Throws:
      StandardException - Standard Derby exception policy
    • dropStreamContainer

      void dropStreamContainer(RawTransaction t, long segmentId, long containerId) throws StandardException
      Drop and remove a stream container.
      Throws:
      StandardException - Standard Derby exception policy
    • reCreateContainerForRedoRecovery

      void reCreateContainerForRedoRecovery(RawTransaction t, long segmentId, long containerId, ByteArray containerInfo) throws StandardException
      re-Create a container during redo recovery. Used if container is found to not exist during redo recovery of log records creating the container.
      Throws:
      StandardException - Standard Derby Error policy
    • dropContainer

      void dropContainer(RawTransaction t, ContainerKey containerId) throws StandardException
      Throws:
      StandardException
    • checkpoint

      void checkpoint() throws StandardException
      Throws:
      StandardException
    • idle

      void idle() throws StandardException
      Throws:
      StandardException
    • getIdentifier

      UUID getIdentifier()
      Return the identifier that uniquely identifies this raw store at runtime. This identifier is to be used as part of the lokcing key for objects locked in the raw store by value (e.g. Containers).
    • setRawStoreFactory

      void setRawStoreFactory(RawStoreFactory rsf, boolean create, Properties properties) throws StandardException
      make data factory aware of which raw store factory it belongs to Also need to boot the LogFactory
      Throws:
      StandardException - cannot boot the log factory
    • createFinished

      void createFinished() throws StandardException
      Database creation finished
      Throws:
      StandardException - Standard Derby exception policy.
    • getFileHandler

      FileResource getFileHandler()
      Get an object to handle non-transactional files.
    • removeStubsOK

      void removeStubsOK()
      Tell the data factory it is OK to remove committed deleted containers when the data factory shuts down.
    • reclaimSpace

      int reclaimSpace(Serviceable work, ContextManager contextMgr) throws StandardException
      Reclaim space used by this factory. Called by post commit daemon.
      Throws:
      StandardException - Standard Derby exception policy
    • postRecovery

      void postRecovery() throws StandardException
      Called after recovery is performed.
      Throws:
      StandardException - Standard Derby Error Policy
    • setupCacheCleaner

      void setupCacheCleaner(DaemonService daemon)
      Set up the data factory's caches to use the specified daemon service for background cleaning.
      Parameters:
      daemon - daemon service to use for background cleaning
    • 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:
    • decryptAllContainers

      void decryptAllContainers(RawTransaction t) throws StandardException
      Decrypts all the containers in the data segment.
      Parameters:
      t - the transaction that is decrypting the container
      Throws:
      StandardException - Standard Derby Error Policy
    • encryptAllContainers

      void encryptAllContainers(RawTransaction t) throws StandardException
      Encrypt all the containers in the data segment.
      Parameters:
      t - the transaction that is encrypting the containers.
      Throws:
      StandardException - Standard Derby Error Policy
    • removeOldVersionOfContainers

      void removeOldVersionOfContainers() throws StandardException
      Removes old versions of the containers after a cryptographic operation on the database.
      Throws:
      StandardException
    • setDatabaseEncrypted

      void setDatabaseEncrypted(boolean isEncrypted)
      Sets whether the database is encrypted.
      Parameters:
      isEncrypted - true if the database is encrypted, false otherwise
    • getEncryptionBlockSize

      int getEncryptionBlockSize()
      Return the encryption block size used by the algorithm at time of encrypted database creation
    • freezePersistentStore

      void freezePersistentStore() throws StandardException
      Backup restore - stop writing dirty pages or container to disk
      Throws:
      StandardException - Standard Derby error policy
    • unfreezePersistentStore

      void unfreezePersistentStore()
      Backup restore - start writing dirty pages or container to disk
    • writeInProgress

      void writeInProgress() throws StandardException
      Backup restore - don't allow the persistent store to be frozen - or if it is already frozen, block. A write is about to commence.
      Throws:
      StandardException - Standard Derby error policy
    • writeFinished

      void writeFinished()
      Backup restore - write finished, if this is the last writer, allow the persistent store to proceed.
    • backupDataFiles

      void backupDataFiles(Transaction rt, File backupDir) throws StandardException
      Back up the data segment of the database.
      Throws:
      StandardException
    • getMaxContainerId

      long getMaxContainerId() throws StandardException
      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.
    • removeDroppedContainerFileStubs

      void removeDroppedContainerFileStubs(LogInstant redoLWM) throws StandardException
      This function is called after a checkpoint to remove the stub files thar are not required during recovery. Crash recovery uses these files to identify the dropped containers. Stub files(d*.dat) gets creates when a table/index(containers) dropped.
      Throws:
      StandardException - Standard Derby error policy
    • getStorageFactory

      StorageFactory getStorageFactory()
      Returns:
      The StorageFactory used by this dataFactory
    • getRootDirectory

      String getRootDirectory()

      Get the root directory of the data storage area. It is always guaranteed to be an absolute path, and it is prefixed with the JDBC sub-sub-protocol if it is not a directory database. Examples:

      /path/to/database
      in case of a directory database
      memory:/path/to/database
      in case of a memory database
      Returns:
      the root directory of the data storage area
    • stop

      void stop()
    • databaseEncrypted

      boolean databaseEncrypted()
      Returns if data base is in encrypted mode.
      Returns:
      true if database encrypted false otherwise
    • setUndoInsertEventHandler

      void setUndoInsertEventHandler(UndoHandler undo_handle)
      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)

      Currently the handler is only called on abort of inserts on non-overflow pages that meet either of the following 2 requirements: 1) the row has either overflow columns (long columns) or the row columns span multiple pages (long rows). 2) after the action all user rows on the page are marked deleted.

      Parameters:
      undo_handle - client code supplied undo_handle.