Java Doc for Page.java in  » Database-DBMS » db-derby-10.2 » org » apache » derby » iapi » store » raw » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Database DBMS » db derby 10.2 » org.apache.derby.iapi.store.raw 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


org.apache.derby.iapi.store.raw.Page

All known Subclasses:   org.apache.derby.impl.store.raw.data.BasePage,
Page
public interface Page (Code)
A Page contains an ordered set of records which are the stored form of rows. A record is a stream of bytes created from a row array. The record contains one or more fields, fields have a one to one correlation with the DataValueDescriptor's contained within a row array.

A Page represents exclusive access to a data page within a container. Exclusive access is released by calling the unlatch() method, once that occurs the caller must no longer use the Page reference.

Several of the methods in Page take a RecordHandle as an argument. RecordHandles are obtained from a Page, while holding exclusive access of Page or a from a previous exclusive access of a Page representing the same data page. All RecordHandle's used as arguments to methods (with the exception of recordExists()) must be valid for the current state of the page. If they are not valid then the method will throw an exception. A caller can ensure that a record handle is valid by:

  • Obtaining the handle during this exclusive access of this page
  • Checking the record still exists with the method recordExists()
  • Not using a handle after a delete().

Several of the methods in Page take a slot number as an argument. A slot always correspond to a record, which may be deleted or undeleted.
MT - Latched - In general every method requires the page to be latched.

Latching

All page methods which are not valid for a latched page throw an exception if the page is not latched. [@exception clauses on all the methods should be updated to reflect this].

Aux Objects
The page cache will manage a client object along with the page as long as it remains in cache. This object is called the "aux object". The aux object is associated with the page with setAuxObject(), and can be retreived later with getAuxObject(). The aux object will remain valid as long as the page is latched, but callers cannot assume that an aux object will ever stick around once the page is unlatched. However, the page manager promises to call pageBeingEvicted() once before clearing the aux reference from the page.
See Also:   Object
See Also:   ContainerHandle
See Also:   RecordHandle
See Also:   AuxObject



Field Summary
final public static  StringDIAG_BYTES_FREE
    
final public static  StringDIAG_BYTES_RESERVED
    
final public static  StringDIAG_MAXROWSIZE
    
final public static  StringDIAG_MINIMUM_REC_SIZE
    
final public static  StringDIAG_MINROWSIZE
    
final public static  StringDIAG_NUMOVERFLOWED
    
final public static  StringDIAG_PAGEOVERHEAD
    
final public static  StringDIAG_PAGE_SIZE
    
final public static  StringDIAG_RESERVED_SPACE
    
final public static  StringDIAG_ROWSIZE
    
final public static  StringDIAG_SLOTTABLE_SIZE
    
final public static  intFIRST_SLOT_NUMBER
     The slot number of the first slot.
final static  byteINSERT_CONDITIONAL
    
final static  byteINSERT_DEFAULT
    
final static  byteINSERT_FOR_SPLIT
    
final static  byteINSERT_INITIAL
     Values for insertFlag.

INSERT_INITIAL - flag initializer INSERT_DEFAULT - default insert behavior, if the record does not fit on the page where the insert operation is called, an error will be returned, instead of overflowing the record. INSERT_UNDO_WITH_PURGE - if this is set, then the undo of this insert will purge the row rather than mark it as deleted, which is the default behaviro for insertAtSlot and insert. INSERT_CONDITIONAL - if this flag is set, then, the overflow is conditional.

final static  byteINSERT_OVERFLOW
    
final static  byteINSERT_UNDO_WITH_PURGE
    
final public static  intINVALID_SLOT_NUMBER
     A slot number guaranteed to be invalid.


Method Summary
public  voidcopyAndPurge(Page destPage, int src_slot, int num_rows, int dest_slot)
     move rows from one page to another, purging in the process.

Move from this page slot[src_slot] to slot[src_slot+num_rows-1] to destPage slot[dest_slot] to slot[dest_slot + num_rows - 1], in that order.

 PageTimeStampcurrentTimeStamp()
     Return a time stamp that can be used to identify the page of this specific instance.
public  booleandelete(RecordHandle handle, LogicalUndo undo)
     Mark the record identified by position as deleted.

Mark the record identified by position as deleted.

public  RecordHandledeleteAtSlot(int slot, boolean delete, LogicalUndo undo)
     Mark the record at slot as deleted or undeleted according to delete flag.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is deleted.

 booleanequalTimeStamp(PageTimeStamp ts)
     See if timeStamp for this page is the same as the current instance of the page.
 RecordHandlefetch(RecordHandle handle, Object[] row, FormatableBitSet validColumns, boolean forUpdate)
     Fetch and lock a non-deleted record.

Lock and fetch a non-deleted record identified by a RecordHandle.

public  RecordHandlefetchFieldFromSlot(int slot, int fieldId, Object column)
     Fetch a single field from a deleted or non-deleted record. Fills in the passed in Object column with the field identified by fieldid if column is not null, otherwise the record is locked but not fetched.
The fieldId of the first field is 0. If the fieldId is >= the number of fields on the record, column is restored to null

Locking Policy
No locks are obtained.

public  RecordHandlefetchFromSlot(RecordHandle rh, int slot, Object[] row, FetchDescriptor fetchDesc, boolean ignoreDelete)
     Fetch a record located in the passed in slot.

Fetch a record located in the passed in slot and fill-in the passed in StorebleRow and the Object columns contained within.

public  intfetchNumFields(RecordHandle handle)
     Fetch the number of fields in a record.
public  intfetchNumFieldsAtSlot(int slot)
     Fetch the number of fields in a record.
public  AuxObjectgetAuxObject()
     Retrieve this page's aux object, returning null if there isn't one.
public  RecordHandlegetInvalidRecordHandle()
     Return an invalid record handle.
 intgetNextSlotNumber(RecordHandle handle)
     Find slot for record with an id greater than the passed in identifier.

Find the slot for the first record on the page with an id greater than the passed in identifier.
Returns the slot of the first record on the page with an id greater than the one passed in.

public  longgetPageNumber()
     Return the page number of this page.
 RecordHandlegetRecordHandle(int recordId)
     Get a record handle from a previously stored record id.
 RecordHandlegetRecordHandleAtSlot(int slot)
     Get the record handle of row at slot.
 intgetSlotNumber(RecordHandle handle)
     Get the slot number.
 RecordHandleinsert(Object[] row, FormatableBitSet validColumns, byte insertFlag, int overflowThreshold)
     Insert a record anywhere on the page.

Locking Policy
Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is inserted.
MT - latched
Parameters:
  row - The row version of the data
Parameters:
  validColumns - a bit map of which columns in the row is valid.

 RecordHandleinsertAtSlot(int slot, Object[] row, FormatableBitSet validColumns, LogicalUndo undo, byte insertFlag, int overflowThreshold)
     Insert a record at the specified slot.
public  booleanisDeletedAtSlot(int slot)
     Test if a record is deleted.
public  booleanisLatched()
    
public  RecordHandlemakeRecordHandle(int recordHandleConstant)
     Return a record handle for the given constant record id.

Return a record handle that doesn't represent a record but rather has a special meaning.

public  intmoveRecordForCompressAtSlot(int slot, Object[] row, RecordHandle[] old_handle, RecordHandle[] new_handle)
     Move record to a page toward the beginning of the file.

As part of compressing the table records need to be moved from the end of the file toward the beginning of the file.

public  intnonDeletedRecordCount()
     Return the number of records on this page that are not marked as deleted.
public  voidpurgeAtSlot(int slot, int numpurges, boolean needDataLogged)
     Purge the row(s) from page.

Purge the row(s) from page, get rid of the row(s) and slot(s) - USE WITH CAUTION, please see entire description of this operation before attempting to use this. Starting from the specified slot, n rows will be purged.

public  intrecordCount()
     Return the number of records on the page.
 booleanrecordExists(RecordHandle handle, boolean ignoreDelete)
     does the record still exist on the page?

If "ignoreDelete" is true and the record handle represents a record on the page (either marked deleted or not) return true.

public  voidsetAuxObject(AuxObject aux)
     Set the aux object for this page.
 voidsetTimeStamp(PageTimeStamp ts)
     Set the time stamp to what is on page at this instance.
public  booleanshouldReclaimSpace(int num_non_deleted_rows, int slot_just_deleted)
     Is this page/deleted row a candidate for immediate reclaim space.

Used by access methods after executing a delete on "slot_just_deleted" to ask whether a post commit should be queued to try to reclaim space after the delete commits.

 booleanspaceForInsert()
     Is it likely that an insert will fit on this page?

Return true if there is a good chance an insert will fit on this page, false otherwise.

 booleanspaceForInsert(Object[] row, FormatableBitSet validColumns, int overflowThreshold)
     will insert of this row fit on this page?

Return true if this record is guaranteed to be inserted successfully using insert() or insertAtSlot().

public  voidunlatch()
     Unlatch me, the page is exclusivly latched by its current user until this method call is made.
 booleanupdate(RecordHandle handle, Object[] row, FormatableBitSet validColumns)
     Update the record identified by the record handle.

Update the record, the new column values are found in row[] and if validColumns is not-null, only use the columns indicated as valid in the bit set.


The page latch may be released and re-latched within this method. This will occur if the record lock has to be waited for.
Parameters:
  handle - the record handle
Parameters:
  row - The row version of the data
Parameters:
  validColumns - A bit map of which columns in the row is valid.

 RecordHandleupdateAtSlot(int slot, Object[] row, FormatableBitSet validColumns)
     Update the complete record identified by the slot.
public  RecordHandleupdateFieldAtSlot(int slot, int fieldId, Object newValue, LogicalUndo undo)
     Update a field within the record, replacing its current value with the stored representation of newValue.

Field Detail
DIAG_BYTES_FREE
final public static String DIAG_BYTES_FREE(Code)



DIAG_BYTES_RESERVED
final public static String DIAG_BYTES_RESERVED(Code)



DIAG_MAXROWSIZE
final public static String DIAG_MAXROWSIZE(Code)



DIAG_MINIMUM_REC_SIZE
final public static String DIAG_MINIMUM_REC_SIZE(Code)



DIAG_MINROWSIZE
final public static String DIAG_MINROWSIZE(Code)



DIAG_NUMOVERFLOWED
final public static String DIAG_NUMOVERFLOWED(Code)



DIAG_PAGEOVERHEAD
final public static String DIAG_PAGEOVERHEAD(Code)



DIAG_PAGE_SIZE
final public static String DIAG_PAGE_SIZE(Code)



DIAG_RESERVED_SPACE
final public static String DIAG_RESERVED_SPACE(Code)



DIAG_ROWSIZE
final public static String DIAG_ROWSIZE(Code)



DIAG_SLOTTABLE_SIZE
final public static String DIAG_SLOTTABLE_SIZE(Code)



FIRST_SLOT_NUMBER
final public static int FIRST_SLOT_NUMBER(Code)
The slot number of the first slot. This is guaranteed to be zero.



INSERT_CONDITIONAL
final static byte INSERT_CONDITIONAL(Code)



INSERT_DEFAULT
final static byte INSERT_DEFAULT(Code)



INSERT_FOR_SPLIT
final static byte INSERT_FOR_SPLIT(Code)



INSERT_INITIAL
final static byte INSERT_INITIAL(Code)
Values for insertFlag.

INSERT_INITIAL - flag initializer INSERT_DEFAULT - default insert behavior, if the record does not fit on the page where the insert operation is called, an error will be returned, instead of overflowing the record. INSERT_UNDO_WITH_PURGE - if this is set, then the undo of this insert will purge the row rather than mark it as deleted, which is the default behaviro for insertAtSlot and insert. INSERT_CONDITIONAL - if this flag is set, then, the overflow is conditional. The record will be overflowed only if it exceeds the threshold specified by the properties, or the parameter. INSERT_OVERFLOW - if this flag is set, then the insert operation will overflow the record if it does not fit on the page. INSERT_FOR_SPLIT - a record is being updated that causes new portions to be inserted *and* the last new portion needs to point to an existing portion. Rules for the insert flags: 1. If INSERT_DEFAULT is set, INSERT_CONDITIONAL and INSERT_OVERFLOW will be ignored 2. INSERT_UNDO_WITH_PURGE can be set with any of the other 3 flags. 3. If INSERT_OVERFLOW is not set, INSERT_CONDITIONAL will be ignored. But, it is not necessary to set INSERT_CONDITIONAL when setting INSERT_OVERFLOW. 4. If INSERT_DEFAULT, INSERT_OVERFLOW both are not set, then, default insert action will be taken, i.e. no overflow will be allowed.




INSERT_OVERFLOW
final static byte INSERT_OVERFLOW(Code)



INSERT_UNDO_WITH_PURGE
final static byte INSERT_UNDO_WITH_PURGE(Code)



INVALID_SLOT_NUMBER
final public static int INVALID_SLOT_NUMBER(Code)
A slot number guaranteed to be invalid.





Method Detail
copyAndPurge
public void copyAndPurge(Page destPage, int src_slot, int num_rows, int dest_slot) throws StandardException(Code)
move rows from one page to another, purging in the process.

Move from this page slot[src_slot] to slot[src_slot+num_rows-1] to destPage slot[dest_slot] to slot[dest_slot + num_rows - 1], in that order. Both this page and destPage must be latched and from the same container with the same page and record format.
Slot[src_slot] to slot[src_slot+numrows-1] will be purged from this page. RecordId on the dest page will be brand new and not in any particular order or range. RecordId of the purged rows in this page is never reused. Deleted and undeleted rows are copied over just the same. Exception will be thrown if this page does not have all the rows in the moved over range.
RESOLVE: reserve space now not copied over because in btree, a row never shrinks. When this routine is called by heap or by some page which will have shrunken row, then we need to add that
DestPage must have at least dest_slot row occupying slot[0] to slot[dest_slot-1]. DestPage must have enough space to take the copied over data. Rows that occupied slot number > dest_slot will be moved up the slot (I.e., slot[dest_slot] -> slot[dest_slot + num_rows]).
If this operation rolls back, this page (the src page) will get the rows back and the dest page will purge the rows that were copied - this is as if the rows were inserted into the dest page with INSERT_UNDO_WITH_PURGE.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the rows are copied over and bore the records are purged. I.e, for num_rows moved, there will be 2*num_rows calls to lockRecordForWrite.

Use with caution
As with a normal purge, no space is reserved on this page for rollback of the purge, so you must commit before inserting any rows onto this page - unless those inserts are INSERT_UNDO_WITH_PURGE.
Parameters:
  destPage - the page to copy to
Parameters:
  src_slot - start copying from this slot
Parameters:
  num_rows - copy and purge this many rows from this page
Parameters:
  dest_slot - copying into this slot of destPage
exception:
  StandardException - Standard Cloudscape error policy




currentTimeStamp
PageTimeStamp currentTimeStamp()(Code)
Return a time stamp that can be used to identify the page of this specific instance. For pages that don't support timestamp, returns null.



delete
public boolean delete(RecordHandle handle, LogicalUndo undo) throws StandardException(Code)
Mark the record identified by position as deleted.

Mark the record identified by position as deleted. The record may be undeleted sometime later using undelete() by any transaction that sees the record.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is deleted.
The page latch may be released and re-latched within this method. This will occur if the record lock has to be waited for.
Parameters:
  handle - record Handle to record
Parameters:
  undo - if logical undo may be necessary, a function pointer tothe access code where the logical undo logic resides.Null if logical undo is not necessary. true if the record was updated. False if it wasn't because it is already deleted.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - If the record handle does not match a record on the page.
See Also:   Page.deleteAtSlot
See Also:   LockingPolicy




deleteAtSlot
public RecordHandle deleteAtSlot(int slot, boolean delete, LogicalUndo undo) throws StandardException(Code)
Mark the record at slot as deleted or undeleted according to delete flag.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is deleted. If record already deleted, and an attempt is made to delete it, an exception is thrown. If record not deleted, and an attempt is made to undelete it, an exception is thrown.
MT - latched a Handle to the deleted/undeleted record.
Parameters:
  slot - is the slot number
Parameters:
  delete - true if this record is to be deleted false if this deleted record is to be marked undeleted
Parameters:
  undo - if logical undo may be necessary, a function pointer tothe access code where the logical undo logic resides.Null if logical undo is not necessary.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - A statement level exception is thrown when trying to delete an already deleted record,or undelete a not deleted record.
exception:
  StandardException - A statement level exception is thrown if the slot is not on the page.
See Also:   LockingPolicy
See Also:   Page.delete
See Also:   LogicalUndo
See Also:   LogicalUndoable




equalTimeStamp
boolean equalTimeStamp(PageTimeStamp ts) throws StandardException(Code)
See if timeStamp for this page is the same as the current instance of the page. Null timeStamp never equals the instance of the page.
Parameters:
  ts - the time stamp gotten from an earlier call to this page'sgetTimeStamp true if timestamp is the same
exception:
  StandardException - Standard Cloudscape error policy.
See Also:   PageTimeStamp



fetch
RecordHandle fetch(RecordHandle handle, Object[] row, FormatableBitSet validColumns, boolean forUpdate) throws StandardException(Code)
Fetch and lock a non-deleted record.

Lock and fetch a non-deleted record identified by a RecordHandle. Reads data from the page into row.

Locking Policy
Calls the lockRecordForRead() method of the LockingPolicy object passed to the openContainer() call before the record is accessed.
The page latch may be released and re-latched within this method. This will occur if the record lock has to be waited for.
Parameters:
  handle - Handle to record.
Parameters:
  row - Row to be filled in with data from the record.
Parameters:
  validColumns - a bit map of which columns in the row is to be fetched. ValidColumns will not be changed by RawStore.
Parameters:
  forUpdate - true if the intention is to update this record, false otherwise. A handle to the record, null if the record has been deleted.
exception:
  StandardException - Standard Cloudscape error policy, a statemente level exception is thrown ifthe record handle does not match a record on the page.
See Also:   Page.delete
See Also:   LockingPolicy




fetchFieldFromSlot
public RecordHandle fetchFieldFromSlot(int slot, int fieldId, Object column) throws StandardException(Code)
Fetch a single field from a deleted or non-deleted record. Fills in the passed in Object column with the field identified by fieldid if column is not null, otherwise the record is locked but not fetched.
The fieldId of the first field is 0. If the fieldId is >= the number of fields on the record, column is restored to null

Locking Policy
No locks are obtained. It is up to the caller to obtain the correct locks.
It is guaranteed that the page latch is not released by this method
Parameters:
  slot - is the slot number
Parameters:
  fieldId - is the column id
Parameters:
  column - is to be filled in with information from the record. the Handle to the record that is locked
exception:
  StandardException - Standard Cloudscape error policy, a statement level exception is thrown ifthe slot is not on the page.
See Also:   Page.fetchFromSlot
See Also:   LockingPolicy




fetchFromSlot
public RecordHandle fetchFromSlot(RecordHandle rh, int slot, Object[] row, FetchDescriptor fetchDesc, boolean ignoreDelete) throws StandardException(Code)
Fetch a record located in the passed in slot.

Fetch a record located in the passed in slot and fill-in the passed in StorebleRow and the Object columns contained within. If row is null then the record is locked but is not fetched.
This interface allows the caller to either return a deleted row or not. If "ignoreDelete" is set to true, fetch the record regardless of whether it is deleted or not (same as above fetchFromSlot). However, if "ignoreDelete" is set to false and the and the slot correspond to a deleted row, null is returned.
If a non-null Qualifier list is provided then the qualifier array will be applied to the row and the row will only be returned if the row qualifies, otherwise null will be returned. Values in the columns of row may or may not be altered while trying to apply the qualifiers, if null is returned the state of the columns is undefined. If a null Qualifier list is provided then no qualification is applied.
If a non-null record handle is passed in, it is assumed that the record handle corresponds to the record in the slot. If record handle is null, a record handle will be manufactured and returned if the record is not deleted or if "ignoreDelete" is true. This parameter is here for the case where the caller have already manufactured the record handle for locking or other purposes so it would make sense for the page to avoid creating a new record handle object if possible.
Parameters:
  rh - the record handle of the row. If non-null it must refer to the same record as the slot.
Parameters:
  slot - the slot number
Parameters:
  row - Row to be filled in with information from record.
Parameters:
  fetchDesc - A structure to efficiently carry a set of parametersneeded to describe the fetch, these include:validColumns - A bit map of which columns in the row to be fetched. ValidColumns will not be changed by RawStore.qualifier_list - A list of Qualifiers to apply to the row to see ifthe row should be returned.An array of qualifiers which restrict whether or notthe row should be returned by the fetch. Rows for which any one of the qualifiers returns false are not returned by the fetch. If null, no qualificationis done and the requested columns of the rows are returned. Qualifiers can only reference columns which are included in the scanColumnList. The column id that a qualifier returns is the column idthe table, not the column id in the partial row being returned. qualifier_scratch_space - An array of int's that matches the size of the row[] array. Used to process qualifiers, if noqualifiers are input then array need not be input. Passed in rather than allocated so thatspace can be allocated a single time in a scan.If not passed in then raw store will allocate anddeallocate per call.
Parameters:
  ignoreDelete - if true, return row regardless of whether it is deleted or not. If false, only return non-deleted row. A handle to the record.
exception:
  StandardException - Standard Cloudscape error policy
See Also:   LockingPolicy




fetchNumFields
public int fetchNumFields(RecordHandle handle) throws StandardException(Code)
Fetch the number of fields in a record.

Locking Policy

No locks are obtained.
MT - latched
Parameters:
  handle - record handle to deleted or non-deleted record the number of fields in the record
exception:
  StandardException - Standard Cloudscape error policy, a statement level exception is thrown if the record handle does not match a record on the page.




fetchNumFieldsAtSlot
public int fetchNumFieldsAtSlot(int slot) throws StandardException(Code)
Fetch the number of fields in a record.

Locking Policy

No locks are obtained.
It is guaranteed that the page latch is not released by this method
Parameters:
  slot - is the slot number the number of fields in the record
exception:
  StandardException - Standard Cloudscape error policy




getAuxObject
public AuxObject getAuxObject()(Code)
Retrieve this page's aux object, returning null if there isn't one. The reference returned must only be used while the page is latched, once unlatch is called the reference to the aux object must be discarded.
MT - latched
See Also:   AuxObject



getInvalidRecordHandle
public RecordHandle getInvalidRecordHandle()(Code)
Return an invalid record handle.

an invalid record handle.
exception:
  StandardException - Standard exception policy.




getNextSlotNumber
int getNextSlotNumber(RecordHandle handle) throws StandardException(Code)
Find slot for record with an id greater than the passed in identifier.

Find the slot for the first record on the page with an id greater than the passed in identifier.
Returns the slot of the first record on the page with an id greater than the one passed in. Usefulness of this functionality depends on the client's use of the raw store interfaces. If all "new" records are always inserted at the end of the page, and the raw store continues to guarantee that all record id's will be allocated in increasing order on a given page (assuming a PAGE_REUSABLE_RECORD_ID container), then a page is always sorted in record id order. For instance current heap tables function this way. If the client ever inserts at a particular slot number, rather than at the "end" then the record id's will not be sorted.
In the case where all record id's are always sorted on a page, then this routine can be used by scan's which "lose" their position because the row they have as a position was purged. They can reposition their scan at the "next" row after the row that is now missing from the table.
This method returns the record regardless of its deleted status.
MT - latched
Parameters:
  handle - record handle to find the next higher id. record id of the first record on the page with a record id higher than the one passed in. If no such record exists, -1 is returned.
exception:
  StandardException - Standard exception policy.




getPageNumber
public long getPageNumber()(Code)
Return the page number of this page.

Page numbers are unique within a container and start at ContainerHandle.FIRST_PAGE_NUMBER and increment by 1 regardless of the page size.


MT - Latched
See Also:   ContainerHandle The page number of this page.




getRecordHandle
RecordHandle getRecordHandle(int recordId)(Code)
Get a record handle from a previously stored record id.

Get a record handle from a previously stored record identifier that was obtained from a RecordHandle.


MT - Latched A valid record handle or null if the record no longer exists.
Parameters:
  recordId - previously stored recordId.
See Also:   RecordHandle.getId




getRecordHandleAtSlot
RecordHandle getRecordHandleAtSlot(int slot) throws StandardException(Code)
Get the record handle of row at slot.

Get the record handle of a record on a latched page using its slot number.
MT - latched
Parameters:
  slot - the slot number the record handle.
exception:
  StandardException - Standard Cloudscape error policy




getSlotNumber
int getSlotNumber(RecordHandle handle) throws StandardException(Code)
Get the slot number.

Get the slot number of a record on a latched page using its record handle.

Note The slot number is only good for as long as the page is latched.
MT - latched
Parameters:
  handle - the record handle the slot number
exception:
  StandardException - Standard Cloudscape error policy




insert
RecordHandle insert(Object[] row, FormatableBitSet validColumns, byte insertFlag, int overflowThreshold) throws StandardException(Code)
Insert a record anywhere on the page.

Locking Policy
Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is inserted.
MT - latched
Parameters:
  row - The row version of the data
Parameters:
  validColumns - a bit map of which columns in the row is valid. ValidColumns will not be changed by RawStore.
Parameters:
  insertFlag - see values for insertFlag below. A RecordHandle representing the new record.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - Row cannot fit on the page or row is null.




insertAtSlot
RecordHandle insertAtSlot(int slot, Object[] row, FormatableBitSet validColumns, LogicalUndo undo, byte insertFlag, int overflowThreshold) throws StandardException(Code)
Insert a record at the specified slot.

All records that occupy FIRST_SLOT_NUMBER to (slot - 1) are not moved.
All records that occupy slot to (recordCount() - 1) are moved up one slot.
The new record is inserted at the specified slot.
If slot == FIRST_SLOT_NUMBER, then the new record will be inserted at the first slot.
If slot == recordCount(), then the record is inserted in a new slot, no records are moved.
If slot is > recordCount() or if slot < FIRST_SLOT_NUMBER, an exception will be thrown.

Space Policy
If the row will not fit on a page then:

  • an exception is thrown if the page has no other rows, this is an indication that the row could never fit on a page in this container.
  • null is returned if there are other rows on the page, this is an indication that the row can potentially be inserted successfully onto an empty page.

Locking Policy
Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is inserted.
MT - latched
Parameters:
  slot - The specified slot
Parameters:
  row - The row version of the data
Parameters:
  undo - if logical undo may be necessary, a function pointerto the access code where the logical undo logic resides. Null if logical undo is not necessary.
Parameters:
  validColumns - a bit map of which columns in the row is valid. ValidColumns will not be changed by RawStore.
Parameters:
  insertFlag - if INSERT_UNDO_WITH_PURGE set, then the undo of thisinsert will purge the row rather than mark it as deleted, which is the default bahavior for insertAtSlot and insert. A RecordHandle representing the new record, or null if the row will not fit on a non-empty page.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - The row cannot fit on the page
See Also:   LogicalUndo
See Also:   LogicalUndoable




isDeletedAtSlot
public boolean isDeletedAtSlot(int slot) throws StandardException(Code)
Test if a record is deleted.

Locking Policy
No locks are obtained.
It is guaranteed that the page latch is not released by this method
Parameters:
  slot - slot of record to be tested.
exception:
  StandardException - Standard Cloudscape error policy, a statement level exception is thrown if the slot is not on the page.




isLatched
public boolean isLatched()(Code)



makeRecordHandle
public RecordHandle makeRecordHandle(int recordHandleConstant) throws StandardException(Code)
Return a record handle for the given constant record id.

Return a record handle that doesn't represent a record but rather has a special meaning. Used for special cases like creating a key specific to the page, but not specific to a row on the page.

See RecordHandle interface for a list of "special record handles."
See Also:   RecordHandle The created record handle.
Parameters:
  recordHandleConstant - the special recordId
exception:
  StandardException - if input is not a special record identifier.




moveRecordForCompressAtSlot
public int moveRecordForCompressAtSlot(int slot, Object[] row, RecordHandle[] old_handle, RecordHandle[] new_handle) throws StandardException(Code)
Move record to a page toward the beginning of the file.

As part of compressing the table records need to be moved from the end of the file toward the beginning of the file. Only the contiguous set of free pages at the very end of the file can be given back to the OS. This call is used to purge the row from the current page, insert it into a previous page, and return the new row location Mark the record identified by position as deleted. The record may be undeleted sometime later using undelete() by any transaction that sees the record.

The interface is optimized to work on a number of rows at a time, optimally processing all rows on the page at once. The call will process either all rows on the page, or the number of slots in the input arrays - whichever is smaller. Locking Policy

MUST be called with table locked, not locks are requested. Because it is called with table locks the call will go ahead and purge any row which is marked deleted. It will also use purge rather than delete to remove the old row after it moves it to a new page. This is ok since the table lock insures that no other transaction will use space on the table before this transaction commits.
A page latch on the new page will be requested and released.
Parameters:
  slot - Slot of row to move.
Parameters:
  row - A template to read the current row into as partof moving it.
Parameters:
  old_handle - An array to be filled in by the call with the old handles of all rows moved.
Parameters:
  new_handle - An array to be filled in by the call with the new handles of all rows moved. the number of rows processed.
exception:
  StandardException - Standard Cloudscape error policy
See Also:   LockingPolicy




nonDeletedRecordCount
public int nonDeletedRecordCount() throws StandardException(Code)
Return the number of records on this page that are not marked as deleted.
MT - latched
exception:
  StandardException - Standard Cloudscape error policy



purgeAtSlot
public void purgeAtSlot(int slot, int numpurges, boolean needDataLogged) throws StandardException(Code)
Purge the row(s) from page.

Purge the row(s) from page, get rid of the row(s) and slot(s) - USE WITH CAUTION, please see entire description of this operation before attempting to use this. Starting from the specified slot, n rows will be purged. That is, rows that occupies from slot to slot+n-1 will be purged from the page.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the records are purged.

NOTE : CAVEAT
This operation will physically get rid of the row from the page, so if a subsequent operation on this page uses a slot that has been purged, then the undo of this operation will fail. It is only safe to use this operation if the caller knows that it has exclusive access to the page for the duration of the transaction, i.e, effectively holding a page lock on the page

NOTE
Outstanding handles to purged rows are no longer valid, accessing them will cause an exception to be thrown.
NOTE : Data Logging for Purges
needDataLogged is used to specify whether data is required to be logged for purge operatios. Data Logging is required Only if the row can be reused or required for key search if a purge is rolled back;(rollback can occur if the system crashes in the middle of purges or some unexpected error condiditions rolled back. For example: 1)Btree expects the data to be there if a purge is rolled back; needDataLogged=true 2)Heaps does not care if data exist because only operation that can occur on a row whose purge rolled back is purging again.(needDataLogged=false) MT - latched
Parameters:
  slot - the starting slot number
Parameters:
  numpurges - number of slots to purge. If <= 0, just returns as a no-op.
Parameters:
  needDataLogged - if set to true data is logged for purges else only headers.
exception:
  StandardException - Standard Cloudscape error policy
See Also:   LockingPolicy




recordCount
public int recordCount() throws StandardException(Code)
Return the number of records on the page. The returned count includes rows that are deleted, i.e. it is the same as the number of slots on the page.
MT - latched
exception:
  StandardException - Standard Cloudscape error policy



recordExists
boolean recordExists(RecordHandle handle, boolean ignoreDelete) throws StandardException(Code)
does the record still exist on the page?

If "ignoreDelete" is true and the record handle represents a record on the page (either marked deleted or not) return true. If "ignoreDelete" is false return true if the record handle represents a record on the page and the record is not marked as deleted. Return false otherwise.
MT - Latched boolean indicating if the record still exists on the page.
Parameters:
  handle - handle of the record to look for.
Parameters:
  ignoreDelete - if true, then routine will return true even if therow is marked deleted.
exception:
  StandardException - Standard exception policy.




setAuxObject
public void setAuxObject(AuxObject aux)(Code)
Set the aux object for this page. To clear the auxObject in the page, pass in a null AuxObject. If the AuxObject has already been set, this method will call auxObjectInvalidated() on the old aux objkect and replace it with aux.
MT - latched
See Also:   AuxObject



setTimeStamp
void setTimeStamp(PageTimeStamp ts) throws StandardException(Code)
Set the time stamp to what is on page at this instance. No op if this page does not support time stamp.
exception:
  StandardException - Standard Cloudscape error policy.



shouldReclaimSpace
public boolean shouldReclaimSpace(int num_non_deleted_rows, int slot_just_deleted) throws StandardException(Code)
Is this page/deleted row a candidate for immediate reclaim space.

Used by access methods after executing a delete on "slot_just_deleted" to ask whether a post commit should be queued to try to reclaim space after the delete commits.

Will return true if the number of non-deleted rows on the page is <= "num_non_deleted_rows". For instance 0 means schedule reclaim only if all rows are deleted, 1 if all rows but one are deleted.

Will return true if the row just deleted is either a long row or long column. In this case doing a reclaim space on the single row may reclaim multiple pages of free space, so better to do it now rather than wait for all rows on page to be deleted. This case is to address the worst case scenario of all rows with long columns, but very short rows otherwise. In this case there could be 1000's of rows on the main page with many gigabytes of data on overflow pages in deleted space that would not be reclaimed until all rows on the page were deleted. true if a reclaim space should be scheduled post commit on thispage, false otherwise.
Parameters:
  num_non_deleted_rows - threshold number of non-deleted rows toschedule reclaim space.
Parameters:
  slot_just_deleted - row on page to check for long row/long column
exception:
  StandardException - Standard exception policy.




spaceForInsert
boolean spaceForInsert() throws StandardException(Code)
Is it likely that an insert will fit on this page?

Return true if there is a good chance an insert will fit on this page, false otherwise. If this returns true then an insert may still fail by throwing an exception or by returning null, see insertAtSlot for details. It is very probable that this call is much faster than the version that takes a row. In situations where it is expected that the majority of times a row will fit on a page this method should be used and the null return handled from insert/insertAtSlot.
MT - latched true if it is likely an insert will fit on the page.
exception:
  StandardException - Standard exception policy.




spaceForInsert
boolean spaceForInsert(Object[] row, FormatableBitSet validColumns, int overflowThreshold) throws StandardException(Code)
will insert of this row fit on this page?

Return true if this record is guaranteed to be inserted successfully using insert() or insertAtSlot(). This guarantee is only valid if the following conditions are fulfilled before an insert is called with t his row.

  • The page is not unlatched
  • The page is not modified in any way, ie. no updates or other inserts
  • The row is not modified in such a way that would change its storage size

MT - latched true if insert of this row will fit on this page.
Parameters:
  row - The row to check for insert.
Parameters:
  validColumns - bit map to interpret valid columns in row.
Parameters:
  overflowThreshold - The percentage of the page to use for theinsert. 100 means use 100% of the page,50 means use 50% of page (ie. make sure2 rows fit per page).
exception:
  StandardException - Standard exception policy.



unlatch
public void unlatch()(Code)
Unlatch me, the page is exclusivly latched by its current user until this method call is made.
After using this method the caller must throw away the reference to the Page object, e.g.
 ref.unlatch();
 ref = null;
 

The page will be released automatically at the close of the container if this method is not called explictly.
MT - latched



update
boolean update(RecordHandle handle, Object[] row, FormatableBitSet validColumns) throws StandardException(Code)
Update the record identified by the record handle.

Update the record, the new column values are found in row[] and if validColumns is not-null, only use the columns indicated as valid in the bit set.


The page latch may be released and re-latched within this method. This will occur if the record lock has to be waited for.
Parameters:
  handle - the record handle
Parameters:
  row - The row version of the data
Parameters:
  validColumns - A bit map of which columns in the row is valid. ValidColumns will not be changed by RawStore. true if the record is updated. False if it is not because the record is already deleted.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - If the record handle does not match a record on the page.
See Also:   Page.updateAtSlot
exception:
  StandardException - Standard exception policy.




updateAtSlot
RecordHandle updateAtSlot(int slot, Object[] row, FormatableBitSet validColumns) throws StandardException(Code)
Update the complete record identified by the slot.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is undeleted. If record already deleted, an exception is thrown.
It is guaranteed that the page latch is not released by this method a Handle to the updated record.
Parameters:
  slot - is the slot number
Parameters:
  validColumns - a bit map of which columns in the row is valid.ValidColumns will not be changed by RawStore.
exception:
  StandardException - Standard Cloudscape error policy
exception:
  StandardException - The container was not opened in update mode.
exception:
  StandardException - if the slot is not on the page.
See Also:   Page.update




updateFieldAtSlot
public RecordHandle updateFieldAtSlot(int slot, int fieldId, Object newValue, LogicalUndo undo) throws StandardException(Code)
Update a field within the record, replacing its current value with the stored representation of newValue. Record is identified by slot. If the field does not exist then it is added to the record, but only if (fieldId - 1) exists.
RESOLVE right now it throws an exception if fieldId is not already on the record, not add the next one as advertised.

Locking Policy

Calls the lockRecordForWrite() method of the LockingPolicy object passed to the openContainer() call before the record is updated.
It is guaranteed that the page latch is not released by this method
Parameters:
  slot - is the slot number
Parameters:
  fieldId - is the column id
Parameters:
  newValue - has the new colum value to be stored in the record
Parameters:
  undo - if logical undo may be necessary, a function pointer to theaccess code where the logical undo logic resides. Null if logical undois not necessary. a Handle to the updated record.
exception:
  StandardException - Standard Cloudscape error policy, astatement level exception is thrown ifthe slot is not on the page, or if the record is deleted, or if the fieldId is not on the record and (fieldId - 1)does not exist.
exception:
  StandardException - The container was not opened in update mode.
See Also:   LockingPolicy
See Also:   LogicalUndo
See Also:   LogicalUndoable




www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.