public class RowLocking3 extends NoLocking
LockingPolicy
Modifier and Type | Field and Description |
---|---|
protected LockFactory |
lf |
private static LockingPolicy |
NO_LOCK |
MODE_CONTAINER, MODE_NONE, MODE_RECORD
Modifier | Constructor and Description |
---|---|
protected |
RowLocking3(LockFactory lf) |
Modifier and Type | Method and Description |
---|---|
int |
getMode()
Get the mode of this policy
|
protected RowLock |
getReadLockType()
Get type of lock to get while reading data.
|
protected RowLock |
getUpdateLockType()
Get type of lock to get while requesting "update" lock.
|
protected RowLock |
getWriteLockType()
Get type of lock to get while writing data.
|
boolean |
lockContainer(Transaction t,
ContainerHandle container,
boolean waitForLock,
boolean forUpdate)
Obtain container level intent lock.
|
boolean |
lockRecordForRead(Transaction t,
ContainerHandle container_handle,
RecordHandle record,
boolean waitForLock,
boolean forUpdate)
Obtain lock on record being read.
|
boolean |
lockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsert,
boolean waitForLock)
Obtain lock on record being written.
|
boolean |
zeroDurationLockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsertPreviousKey,
boolean waitForLock)
Obtain lock on record being written.
|
unlockContainer, unlockRecordAfterRead
private static final LockingPolicy NO_LOCK
protected final LockFactory lf
protected RowLocking3(LockFactory lf)
protected RowLock getReadLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RS2 locks vs RS3 locks, and still reuse all the other code in this class.
protected RowLock getUpdateLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RU2 locks vs RU3 locks, and still reuse all the other code in this class.
protected RowLock getWriteLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RX2 locks vs RX3 locks, and still reuse all the other code in this class.
public boolean lockContainer(Transaction t, ContainerHandle container, boolean waitForLock, boolean forUpdate) throws StandardException
This implementation of row locking is 2 level, ie. table and row locking. It will interact correctly with tables opened with ContainerLocking3 locking mode.
Updater's will get table level IX locks, and X row locks.
Reader's will get table level IS locks, and S row locks.
lockContainer
in interface LockingPolicy
lockContainer
in class NoLocking
t
- Transaction to associate lock with.container
- Container to lock.waitForLock
- Should lock request wait until granted?forUpdate
- Should container be locked for update, or read?StandardException
- Standard exception policy.ContainerHandle
public boolean lockRecordForRead(Transaction t, ContainerHandle container_handle, RecordHandle record, boolean waitForLock, boolean forUpdate) throws StandardException
Assumes that a table level IS has been acquired. Will acquire a Shared or Update lock on the row, depending on the "forUpdate" parameter.
lockRecordForRead
in interface LockingPolicy
lockRecordForRead
in class NoLocking
t
- The transaction to associate the lock with.record
- The record to be locked.waitForLock
- Should lock request wait until granted?forUpdate
- Whether to open for read or write access.container_handle
- Open Container used to get record. Will be used
to row locks by the container they belong to.StandardException
- Standard exception policy.Page
public boolean zeroDurationLockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsertPreviousKey, boolean waitForLock) throws StandardException
Assumes that a table level IX has been acquired. Will acquire an Exclusive (X) lock on the row.
zeroDurationLockRecordForWrite
in interface LockingPolicy
zeroDurationLockRecordForWrite
in class NoLocking
t
- transaction to associate the lock with.record
- The record to be locked.lockForInsertPreviousKey
- Lock is for a previous key of a insert.waitForLock
- Should lock request wait until granted?StandardException
- Standard exception policy.Page
public boolean lockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsert, boolean waitForLock) throws StandardException
Assumes that a table level IX has been acquired. Will acquire an Exclusive (X) lock on the row.
lockRecordForWrite
in interface LockingPolicy
lockRecordForWrite
in class NoLocking
t
- The transaction to associate the lock with.record
- The record to be locked.lockForInsert
- Lock is for an insert.waitForLock
- Should lock request wait until granted?StandardException
- Standard exception policy.Page
public int getMode()
LockingPolicy
getMode
in interface LockingPolicy
getMode
in class NoLocking
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.