This object implements lockable to provide an object to lock while a page is being
allocated.
MT - Mutable - mutable identity :
| Modifier and Type | Field and Description |
|---|---|
| protected ContainerKey | identity
Identity of the container. |
| protected boolean | isCommittedDrop
Committed Drop state of the container. |
| protected boolean | isDropped
Dropped state of the container. |
| protected boolean | isReusableRecordId
Is reusable recordId. |
| Access | Constructor and Description |
|---|---|
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| public Page | |
| protected abstract void | backupContainer(BaseContainerHandle
the container handle. handle, String location of the backup container. backupContainerPath)Backup the container to the specified path. |
| protected abstract boolean | Returns: true if the container can be updated, false otherwise.Can the container be updated. |
| public void | |
| protected abstract void | clearPreallocThreshold()
The container will have no pre-allocate threshold, i.e., if the implementation supports it, page preallocation will happen the next time a new page is allocated. |
| public void | |
| protected abstract void | |
| protected abstract void | |
| protected abstract void | dropContainer(LogInstant instant, boolean drop)
Mark the container as drop or not drop depending on the input value. |
| protected abstract void | encryptOrDecryptContainer(BaseContainerHandle
the container handle handle, String file to store the new version of the container newFilePath, boolean tells whether to encrypt or decrypt doEncrypt)Creates encrypted or decrypted version of the container. |
| protected void | |
| protected abstract void | |
| protected Page | getAllocPage(BaseContainerHandle handle, long pageNumber, boolean wait)
Get an allocation page and latch it. |
| protected abstract BasePage | getAllocPage(long pageNumber)
Return a BasePage that represents the given alloc page number in this container. |
| protected Page | |
| protected abstract BasePage | getAnyPage(BaseContainerHandle handle, long pageNumber)
Return a BasePage that represents any page - alloc page, valid page, free page, dealloced page etc. The only requirement is that the page is initialized... |
| protected boolean | |
| public long | |
| public abstract void | getContainerProperties(Properties
Property list to fill in. prop)Request the system properties associated with a container. |
| public int | |
| protected abstract long | |
| protected boolean | getDeallocLock(BaseContainerHandle handle, RecordHandle deallocLock, boolean wait, boolean zeroDuration)
Get the special dealloc lock on the page - the lock is gotten by the transaction that owns the container handle |
| protected boolean | |
| public abstract long | |
| public abstract long | |
| protected abstract BasePage | |
| protected Page | |
| protected abstract BasePage | getHeadPage(BaseContainerHandle handle, long pagenumber, boolean wait)
Get only a valid, non-overflow page. |
| public Object | |
| protected abstract BasePage | getNextHeadPage(BaseContainerHandle handle, long pageNumber, boolean wait)
Get the next page in the container. |
| protected Page | |
| protected abstract BasePage | getPage(BaseContainerHandle handle, long pageNumber, boolean wait)
Return a BasePage that represents the given page number in this container. |
| protected abstract BasePage | |
| protected abstract BasePage | getPageForInsert(BaseContainerHandle handle, int flag)
Get a potentially suitable page for insert and latch it. |
| public abstract long | Returns: sequence number for reusable RecordIdGet the reusable RecordId sequence number for the container. |
| public long | |
| protected abstract SpaceInfo | |
| protected abstract void | |
| protected boolean | |
| protected BasePage | |
| protected void | |
| public boolean | lockAttributes(int
use the bits in this int to decide if the user is
interested in this kind of lockable object. The bits are defined in
VirtualLockTable. For instance, the user may only ask
for TABLE_AND_ROWLOCK and if this is not a table or row lock, then
don't participate. flag, Hashtable<K, V> if this decides to participate, put all relevant
attributes into the Hashtable. The complete list of interesting
attributes is listed in VirtualLockTable.
The following attributes must be present for all participating
lockables:
VirtualLockTable.LOCKNAME,
VirtualLockTable.LOCKTYPE,
either VirtualLockTable.CONTAINERID or VirtualLockTable.CONGLOMID,
attributes)MT - this routine must be MP safe, caller will not be single threading the lock manager. Implements org. If this lockable object wants to participate in a diagnostic virtual lock table, then put any relevant attributes of this lock into the attributes list (the attribute must be an immutable object). |
| public boolean | lockerAlwaysCompatible()
Implements org. Returns true if any lock request on a Lockable L in a compatibility space CS1 is compatible with any other lock held on L in CS1. |
| public void | lockEvent(Latch
Latch descriptor lockInfo)Implements org. Note the fact the object is locked. |
| protected abstract ByteArray | logCreateContainerInfo()
Log all information on the container creation necessary to recreate teh container during a load tran. |
| protected abstract BasePage | newPage(BaseContainerHandle userhandle, RawTransaction t, BaseContainerHandle allocHandle, boolean isOverflow)
Create a new page in the container. |
| protected abstract void | |
| protected abstract void | prepareForBulkLoad(BaseContainerHandle handle, int numPage)
The container will be grown vastly, prepare for it. |
| protected abstract BasePage | reCreatePageForRedoRecovery(BaseContainerHandle handle, int pageFormat, long pageNumber, long pageOffset)
ReCreate a page for rollforward recovery. |
| protected abstract void | removeContainer(LogInstant instant, boolean
if true, leave a stub. If false, remove everything leaveStub)Remove the container and reclaim its space. |
| protected void | removePage(BaseContainerHandle
the container handle that has opened the container and latched the page handle, BasePage the latched page that is to be deallocated page)Remove a page from this container. |
| public boolean | requestCompatible(Object
The desired qualifier requestedQualifier, Object The already granted qualifier grantedQualifier)Implements org. Return true if the requested qualifier is compatible with the already granted qualifier. |
| protected void | |
| protected void | |
| public abstract void | |
| protected void | |
| protected void | |
| protected abstract void | |
| public void | unlockEvent(Latch
Latch descriptor lockInfo)Implements org. Note that the object has been unlocked Must only be called by the lock manager. |
| protected boolean | Returns: true if the container can be used, false if it has been dropped since the lock was requested and droppedOK is not true.if true, use this container even if it is dropped., droppedOK)Lock the container and mark the container as in-use by this container handle. |
| identity | back to summary |
|---|---|
| protected ContainerKey identity Identity of the container.
| |
| isCommittedDrop | back to summary |
|---|---|
| protected boolean isCommittedDrop Committed Drop state of the container. If a post commit action
determined that the drop container operation is committed, the whole
container may be removed and space reclaimed.
| |
| isDropped | back to summary |
|---|---|
| protected boolean isDropped Dropped state of the container.
| |
| isReusableRecordId | back to summary |
|---|---|
| protected boolean isReusableRecordId Is reusable recordId. By default, record Ids are not reusable when a page is reused. However, under special circumstances, clients to raw store may decide that record Ids may be reused after the page is reused. When this flag is set, pages that are reused will have its next recordId set to RecordHandle.FIRST_RECORD_ID | |
| BaseContainer | back to summary |
|---|---|
| pack-priv BaseContainer() | |
| addPage | back to summary |
|---|---|
| public Page addPage(BaseContainerHandle handle, boolean isOverflow) throws StandardException Add a page to this container.
| |
| backupContainer | back to summary |
|---|---|
| protected abstract void backupContainer(BaseContainerHandle handle, String backupContainerPath) throws StandardException Backup the container to the specified path.
| |
| canUpdate | back to summary |
|---|---|
| protected abstract boolean canUpdate() Can the container be updated.
| |
| clearIdentity | back to summary |
|---|---|
| public void clearIdentity() | |
| clearPreallocThreshold | back to summary |
|---|---|
| protected abstract void clearPreallocThreshold() The container will have no pre-allocate threshold, i.e., if the implementation supports it, page preallocation will happen the next time a new page is allocated. | |
| compressContainer | back to summary |
|---|---|
| public void compressContainer(BaseContainerHandle handle) throws StandardException Release free space to the OS. As is possible release any free space to the operating system. This will usually mean releasing any free pages located at the end of the file using the java truncate() interface.
| |
| compressContainer | back to summary |
|---|---|
| protected abstract void compressContainer(RawTransaction t, BaseContainerHandle allocHandle) throws StandardException | |
| deallocatePage | back to summary |
|---|---|
| protected abstract void deallocatePage(BaseContainerHandle userhandle, BasePage page) throws StandardException Deallocate a page from the container.
| |
| dropContainer | back to summary |
|---|---|
| protected abstract void dropContainer(LogInstant instant, boolean drop) Mark the container as drop or not drop depending on the input value. | |
| encryptOrDecryptContainer | back to summary |
|---|---|
| protected abstract void encryptOrDecryptContainer(BaseContainerHandle handle, String newFilePath, boolean doEncrypt) throws StandardException Creates encrypted or decrypted version of the container.
| |
| fillInIdentity | back to summary |
|---|---|
| protected void fillInIdentity(ContainerKey key) | |
| flushAll | back to summary |
|---|---|
| protected abstract void flushAll() throws StandardException Flush all outstanding changes in this container to persistent storage.
| |
| getAllocPage | back to summary |
|---|---|
| protected Page getAllocPage(BaseContainerHandle handle, long pageNumber, boolean wait) throws StandardException Get an allocation page and latch it.
| |
| getAllocPage | back to summary |
|---|---|
| protected abstract BasePage getAllocPage(long pageNumber) throws StandardException Return a BasePage that represents the given alloc page number in this container.
| |
| getAnyPage | back to summary |
|---|---|
| protected Page getAnyPage(BaseContainerHandle handle, long pageNumber, boolean wait) throws StandardException Get any page and latch it .
| |
| getAnyPage | back to summary |
|---|---|
| protected abstract BasePage getAnyPage(BaseContainerHandle handle, long pageNumber) throws StandardException Return a BasePage that represents any page - alloc page, valid page, free page, dealloced page etc. The only requirement is that the page is initialized...
| |
| getCommittedDropState | back to summary |
|---|---|
| protected boolean getCommittedDropState() | |
| getContainerId | back to summary |
|---|---|
| public long getContainerId() | |
| getContainerProperties | back to summary |
|---|---|
| public abstract void getContainerProperties(Properties prop) throws StandardException Request the system properties associated with a container. Request the value of properties that are associated with a container. The following properties can be requested: derby.storage.pageSize derby.storage.pageReservedSpace derby.storage.minimumRecordSize To get the value of a particular property add it to the property list, and on return the value of the property will be set to it's current value. For example: get_prop(BaseContainer base) { Properties prop = new Properties(); prop.put("derby.storage.pageSize", ""); base.getContainerProperties(prop); System.out.println( "container's page size = " + prop.getProperty("derby.storage.pageSize"); }
| |
| getContainerStatus | back to summary |
|---|---|
| public int getContainerStatus() | |
| getContainerVersion | back to summary |
|---|---|
| protected abstract long getContainerVersion() throws StandardException Get the logged container version.
| |
| getDeallocLock | back to summary |
|---|---|
| protected boolean getDeallocLock(BaseContainerHandle handle, RecordHandle deallocLock, boolean wait, boolean zeroDuration) throws StandardException Get the special dealloc lock on the page - the lock is gotten by the transaction that owns the container handle
| |
| getDroppedState | back to summary |
|---|---|
| protected boolean getDroppedState() | |
| getEstimatedPageCount | back to summary |
|---|---|
public abstract long getEstimatedPageCount(BaseContainerHandle handle, int flag) throws StandardException
| |
| getEstimatedRowCount | back to summary |
|---|---|
public abstract long getEstimatedRowCount(int flag) throws StandardException
| |
| getFirstHeadPage | back to summary |
|---|---|
| protected abstract BasePage getFirstHeadPage(BaseContainerHandle handle, boolean wait) throws StandardException Get the first page in the container.
| |
| getFirstPage | back to summary |
|---|---|
| protected Page getFirstPage(BaseContainerHandle handle) throws StandardException Get the first valid page. Result is latched.
| |
| getHeadPage | back to summary |
|---|---|
| protected abstract BasePage getHeadPage(BaseContainerHandle handle, long pagenumber, boolean wait) throws StandardException Get only a valid, non-overflow page. If page number is either invalid or overflow, returns null
| |
| getIdentity | back to summary |
|---|---|
| public Object getIdentity() | |
| getNextHeadPage | back to summary |
|---|---|
| protected abstract BasePage getNextHeadPage(BaseContainerHandle handle, long pageNumber, boolean wait) throws StandardException Get the next page in the container.
| |
| getNextPage | back to summary |
|---|---|
| protected Page getNextPage(BaseContainerHandle handle, long pageNumber) throws StandardException Get the next valid page and latch it
| |
| getPage | back to summary |
|---|---|
| protected abstract BasePage getPage(BaseContainerHandle handle, long pageNumber, boolean wait) throws StandardException Return a BasePage that represents the given page number in this container. The resulting page is latched.
| |
| getPageForCompress | back to summary |
|---|---|
| protected abstract BasePage getPageForCompress(BaseContainerHandle handle, int flag, long pageno) throws StandardException | |
| getPageForInsert | back to summary |
|---|---|
| protected abstract BasePage getPageForInsert(BaseContainerHandle handle, int flag) throws StandardException Get a potentially suitable page for insert and latch it.
| |
| getReusableRecordIdSequenceNumber | back to summary |
|---|---|
| public abstract long getReusableRecordIdSequenceNumber() Get the reusable RecordId sequence number for the container. This sequence number should be incremented every time there is an operation which may cause RecorIds to be reused. This method can be used by clients to check if a RecordId they obtained is still guaranteed to be valid. If the sequence number has changed, the RecordId may have been reused for another row.
| |
| getSegmentId | back to summary |
|---|---|
| public long getSegmentId() | |
| getSpaceInfo | back to summary |
|---|---|
| protected abstract SpaceInfo getSpaceInfo(BaseContainerHandle handle) throws StandardException Get information about space used by the container. | |
| incrementReusableRecordIdSequenceNumber | back to summary |
|---|---|
| protected abstract void incrementReusableRecordIdSequenceNumber() Increment the reusable RecordId sequence number. | |
| isReusableRecordId | back to summary |
|---|---|
| protected boolean isReusableRecordId() | |
| latchPage | back to summary |
|---|---|
| protected BasePage latchPage(BaseContainerHandle handle, BasePage foundPage, boolean wait) throws StandardException | |
| letGo | back to summary |
|---|---|
| protected void letGo(BaseContainerHandle handle) Discontinue use of this container. Note that the unlockContainer call made from this method may not release any locks. The container lock may be held until the end of the transaction. | |
| lockAttributes | back to summary |
|---|---|
| public boolean lockAttributes(int flag, Hashtable<K, V> attributes) Implements org. Doc from org. If this lockable object wants to participate in a diagnostic virtual lock table, then put any relevant attributes of this lock into the attributes list (the attribute must be an immutable object). The list of attributes of interest to the virtual lock table can be found in VirtualLockTable. The toString method will be called by the VirtualTable on the attribute value for display.
| |
| lockerAlwaysCompatible | back to summary |
|---|---|
| public boolean lockerAlwaysCompatible() Implements org. Doc from org. Returns true if any lock request on a Lockable L in a compatibility space CS1 is compatible with any other lock held on L in CS1.
| |
| lockEvent | back to summary |
|---|---|
| public void lockEvent(Latch lockInfo) Implements org. Doc from org. Note the fact the object is locked. Performs required actions to ensure that unlockEvent() work correctly. This method does not actually perform any locking of the object, the locking mechanism is provided by the lock manager. If the class supports multiple lockers of the object then this method will be called once per locker, each with their own qualifier. Must only be called by the lock manager. Synchronization will be handled by the lock manager.
| |
| logCreateContainerInfo | back to summary |
|---|---|
| protected abstract ByteArray logCreateContainerInfo() throws StandardException Log all information on the container creation necessary to recreate teh container during a load tran.
| |
| newPage | back to summary |
|---|---|
| protected abstract BasePage newPage(BaseContainerHandle userhandle, RawTransaction t, BaseContainerHandle allocHandle, boolean isOverflow) throws StandardException Create a new page in the container.
| |
| preDirty | back to summary |
|---|---|
| protected abstract void preDirty(boolean preDirtyOn) The container is about to be modified. Loggable actions use this to make sure the container gets cleaned if a checkpoint is taken after any log record is sent to the log stream but before the container is actually dirtied. | |
| prepareForBulkLoad | back to summary |
|---|---|
| protected abstract void prepareForBulkLoad(BaseContainerHandle handle, int numPage) The container will be grown vastly, prepare for it. | |
| reCreatePageForRedoRecovery | back to summary |
|---|---|
| protected abstract BasePage reCreatePageForRedoRecovery(BaseContainerHandle handle, int pageFormat, long pageNumber, long pageOffset) throws StandardException ReCreate a page for rollforward recovery. During redo recovery it is possible for the system to try to redo the creation of a page (ie. going from non-existence to version 0). It first trys to read the page from disk, but a few different types of errors can occur: o the page does not exist at all on disk, this can happen during rollforward recovery applied to a backup where the file was copied and the page was added to the file during the time frame of the backup but after the physical file was copied. o space in the file exists, but it was never initalized. This can happen if you happen to crash at just the right moment during the allocation process. Also on some OS's it is possible to read from a part of the file that was not ever written - resulting in garbage from the store's point of view (often the result is all 0's). All these errors are easy to recover from as the system can easily create a version 0 from scratch and write it to disk. Because the system does not sync allocation of data pages, it is also possible at this point that whlie writing the version 0 to disk to create it we may encounter an out of disk space error (caught in this routine as a StandardException from the create() call. We can't recovery from this without help from outside, so the caught exception is nested and a new exception thrown which the recovery system will output to the user asking them to check their disk for space/errors. The arguments passed in need to be sufficient for the page cache to materialize a brand new page and write it to disk.
| |
| removeContainer | back to summary |
|---|---|
| protected abstract void removeContainer(LogInstant instant, boolean leaveStub) throws StandardException Remove the container and reclaim its space. Once executed, this
operation cannot be undone - as opposed to dropContainer which only
marks the container as dropped and can be rolled back.
| |
| removePage | back to summary |
|---|---|
| protected void removePage(BaseContainerHandle handle, BasePage page) throws StandardException Remove a page from this container. The page will be unlatched by this
routine before it returns.
Unlike addPage, this method done as part of the user transaction.
The removed page is not usable by anyone until the user transaction
comits.
If the user transaction rolls back, the removed page is un-removed.
| |
| requestCompatible | back to summary |
|---|---|
| public boolean requestCompatible(Object requestedQualifier, Object grantedQualifier) Implements org. Doc from org. Return true if the requested qualifier is compatible with the already granted qualifier. | |
| setCommittedDropState | back to summary |
|---|---|
| protected void setCommittedDropState(boolean isCommittedDrop) | |
| setDroppedState | back to summary |
|---|---|
| protected void setDroppedState(boolean isDropped) Set the container's dropped state | |
| setEstimatedRowCount | back to summary |
|---|---|
public abstract void setEstimatedRowCount(long count, int flag) throws StandardException
| |
| setReusableRecordIdState | back to summary |
|---|---|
| protected void setReusableRecordIdState(boolean isReusableRecordId) | |
| truncate | back to summary |
|---|---|
| protected void truncate(BaseContainerHandle handle) throws StandardException | |
| truncatePages | back to summary |
|---|---|
| protected abstract void truncatePages(long lastValidPagenum) throws StandardException | |
| unlockEvent | back to summary |
|---|---|
| public void unlockEvent(Latch lockInfo) Implements org. Doc from org. Note that the object has been unlocked Must only be called by the lock manager. Synchronization will be handled by the lock manager.
| |
| use | back to summary |
|---|---|
| protected boolean use(BaseContainerHandle handle, boolean forUpdate, boolean droppedOK) throws StandardException Lock the container and mark the container as in-use by this container handle.
| |