⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btreelockingpolicy.java

📁 derby database source code.good for you.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * @param request_scan_lock Whether to request the page scan lock, should     *                          only be requested once per page in the scan.     * @param lock_template     A scratch area to use to read in rows.     * @param previous_key_lock Is this a previous key lock call?     * @param forUpdate         Is the scan for update or for read only.     * @param lock_operation    For what operation are we requesting the lock,      *                          this should be one of the following 4 options:     *                          LOCK_READ [read lock],      *                          (LOCK_INS | LOCK_UPD) [ lock for insert],      *                          (LOCK_INSERT_PREVKEY | LOCK_UPD) [lock for      *                          previous key to insert],     *                          (LOCK_UPD) [lock for delete or replace]     *	 * @exception  StandardException  Standard exception policy.     **/    abstract public boolean lockScanRow(    OpenBTree               open_btree,    BTree                   btree,    BTreeRowPosition        pos,    boolean                 request_scan_lock,    FetchDescriptor         lock_fetch_desc,    DataValueDescriptor[]   lock_template,    RowLocation             lock_row_loc,    boolean                 previous_key_lock,    boolean                 forUpdate,    int                     lock_operation)		throws StandardException;    /**     * Release read lock on a row.     *     * @param pos               Data structure that defines the current position     *                          in the scan to be unlocked.     *     * @param forUpdate         Is the scan for update or for read only.     *	 * @exception  StandardException  Standard exception policy.     **/    abstract public void unlockScanRecordAfterRead(    BTreeRowPosition        pos,    boolean                 forUpdate)		throws StandardException;    /**     * Release the lock gotten by calling lockScan.  This call can only be     * made to release read scan locks, write scan locks must be held until     * end of transaction.     * <p>     *     * @param page_number   page number of page that lockScan was called on.     *     **/    abstract public void unlockScan(long page_number);    /**************************************************************************     * Abstract Protected lockNonScan*() locking methods of BTree:     *     *     lockNonScanPreviousRow   - lock the row previous to the current     *     lockNonScanRow           - lock the input row     *     lockNonScanRowOnPage     - lock the given row on the page.     **************************************************************************     */    /**     * Lock the previous key.     * <p>     * Given the current latched page and slot number, lock the logically     * previous key in the table.  There are 3 cases:     * <p>     * slotnumber > 1                       - just lock (slotnumber - 1)     * (slotnumber == 1) && (leftmost leaf) - this is the first key in the     *                                        table, so lock a "magic" FIRSTKEY.     * (slotnumber == 1) && !(leftmost leaf)- traverse left in the tree looking     *                                        for a previous key.     * <p>     * On successful return from this routine appropriate locking will have     * been done.  All locks and latches are requested nowait, if any      * lock/latch cannot be granted this routine releases the current_leaf     * latch and any latches it may have acquired and returns "false."     * <p>     * All extra latches that may have been gotten will have been released.     * <p>     * This routine will find the "previous row" to the (current_leaf,     * current_slot), walking left in the tree as necessary, and first request     * the lock on that row NOWAIT.  If that lock can not be granted,     * then it will release all latches that it has acquired up to that point     * including the latched current_leaf passed into the routine, and request      * the lock WAIT.  Once the lock has been granted the routine will return     * and it is up to the caller to research the tree to find where the      * row may have ended up.     * <p>     * If routine returns true, lock was granted NOWAIT, current leaf     * remains latched, and was never unlatched.  If routine returns false,     * lock was granted WAIT, current leaf is not latched, row may have      * moved in the btree so caller must research to find the row.     *     *     * @param btree             The conglomerate we are locking.     * @param current_leaf      Latched current leaf where "current" key is.     * @param current_slot      The slot of row on "current_leaf"      * @param lock_template     Empty full template row, to read row into.     * @param open_btree        The open_btree to associate latches with -      *                          used if routine has to scan backward.     * @param lock_operation    For what operation are we requesting the lock,      *                          this should be one of the following 4 options:     *                          LOCK_READ [read lock],      *                          (LOCK_INS | LOCK_UPD) [ lock for insert],      *                          (LOCK_INSERT_PREVKEY | LOCK_UPD) [lock for      *                          previous key to insert],     *                          (LOCK_UPD) [lock for delete or replace]     * @param lock_duration     For what duration should the lock be held,     *                          if INSTANT_DURATION, then the routine will     *                          guarantee that lock was acquired while holding     *                          the latch, but then immediately release the     *                          lock.  If COMMIT_DURATION or MANUAL_DURATION     *                          then the lock be held when routine returns     *                          successfully.     *	 * @exception  StandardException  Standard exception policy.     **/    abstract public boolean lockNonScanPreviousRow(    BTree                   btree,    LeafControlRow          current_leaf,    int                     current_slot,    FetchDescriptor         lock_fetch_desc,    DataValueDescriptor[]   lock_template,    RowLocation             lock_row_loc,    OpenBTree               open_btree,    int                     lock_operation,    int                     lock_duration)		throws StandardException;    /**     * Lock a btree row (row in memory).  Meant to be used if caller      * has the entire row objectified.     * <p>     * Lock a btree row, enforcing the standard lock/latch protocol.       * On return the row is locked.  Return status indicates if the lock     * was waited for, which will mean a latch was dropped while waiting.     * In general a false status means that the caller will either have      * to research the tree unless some protocol has been implemented that     * insures that the row will not have moved while the latch was dropped.     * <p>     * This routine request a row lock NOWAIT on the in-memory row      * "current_row.".  If the lock is granted the routine will return true.     * If the lock cannot be granted NOWAIT, then the routine will release     * the latch on "current_leaf" (if current_leaf is non-null) and      * "aux_leaf" (if aux_leaf is non-null), and then it will request a WAIT      * lock on the row.       *     *     * @param btree             The conglomerate we are locking.     * @param current_leaf      If non-null, this leaf is unlatched if the      *                          routine has to wait on the lock.     * @param aux_leaf          If non-null, this leaf is unlatched if the      *                          routine has to wait on the lock.     * @param current_row       In memory, objectified "current" row.     * @param lock_operation    For what operation are we requesting the lock,      *                          this should be one of the following 4 options:     *                          LOCK_READ [read lock],      *                          (LOCK_INS | LOCK_UPD) [ lock for insert],      *                          (LOCK_INSERT_PREVKEY | LOCK_UPD) [lock for      *                          previous key to insert],     *                          (LOCK_UPD) [lock for delete or replace]     *	 * @exception  StandardException  Standard exception policy.     **/    abstract public boolean lockNonScanRow(    BTree                   btree,    LeafControlRow          current_leaf,    LeafControlRow          aux_leaf,    DataValueDescriptor[]   current_row,    int                     lock_operation)		throws StandardException;    /**     * Lock the row at the given slot.     * <p>     * If this routine returns true all locks were acquired while maintaining     * the latch on leaf.  If this routine returns false, locks may or may     * not have been acquired, and the routine should be called again after     * the client has researched the tree to reget the latch on the      * appropriate page.     *	 * @return Whether locks were acquired without releasing latch on leaf.     *     * @param btree             the conglomerate info.     * @param leaf              The control row of the current leaf to lock.     * @param slot              The slot position of the row to lock.     * @param lock_template     A scratch area to use to read in rows.     * @param lock_operation    For what operation are we requesting the lock,      *                          this should be one of the following 4 options:     *                          LOCK_READ [read lock],      *                          (LOCK_INS | LOCK_UPD) [ lock for insert],      *                          (LOCK_INSERT_PREVKEY | LOCK_UPD) [lock for      *                          previous key to insert],     *                          (LOCK_UPD) [lock for delete or replace]     *	 * @exception  StandardException  Standard exception policy.     **/    abstract public boolean lockNonScanRowOnPage(    BTree                   btree,    LeafControlRow          leaf,    int                     slot,    FetchDescriptor         lock_fetch_desc,    DataValueDescriptor[]   lock_template,    RowLocation             lock_row_loc,    int                     lock_operation)		throws StandardException;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -