mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
MDEV-12353: Exclusively use page_zip_reorganize() for ROW_FORMAT=COMPRESSED
page_zip_reorganize(): Restore the page on failure. In callers, omit now-redundant calls to page_zip_decompress(). btr_page_reorganize_low(): Define in static scope only, and remove the z_level parameter. Assert that ROW_FORMAT is not COMPRESSED. btr_page_reorganize_block(), btr_page_reorganize(): Invoke page_zip_reorganize() for ROW_FORMAT=COMPRESSED.
This commit is contained in:
parent
f802c989ec
commit
acd265b69b
8 changed files with 99 additions and 148 deletions
|
|
@ -434,31 +434,6 @@ be done either within the same mini-transaction, or by invoking
|
|||
ibuf_reset_free_bits() before mtr_commit(). On uncompressed pages,
|
||||
IBUF_BITMAP_FREE is unaffected by reorganization.
|
||||
|
||||
@retval true if the operation was successful
|
||||
@retval false if it is a compressed page, and recompression failed */
|
||||
bool
|
||||
btr_page_reorganize_low(
|
||||
/*====================*/
|
||||
bool recovery,/*!< in: true if called in recovery:
|
||||
locks should not be updated, i.e.,
|
||||
there cannot exist locks on the
|
||||
page, and a hash index should not be
|
||||
dropped: it cannot exist */
|
||||
ulint z_level,/*!< in: compression level to be used
|
||||
if dealing with compressed page */
|
||||
page_cur_t* cursor, /*!< in/out: page cursor */
|
||||
dict_index_t* index, /*!< in: the index tree of the page */
|
||||
mtr_t* mtr) /*!< in/out: mini-transaction */
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
/*************************************************************//**
|
||||
Reorganizes an index page.
|
||||
|
||||
IMPORTANT: On success, the caller will have to update IBUF_BITMAP_FREE
|
||||
if this is a compressed leaf page in a secondary index. This has to
|
||||
be done either within the same mini-transaction, or by invoking
|
||||
ibuf_reset_free_bits() before mtr_commit(). On uncompressed pages,
|
||||
IBUF_BITMAP_FREE is unaffected by reorganization.
|
||||
|
||||
@retval true if the operation was successful
|
||||
@retval false if it is a compressed page, and recompression failed */
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -415,17 +415,18 @@ IMPORTANT: if page_zip_reorganize() is invoked on a leaf page of a
|
|||
non-clustered index, the caller must update the insert buffer free
|
||||
bits in the same mini-transaction in such a way that the modification
|
||||
will be redo-logged.
|
||||
@return TRUE on success, FALSE on failure; page_zip will be left
|
||||
intact on failure, but page will be overwritten. */
|
||||
ibool
|
||||
@retval true on success
|
||||
@retval false on failure; the block_zip will be left intact */
|
||||
bool
|
||||
page_zip_reorganize(
|
||||
/*================*/
|
||||
buf_block_t* block, /*!< in/out: page with compressed page;
|
||||
on the compressed page, in: size;
|
||||
out: data, n_blobs,
|
||||
m_start, m_end, m_nonempty */
|
||||
dict_index_t* index, /*!< in: index of the B-tree node */
|
||||
mtr_t* mtr) /*!< in: mini-transaction */
|
||||
ulint z_level,/*!< in: compression level */
|
||||
mtr_t* mtr, /*!< in: mini-transaction */
|
||||
bool restore = false)/*!< whether to restore on failure */
|
||||
MY_ATTRIBUTE((nonnull));
|
||||
|
||||
/**********************************************************************//**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue