rec_get_nth_field_offs_old(): Split from rec_get_nth_field_old().
rec_get_nth_field_old(): Reimplement as a constness-preserving macro.
dict_drop_index_tree(), dict_truncate_index_tree(): Note that rec is
an in/out parameter, as the B-tree root page number will be updated.
btr_check_node_ptr(): Replace page_t* parameter with buf_block_t*.
btr_free_externally_stored_field(): Add const qualifier to rec.
Remove an explicit buf_block_align() call, but replace an
mtr_memo_contains() with mtr_memo_contains_page().
row_upd_rec_sys_fields(): Reorder an assertion containing buf_block_align()
so that the costly call can be avoided in some cases.
Replace all page_t* parameters with buf_block_t*, and replace many
rec_t* parameters with heap_no. This eliminates also many
rec_get_heap_no() calls, which became more expensive with the
introduction of ROW_FORMAT=COMPACT in MySQL/InnoDB 5.0.3.
page_rec_get_heap_no(), lock_get_min_heap_no(): New functions.
page_set_max_trx_id(): Replace page_t* parameter with buf_block_t*,
to avoid a buf_block_align() call.
Replace some occurrences of page_get_page_no() with buf_block_get_page_no().
page_cur_delete_rec(): Replace buf_block_align() with page_cur_get_block().
btr_cur_t: Move page_block to page_cur_t::block.
page_cur_get_block(), page_cur_get_page_zip(): New functions.
page_cur_position(): Add parameter block.
Remove many page_zip parameters, now that there is page_cur_get_page_zip().
Replace some page, page_zip parameters with block.
Add some const qualifiers to function parameters and remove casts.
PAGE_HEAP_NO_INFIMUM, PAGE_HEAP_NO_SUPREMUM, PAGE_HEAP_NO_USER_LOW:
New constants.
Replace some cursor code in low-level diagnostic functions with
direct management of rec, because buf_block_t::buf_fix_count may be 0
when the functions are called, and debug assertions would fail.
accessors returning pointers with macros that preserve const qualifiers.
In UNIV_DEBUG builds, retain the accessors and cast away constness there.
dfield_get_type(), dfield_get_data(), dtuple_get_nth_field(),
dict_table_get_nth_col(), dict_table_get_sys_col(): Implement as macro
unless #ifdef UNIV_DEBUG.
rec_get_nth_field(): Replace with rec_get_nth_field_offs() that does not
do pointer arithmetics. Implement rec_get_nth_field() as a macro.
ibuf_reset_free_bits(): Remove, as there already is a similar function
ibuf_reset_free_bits_with_type().
ibuf_reset_free_bits_with_type(), ibuf_set_free_bits(),
ibuf_update_free_bits_if_full(), btr_leaf_page_release(),
buf_page_make_young(): Replace page_t with buf_block_t.
btr_compress(): Replace btr_page_get() with btr_block_get().
with page_get_page_no() and page_get_space_id(). We want to avoid
buf_block_align() calls, and the page_no and space_id are now stamped
on the pages early on.
Replace ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), ...))
with ut_ad(mtr_memo_contains_page(mtr, ptr, ...)) in order to reduce the
number of buf_block_align() calls.
of externally stored columns, and fix bugs introduced in r873. (Bug #22496)
btr_page_get_sure_split_rec(), btr_page_insert_fits(),
rec_get_converted_size(), rec_convert_dtuple_to_rec(),
rec_convert_dtuple_to_rec_old(), rec_convert_dtuple_to_rec_new():
Add parameters ext and n_ext. Flag external fields during the
conversion.
rec_set_field_extern_bits(), rec_set_field_extern_bits_new(),
rec_offs_set_nth_extern(), rec_set_nth_field_extern_bit_old():
Remove. The bits are set by rec_convert_dtuple_to_rec().
page_cur_insert_rec_low(): Remove the parameters ext and n_ext.
btr_cur_add_ext(): New utility function for updating and sorting ext[].
Low-level functions now expect the array to be in ascending order
for performance reasons. Used in btr_cur_optimistic_insert(),
btr_cur_pessimistic_insert(), and btr_cur_pessimistic_update().
btr_cur_optimistic_insert(): Remove some defensive code, because we cannot
compute the added parameters of rec_get_converted_size().
btr_push_update_extern_fields(): Sort the array. Require the array to
be twice the maximum usage, so that ut_ulint_sort() can be used.
dtuple_convert_big_rec(): Allocate new space for the BLOB pointer,
to avoid overwriting prefix indexes to the same column. Adapt
dtuple_convert_back_big_rec().
row_build_index_entry(): Fetch the columns also for prefix indexes of
the clustered index.
page_zip_apply_log(), page_zip_decompress_clust(): Allow externally
stored fields to lack a locally stored part.
"On compressed pages, return NULL if incl_data > free_space."
btr_page_split_and_insert(): Remove the limit check of n_iterations
on compressed pages. After enough many invocations of
btr_page_get_sure_split_rec(), the record will finally fit.
for (;;) { ... if (condition) { ... return }} loop as
do { ... } while (!condition); ... return.
On compressed pages, return NULL if incl_data > free_space.
guaranteed free space available for inserting one record.
btr_page_get_sure_split_rec(), btr_cur_pessimistic_insert():
Use page_zip_empty_size().
btr_page_split_and_insert(): Relax a debug assertion that there should
be at least two user records on the page. On compressed pages, we may
be able to write only one record.
record will fit or need external storage.
btr_page_get_sure_split_rec(): Estimate the free space of an empty
compressed page.
page_zip_rec_needs_ext(): New function, to replace existing tests whether
external storage is needed.
by running index_merge_ror_cpk on 1-kilobyte compressed pages.
page_delete_rec_list_start(): Remove the page_zip_validate() assertion.
btr_page_split_and_insert(): Add page_zip_validate() assertions about
page and new_page after moving the records.
page_zip_reorganize() was invoked.
btr_compress(): Obtain orig_pred and orig_succ after copying the records.
Add a debug assertion about FIL_PAGE_PREV.
page_copy_rec_list_end(), page_copy_rec_list_start(): Change the return
type from ibool to rec_t. Adjust the return value after invoking
page_zip_reorganize().
btr_compress(): Invoke page_zip_validate() on the page being compressed.
recv_parse_or_apply_log_rec_body(): Assert that MLOG_WRITE_STRING is
never used on compressed B-tree pages.
page_zip_assertion() failure in page_copy_rec_list_end().
btr_root_raise_and_insert(), btr_lift_page_up(), btr_compress():
Add page_zip_validate() assertions.
btr_compress(): Only copy FIL_PAGE_PREV when UNIV_BTR_DEBUG is defined.
page_cur_delete_rec(): Document why the page_zip_validate() assertion
was removed.
page_copy_rec_list_end(): Remove the page_zip_validate() assertion and
document why.
page_move_rec_list_end(): Add page_zip_validate() assertion.
page_cur_delete_rec(): Do not call page_zip_validate() in the beginning,
because btr_set_min_rec_mark() in btr_cur_pessimistic_delete() will
cause a temporary mismatch.
Document temporary mismatches caused by btr_set_min_rec_mark() calls
and explain why they will not cause any problems.
page_zip_compress_write_log(): Make static.
page_zip_compress(): Add optional parameter mtr for redo logging.
page_zip_reorganize(): Low-level counterpart of btr_page_reorganize().
page_zip_copy(): Add debug assertions about mtr_memo_contains.
page_cur_insert_rec_low(): Try page_zip_reorganize() and seek to the
new position of insert_rec if it succeeds.
page_copy_rec_list_end(), page_copy_rec_list_start():
Try page_zip_reorganize().
page_move_rec_list_end(): Remove bogus comment.
page_zip_copy(), page_zip_compress_write_log(): Add parameter 'index'.
page_zip_parse_write_header(): Check for !page_zip only if page != NULL.
page_zip_compress_write_log(), page_zip_parse_compress(): Omit some
fields in the page header. Omit the unused bytes between the modification
log and the page trailer.
parse_or_apply_log_rec_body(): Remove a bogus debug assertion.
page_move_rec_list_start() and page_move_rec_list_end(). Relax the
conditions on insert_will_fit if page_zip is set.
page_delete_rec_list_start(): Make public.
page_zip_copy(): Clear REC_INFO_MIN_REC_FLAG if FIL_PAGE_PREV != FIL_NULL.
set the FIL_PAGE_PREV field of merge_page to FIL_NULL before copying the
records in order not to break the assumption of page_zip_compress() that
min_rec_mark is always set on the first user record of a non-leaf page
whose FIL_PAGE_PREV field is FIL_NULL, and never otherwise.
btr_compress(): Defer any tree modifications until the records
have successfully been copied.
row_purge_remove_sec_if_poss_low(): Simplify the setting of
the return status.
btr_validate_level(): Add missing parameter to added buf_page_print() calls.
btr_root_raise_and_insert(): Replace low-level code with page_zip_copy().
page_zip_copy(): New function to copy the data payload of a compressed page,
byte for byte. The file page header and trailer are not copied, to avoid
overwriting the fields FIL_PAGE_OFFSET, FIL_PAGE_PREV and FIL_PAGE_NEXT.
btr_root_raise_and_insert(): When copying root to new_page byte for byte,
restore the page number of new_page afterwards.
buf_flush_init_for_writing(): For FIL_PAGE_INDEX, write the page number
and space id also to the uncompressed page.