org.apache.derby.iapi.store.raw.data
Interface DataFactory

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

public interface DataFactory
extends Corruptable


Field Summary
static java.lang.String DB_EX_LOCKFILE_NAME
          file name that is used to acquire exclusive lock on DB.
static java.lang.String DB_LOCKFILE_NAME
          The database lock
static java.lang.String MODULE
           
static java.lang.String TEMP_SEGMENT_NAME
          The temporary segment is called "tmp"
 
Method Summary
 long addAndLoadStreamContainer(RawTransaction t, long segmentId, java.util.Properties tableProperties, RowSource rowSource)
          Create and load a stream container.
 long addContainer(RawTransaction t, long segmentId, long containerid, int mode, java.util.Properties tableProperties, int temporaryFlag)
          Add a container.
 void backupDataFiles(Transaction rt, java.io.File backupDir)
          Back up the data segment of the database.
 void checkpoint()
           
 void createFinished()
          Database creation finished
 boolean databaseEncrypted()
          Returns if data base is in encrypted mode.
 int decrypt(byte[] ciphertext, int offset, int length, byte[] cleartext, int outputOffset)
          Decrypt cleartext from ciphertext.
 void dropContainer(RawTransaction t, ContainerKey containerId)
           
 void dropStreamContainer(RawTransaction t, long segmentId, long containerId)
          Drop and remove a stream container.
 int encrypt(byte[] cleartext, int offset, int length, byte[] ciphertext, int outputOffset, boolean newEngine)
          Encrypt cleartext into ciphertext.
 void encryptAllContainers(RawTransaction t)
          Encrypt all the containers in the data segment.
 void freezePersistentStore()
          Backup restore - stop writing dirty pages or container to disk
 int getEncryptionBlockSize()
          Return the encryption block size used by the algorithm at time of encrypted database creation
 FileResource getFileHandler()
          Get an object to handle non-transactional files.
 UUID getIdentifier()
          Return the identifier that uniquely identifies this raw store at runtime.
 long getMaxContainerId()
          Return an id which can be used to create a container.
 StorageFactory getStorageFactory()
           
 void idle()
           
 boolean isReadOnly()
          Is the store read-only.
 ContainerHandle openContainer(RawTransaction t, ContainerKey containerId, LockingPolicy locking, int mode)
          Open a container that is not droped.
 RawContainerHandle openDroppedContainer(RawTransaction t, ContainerKey containerId, LockingPolicy locking, int mode)
          Open a container that may have been dropped.
 StreamContainerHandle openStreamContainer(RawTransaction t, long segmentId, long containerId, boolean hold)
          Open a stream container.
 void postRecovery()
          Called after recovery is performed.
 int reclaimSpace(Serviceable work, ContextManager contextMgr)
          Reclaim space used by this factory.
 void reCreateContainerForRedoRecovery(RawTransaction t, long segmentId, long containerId, ByteArray containerInfo)
          re-Create a container during redo recovery.
 void removeDroppedContainerFileStubs(LogInstant redoLWM)
          This function is called after a checkpoint to remove the stub files thar are not required during recovery.
 void removeOldVersionOfContainers(boolean inRecovery)
          Remove old versions of the containers after (re)encryption of the database.
 void removeStubsOK()
          Tell the data factory it is OK to remove committed deleted containers when the data factory shuts down.
 void setDatabaseEncrypted()
          Set that the database is encrypted.
 void setRawStoreFactory(RawStoreFactory rsf, boolean create, java.util.Properties properties)
          make data factory aware of which raw store factory it belongs to Also need to boot the LogFactory
 void setupCacheCleaner(DaemonService daemon)
          Set up the data factory's caches to use the specified daemon service for background cleaning.
 void stop()
           
 void unfreezePersistentStore()
          Backup restore - start writing dirty pages or container to disk
 void writeFinished()
          Backup restore - write finished, if this is the last writer, allow the persistent store to proceed.
 void writeInProgress()
          Backup restore - don't allow the persistent store to be frozen - or if it is already frozen, block.
 
Methods inherited from interface org.apache.derby.iapi.store.raw.Corruptable
markCorrupt
 

Field Detail

MODULE

static final java.lang.String MODULE
See Also:
Constant Field Values

TEMP_SEGMENT_NAME

static final java.lang.String TEMP_SEGMENT_NAME
The temporary segment is called "tmp"

See Also:
Constant Field Values

DB_LOCKFILE_NAME

static final java.lang.String DB_LOCKFILE_NAME
The database lock

See Also:
Constant Field Values

DB_EX_LOCKFILE_NAME

static final java.lang.String DB_EX_LOCKFILE_NAME
file name that is used to acquire exclusive lock on DB.

See Also:
Constant Field Values
Method Detail

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:
openContainer(org.apache.derby.iapi.store.raw.xact.RawTransaction, org.apache.derby.iapi.store.raw.ContainerKey, org.apache.derby.iapi.store.raw.LockingPolicy, int)

addContainer

long addContainer(RawTransaction t,
                  long segmentId,
                  long containerid,
                  int mode,
                  java.util.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,
                               java.util.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,
                        java.util.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:
CipherProvider.encrypt(byte[], int, int, byte[], int)

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:
CipherProvider.decrypt(byte[], int, int, byte[], int)

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(boolean inRecovery)
                                  throws StandardException
Remove old versions of the containers after (re)encryption of the database.

Parameters:
inRecovery - true , if cleanup is happening during recovery.
Throws:
StandardException - Standard Derby Error Policy

setDatabaseEncrypted

void setDatabaseEncrypted()
Set that the database is encrypted.


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,
                     java.io.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

stop

void stop()

databaseEncrypted

boolean databaseEncrypted()
Returns if data base is in encrypted mode.

Returns:
true if database encrypted false otherwise

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.