passed as TRUE.
Enclose hash_table_t::adaptive and buf_block_t::n_pointers in
#ifdef UNIV_DEBUG.
btr_search_drop_page_hash_index(): Enclose the corruption check
(which depends on buf_block_t::n_pointers) in #ifdef UNIV_DEBUG.
and modify some functions to return const pointers. Add const qualifiers
to local variable declarations or casts to remove the const qualifier
in those places where write access is needed.
the symbol UNIV_DEBUG_PRINT, which was introduced in r729.
buf_LRU_print(), buf_print(): Replace #ifdef UNIV_DEBUG_PRINT
with #if defined UNIV_DEBUG || defined UNIV_DEBUG_PRINT.
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.
buf_flush_init_for_writing(): Remove parameters space, page_no.
fsp_init_file_page_low(): Wriet space_id and page_no to the page.
fil_create_new_single_table_tablespace(): Write space_id to the page.
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.
dict_load_foreigns(): Enclose in #ifndef UNIV_HOTBACKUP.
fil_extend_tablespaces_to_stored_len(): Pass zip_size to fil_read().
buf_page_init_for_backup_restore(): Add parameter zip_size.
Enclose the declaration in buf0buf.h in #ifdef UNIV_HOTBACKUP.
recv_apply_log_recs_for_backup(): Replace the local variable "page"
with the local variable "block". Add local variable zip_size.
of tests are failing with trunk -r869, with this revision using uncompressed
storage, and with this revision hard-wired to use 1-kilobyte compressed pages
and innodb_file_per_table.
btr_push_update_extern_fields(): Do not call ut_ulint_sort() if n_pushed == 0.
btr_copy_externally_stored_field_prefix_low(): Replace ut_max() with ut_min().
os_aio_simulated_handle() before and after initiating a write. We
cannot easily pass the compressed page sizes to this function. The
check could only be performed on uncompressed pages.
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.
with FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID and FIL_PAGE_DATA. The doublewrite
buffer needs to read the space_id in order to determine the type of the page.
Because FIL_PAGE_TYPE could contain garbage in MySQL/InnoDB 5.0 and earlier
versions, we cannot trust fil_page_get_type(). Instead, we have to always
store the space_id at the same location. This modification wastes 12 bytes
per compressed BLOB page (1.2% on 1-kilobyte pages).
of externally stored columns to REC_1BYTE_OFFS_LIMIT (128) bytes.
TODO: only store BTR_EXTERN_FIELD_REF_SIZE (20) bytes with the record,
and store the entire column externally. (Bug #22496)
dict_col_t::min_prefix: Remove.
Do not augment clustered index records. When computing the prefix,
use dfield (where the prefix was copied), not dfield2 (the record in
the clustered index).
in the clustered index to be smaller than the indexed prefix in secondary
indexes.
row_ext_lookup(): Return NULL if the column is not stored externally.
trx_undo_rec_get_partial_row(): row_build(): Add parameter row_ext_t** ext.
row_build_index_entry(): Add the parameter row_ext_t* ext.
Invoke row_ext_lookup() to fetch prefixes of externally stored columns.
upd_node_t, undo_node_t, purge_node_t: Add the field row_ext_t* ext.
This will be needed for fixing Bug #22496.
REC_MAX_INDEX_COL_LEN: New constant, copied from DICT_MAX_INDEX_COL_LEN.
row_ext_create(), row_ext_lookup(), row_ext_lookup_low(): New functions.
stored column. This is the first part of fixing Bug #22496.
btr_copy_externally_stored_field_prefix(): New function.
btr_copy_externally_stored_field(): Split to
btr_copy_externally_stored_field_prefix_low().
row_sel_sec_rec_is_for_blob(): New function, used by
row_sel_sec_rec_is_for_clust_rec() in selects via
a secondary index.
btr_push_update_extern_fields(): Instead of iterating all upd_get_n_fields(),
stop at the first match.
row_search_index_entry(): Simplify the return statements.
row_upd_sec_step(): Eliminate the local variable "err".
row_upd_clust_step(): Add a UNIV_UNLIKELY hint.
ibuf_fixed_addr_page() and fsp_descr_page() before invoking
fil_inc_pending_ibuf_merges(). That function call should
always be paired with a call to fil_decr_pending_ibuf_merges().
fil_space_get_zip_size() unless zip_size is really needed
(update_ibuf_bitmap || page). This avoids an assertion failure
when discarding ibuf entries for a deleted tablespace, for which
fil_space_get_zip_size() would return ULINT_UNDEFINED.
Also, reindent ibuf0ibuf.c.
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.