Class RecordId
- All Implemented Interfaces:
Lockable
,RecordHandle
MT - Mutable - Immutable identity : Thread Aware -
The methods of RecordHandle only access the identity of the object and so the object appears immutable to them, as required.
The methods of Lockable are single thread required.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final PageKey
Page the record lives in.private final int
The actual record id.private int
Last slot number this record id was at.Fields inherited from interface org.apache.derby.iapi.store.raw.RecordHandle
DEALLOCATE_PROTECTION_HANDLE, FIRST_RECORD_ID, INVALID_RECORD_HANDLE, PREVIOUS_KEY_HANDLE, RESERVED1_RECORD_HANDLE, RESERVED4_RECORD_HANDLE, RESERVED5_RECORD_HANDLE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
Implement value equality.Return the identity of my container.int
getId()
Get my record id.Return the identity of my Page.long
Get my page number.int
What slot number might the record be at?int
hashCode()
Return a hashcode based on value.boolean
lockAttributes
(int flag, Hashtable<String, Object> attributes) This lockable wants to participate in the Virtual Lock table.boolean
Is a caller that holds a lock compatible with themselves?void
Lock me.boolean
requestCompatible
(Object requestedQualifier, Object grantedQualifier) Determine if this request can be granted.toString()
void
unlockEvent
(Latch lockInfo) Unlock me.
-
Field Details
-
pageId
Page the record lives in. MT - Immutable -
recordId
private final int recordIdThe actual record id. MT - Immutable -
slotNumberHint
private transient int slotNumberHintLast slot number this record id was at.
-
-
Constructor Details
-
RecordId
-
RecordId
-
RecordId
-
-
Method Details
-
getId
public int getId()Get my record id.
MT - thread safe- Specified by:
getId
in interfaceRecordHandle
- See Also:
-
getPageNumber
public long getPageNumber()Get my page number.
MT - thread safe- Specified by:
getPageNumber
in interfaceRecordHandle
- See Also:
-
getPageId
Description copied from interface:RecordHandle
Return the identity of my Page.- Specified by:
getPageId
in interfaceRecordHandle
-
getContainerId
Description copied from interface:RecordHandle
Return the identity of my container.- Specified by:
getContainerId
in interfaceRecordHandle
-
getSlotNumberHint
public int getSlotNumberHint()What slot number might the record be at?The raw store guarantees that the record handle of a record will not change, but its slot number may. When a RecordId is constructed the caller could have provided a slot number, if so return that slot number hint here. If a hint was not provided then the default Page.FIRST_SLOT_NUMBER will be returned.
- Specified by:
getSlotNumberHint
in interfaceRecordHandle
- Returns:
- The slot number the record handle may be at.
-
lockEvent
Lock me.
MT - Single thread required (methods of Lockable) -
requestCompatible
Determine if this request can be granted.Implements the grant/wait lock logic for row locks. See the table in RowLock for more information.
MT - Single thread required (methods of Lockable)- Specified by:
requestCompatible
in interfaceLockable
- See Also:
-
lockerAlwaysCompatible
public boolean lockerAlwaysCompatible()Is a caller that holds a lock compatible with themselves?Row locks held in the same transaction are always compatible with themselves.
MT - Single thread required (methods of Lockable)- Specified by:
lockerAlwaysCompatible
in interfaceLockable
- See Also:
-
unlockEvent
Unlock me.
MT - Single thread required (methods of Lockable)- Specified by:
unlockEvent
in interfaceLockable
- See Also:
-
equals
Implement value equality.
MT - Thread safe -
hashCode
public int hashCode()Return a hashcode based on value.
MT - thread safe -
toString
-
lockAttributes
This lockable wants to participate in the Virtual Lock table.- Specified by:
lockAttributes
in interfaceLockable
- Parameters:
flag
- 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.attributes
- 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,MT - this routine must be MP safe, caller will not be single threading the lock manager.
- Returns:
- true if this object has diagnostic information to add to the virtual lock table. If this object either does not want to participate in the diagnostic virtual lock table or none of the attributes requested are attributes of this lock, returns false.
- See Also:
-