MySQL 9.2.0
Source Code Documentation
PCursor Class Reference

Persistent cursor wrapper around btr_pcur_t. More...

Public Member Functions

 PCursor (btr_pcur_t *pcur, mtr_t *mtr, size_t read_level)
 Constructor. More...
 
void save_current_user_record_as_last_processed () noexcept
 Store the position of the user record that is added to the key buffer and, commit the mini-transaction. More...
 
void restore_to_last_processed_user_record () noexcept
 Restore the cursor to the saved record. More...
 
void save_previous_user_record_as_last_processed () noexcept
 This method must be called after all records on a page are processed and cursor is positioned at supremum. More...
 
void restore_to_first_unprocessed () noexcept
 Restore the cursor to the record which comes next after the saved position by the paired method save_previous_user_record_as_last_processed(). More...
 
dberr_t move_to_next_block (dict_index_t *index)
 Move to the next block. More...
 
void restore_position () noexcept
 Restore the cursor position. More...
 
page_cur_tget_page_cursor () noexcept
 
bool is_after_last_on_page () const noexcept
 
size_t read_level () const noexcept
 

Private Member Functions

void savepoint () noexcept
 Create a savepoint and commit the mini-transaction. More...
 
void resume () noexcept
 Resume from savepoint. More...
 
dberr_t restore_from_savepoint () noexcept
 Restore from a saved position. More...
 
dberr_t move_to_user_rec () noexcept
 Move to the first user rec on the restored page. More...
 

Private Attributes

mtr_tm_mtr {}
 Mini-transaction. More...
 
btr_pcur_tm_pcur {}
 Persistent cursor. More...
 
size_t m_read_level {}
 Level where the cursor is positioned or need to be positioned in case of restore. More...
 

Detailed Description

Persistent cursor wrapper around btr_pcur_t.

Constructor & Destructor Documentation

◆ PCursor()

PCursor::PCursor ( btr_pcur_t pcur,
mtr_t mtr,
size_t  read_level 
)
inline

Constructor.

Parameters
[in,out]pcurPersistent cursor in use.
[in]mtrMini-transaction used by the persistent cursor.
[in]read_levelRead level where the block should be present.

Member Function Documentation

◆ get_page_cursor()

page_cur_t * PCursor::get_page_cursor ( )
inlinenoexcept
Returns
the current page cursor.

◆ is_after_last_on_page()

bool PCursor::is_after_last_on_page ( ) const
inlinenoexcept
Returns
true if cursor is after last on page.

◆ move_to_next_block()

dberr_t PCursor::move_to_next_block ( dict_index_t index)

Move to the next block.

Parameters
[in]indexIndex being traversed.
Returns
DB_SUCCESS or error code.

◆ move_to_user_rec()

dberr_t PCursor::move_to_user_rec ( )
privatenoexcept

Move to the first user rec on the restored page.

◆ read_level()

size_t PCursor::read_level ( ) const
inlinenoexcept
Returns
Level where the cursor is intended.

◆ restore_from_savepoint()

dberr_t PCursor::restore_from_savepoint ( )
privatenoexcept

Restore from a saved position.

Returns
DB_SUCCESS or error code.

◆ restore_position()

void PCursor::restore_position ( )
inlinenoexcept

Restore the cursor position.

◆ restore_to_first_unprocessed()

void PCursor::restore_to_first_unprocessed ( )
noexcept

Restore the cursor to the record which comes next after the saved position by the paired method save_previous_user_record_as_last_processed().

If there is no such record, it will restore to supremum on the last leaf page.

Note
This method must be paired with save_previous_user_record_as_last_processed() to save the record position

◆ restore_to_last_processed_user_record()

void PCursor::restore_to_last_processed_user_record ( )
noexcept

Restore the cursor to the saved record.

If the saved record was physically removed then restore to the largest record which is smaller than the saved record. If all records were removed then restore the cursor to the infimum; this must be fine if the next step of the caller is to advance the cursor.

Note
This method must be paired with save_current_user_record_as_last_processed() to save the record position

◆ resume()

void PCursor::resume ( )
privatenoexcept

Resume from savepoint.

◆ save_current_user_record_as_last_processed()

void PCursor::save_current_user_record_as_last_processed ( )
noexcept

Store the position of the user record that is added to the key buffer and, commit the mini-transaction.

The cursor must not be positioned at infimum or supremum.

Note
This method must be paired with restore_to_last_processed_user_record() to restore the record position

◆ save_previous_user_record_as_last_processed()

void PCursor::save_previous_user_record_as_last_processed ( )
noexcept

This method must be called after all records on a page are processed and cursor is positioned at supremum.

Under this assumption, it stores the position BTR_PCUR_AFTER the last user record on the page. This method must be paired with restore_to_first_unprocessed() to restore to a record which comes right after the value of the stored last processed record

See also
restore_to_first_unprocessed for details.

◆ savepoint()

void PCursor::savepoint ( )
privatenoexcept

Create a savepoint and commit the mini-transaction.

Member Data Documentation

◆ m_mtr

mtr_t* PCursor::m_mtr {}
private

Mini-transaction.

◆ m_pcur

btr_pcur_t* PCursor::m_pcur {}
private

Persistent cursor.

◆ m_read_level

size_t PCursor::m_read_level {}
private

Level where the cursor is positioned or need to be positioned in case of restore.


The documentation for this class was generated from the following file: