buf_pool->watch_ fields to start with the common prefix buf_pool_watch,
so that they can be searched easily:
buf_pool_watch_set(): Renamed from buf_pool_add_watch(). The "add" was
misleading, because only one watch can be active at a time.
buf_pool_watch_clear(): Renamed from buf_pool_remove_watch().
buf_pool_watch_occurred(): Renamed from buf_pool_watch_happened().
differences from branches/zip. The __attribute__((unused)) should
work on all platforms. When compiled with something else than GCC,
MySQL supposedly does #define __attribute__(x) /* empty */
so that the attributes will be ignored.
from branches/zip.
btr_cur_optimistic_delete(): Split a too long line in the way it is
split in branches/zip.
buf_page_get_gen(): Add missing space in the function comment.
buf_print_io(): Restoer a removed space to the printout.
univ.i: Remove C++-style (or C99-style) comments.
buf0buf.h: Undo the white-space changes to the wrapper macros of
buf_page_get_gen().
ibuf_update_free_bits_low(): Revert the changes. Restore the assertion
that this function must not be invoked on compressed pages. The function
ibuf_update_free_bits_zip() is for compressed pages.
ibuf_insert_to_index_page(): Undo a white-space change.
btr0cur.c: Undo changes to white space that make the code differ from
branches/zip.
btr_cur_del_unmark_for_ibuf(): Remove this unused function.
btr_cur_set_deleted_flag_for_ibuf(): Add missing UNIV_INTERN specifier.
Correct the function comment. Call btr_rec_set_deleted_flag() instead
of rec_set_deleted_flag_new(), so that delete buffering will actually
work on ROW_FORMAT=REDUNDANT tables.
The followin mysql-tests failed (and they are known to fail):
main.information_schema [ fail ]
main.innodb_file_per_table_basic[ fail ]
main.type_bit_innodb [ fail ]
Tested against : MYSQL_SERVER_VERSION "5.1.28"
Fix Bug#25640:
Introduce an user visible parameter innodb_stats_sample (default 8,
min 1, max 1000) and use that parameter instead of the
BTR_KEY_VAL_ESTIMATE_N_PAGES macro. Remove this macro.
Approved by: Heikki
in *.h files, so that the function signatures in the *.h and *.c files fully
match each other.
ut_dulint_sort(): Add a UNIV_INTERN qualifier also to the function definition.
lock_rec_restore_from_page_infimum(): Correct the comment of the parameter rec.
lock_sec_rec_read_check_and_lock(): Add the debug assertion
ut_ad(mode == LOCK_X || mode == LOCK_S).
Do not include univ.i in mysql_addons.h, it was included for the sole
purpose of innodb_redefine.h to work and now innodb_redefine.h has been
removed. See r2251 and r2288.
file has been redundant since r2278.
include/innodb_redefine.h: Remove.
include/sync0sync.h: Remove the definition of mutex_free that was added
because of innodb_redefine.h.
include/univ.i: Remove references to innodb_redefine.h. Explain why
the C++ classes need to be renamed.
scripts/build-plugin.sh: Build InnoDB only once. The file
innodb_redefine.h is no longer needed.
symbols. Use it for all definitions of non-static variables and functions.
lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static. It is
referenced from pars0grm.c.
Actually, according to
nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]'
the following symbols are still global:
* The vtable for class ha_innodb
* pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs
The required changes to the Bison-generated file pars0grm.c will be addressed
in a separate commit, which will add a script similar to make_flex.sh.
The class ha_innodb is renamed from class ha_innobase by a #define. Thus,
there will be no clash with the builtin InnoDB. However, there will be some
overhead for invoking virtual methods of class ha_innodb. Ideas for making
the vtable hidden are welcome. -fvisibility=hidden is not available in GCC 3.
creating indexes. Lock the user table inside the user transaction.
enum trx_dict_op: Remove TRX_OP_INDEX_MAY_WAIT.
ha_innobase::add_index(): Lock the user tables within prebuilt->trx.
Commit the data dictionary transaction before creating indexes.
ha_innobase::final_drop_index(): Lock the user table within prebuilt->trx.
to the undo log, also store the original length of the column, so that the
changes will be correctly undone in transaction rollback or when fetching
previous versions of the row.
innodb-zip.test: New file, for tests of the compression.
upd_field_t: Add orig_len, the original length of new_val.
btr_push_update_extern_fields(): Restore the original prefix of the column.
Add the parameter heap where memory will be allocated if necessary.
trx_undo_rec_get_col_val(): Add the output parameter orig_len.
trx_undo_page_report_modify_ext(): New function: Write an externally
stored column to the undo log. This is only called from
trx_undo_page_report_modify(), and this is the only caller of
trx_undo_page_fetch_ext().
trx_undo_update_rec_get_update(): Read the original length of the column
prefix to upd_field->orig_len.
Include univ.i in mysql_addons.h because univ.i includes innodb_redefine.h
which is needed to rename the functions in this file with ibd_ prefix in
the dynamic InnoDB plugin. Aka the renaming magic, required for the dynamic
plugin to work.
Approved by: Marko
stored columns (BLOBs).
btr_copy_blob_prefix(), btr_copy_zblob_prefix(),
btr_copy_externally_stored_field_prefix_low(),
btr_copy_externally_stored_field_prefix(),
btr_copy_externally_stored_field(),
btr_rec_copy_externally_stored_field():
Note that the page containing the clustered index record that points to
the BLOB must be latched.
btr_copy_zblob_prefix(): Note that there is no latch on the page, and thus
all accesses to a given page via this function must be covered by the same
set of locks or latches.
btr_copy_zblob_prefix(): Note that the block acquired by
buf_page_get_zip() is protected by an exclusive table lock or
or by a latch on the clustered index record.
record is protected by a latch or a lock.
dtuple_copy(): New function: Copy a data tuple.
row_upd_replace(): New function: Apply on a row an update vector that
was built for the clustered index. Set up a cache of externally stored
column prefixes if needed.
undo_node_t: Add the fields undo_row, undo_ext.
row_undo_search_clust_to_pcur(): Initialize undo_row and undo_ext.
row_undo_mod_upd_exist_sec(): Instead of fetching prefixes of
externally stored columns, use the undo_row and undo_ext that were
initialized in row_undo_search_clust_to_pcur().
upd_node_t: Remove the field n_ext. Add the fields upd_row and upd_ext.
row_upd_store_row(): Initialize the upd_row and upd_ext fields of upd_node_t.
row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(): Instead of
fetching prefixes of externally stored columns, use the upd_row
and upd_ext that were initialized in row_upd_store_row().
row_build(), row_upd_index_replace_new_col_vals_index_pos(), and
row_upd_index_replace_new_col_vals() are safe.
btr_cur_optimistic_update(), btr_cur_pessimistic_update(): Note that
the B-tree page of the clustered index record is latched in mtr.
trx_undo_prev_version_build(): Add const qualifiers to index_rec
and rec. Note that the page of index_rec is latched in index_mtr.
row_vers_impl_x_locked_off_kernel(), row_vers_old_has_index_entry():
Note that the stack of versions is locked by mtr and thus it is
safe to call row_build().
be protected from being deleted while any externally stored columns are
being fetched.
row_ext_create(),
row_upd_index_replace_new_col_vals(),
row_upd_index_replace_new_col_vals_index_pos(),
row_sel_sec_rec_is_for_blob(),
row_sel_sec_rec_is_for_clust_rec(): Note that the clustered
index record must be covered by a lock or a page latch.
row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(),
row_undo_mod_upd_exist_sec(): Note that these functions probably
do not obtain an appropriate lock on the clustered index record
before fetching any externally stored columns.
the buffer pool mutex. The instrumentation can be activated by
defining UNIV_DEBUG or UNIV_BUF_DEBUG at compilation time.
buf_pool_mutex_exit_forbidden: New variable. When this is nonzero,
an assertion will fail in buf_pool_mutex_exit().
buf_pool_mutex_exit_forbid(): Macro for declaring that the buffer pool
mutex must not be released. Calls may be nested.
buf_pool_mutex_exit_allow(): Macro for declaring that the buffer pool
mutex may be released. Calls may be nested.
buf_LRU_search_and_free_block(): Prohibit buf_pool_mutex_exit() in the
scope of the function.
buf_LRU_free_block(): Prohibit buf_pool_mutex_exit() in buf_buddy_alloc()
and buf_buddy_free().
buf_LRU_block_remove_hashed_page(): Prohibit buf_pool_mutex_exit()
in buf_buddy_free().
buf_pool->mutex: Rename to buf_pool_mutex, so that the wrappers will have
to be used when changes are merged from other source trees.
buf_pool->zip_mutex: Rename to buf_pool_zip_mutex.
buf_pool_mutex_own(), buf_pool_mutex_enter(), buf_pool_mutex_exit():
Wrappers for buf_pool_mutex.
buf_buddy_min_n_frames into two, also buf_buddy_max_n_frames.
Set the default values in such a way that a strict LRU policy will apply
for replacing compressed or uncompressed page frames in the buffer pool.
These parameters have not yet been exposed to the MySQL layer.
TRX_RSEG_N_SLOTS: Make the definition dependent of UNIV_PAGE_SIZE.
FSP_EXTENT_SIZE: Define as 1 megabyte, as assumed by the code elsewhere.
fseg_create_general(): Add a debug assertion against page overflow.
UNIV_PAGE_SIZE than the default 16384.
MEM_BLOCK_STANDARD_SIZE: Cap to MEM_MAX_ALLOC_IN_BUF when UNIV_PAGE_SIZE
is less than 16384.
ha_create_func(): Invoke mem_heap_create_in_btr_search() with
ut_min(4096, MEM_MAX_ALLOC_IN_BUF) instead of 4096. The memory
will be allocated from the buffer pool, and with UNIV_PAGE_SIZE
defined to 4096, there would not be any space for the mem_heap
data structure overhead.
Change the format of TRX_IDs in INFORMATION_SCHEMA tables from DEC to
HEX.
The current TRX_IDs are hard to remember and track down: 426355, 428466,
428566, etc.
In HEX:
* there are less "digits", the strings are shorter;
* since there are 16 instead of 10 "digits", the chance of having
repeating ones are smaller.
The above look like 68173, 689B2, 68A16 in HEX.
Discussed with: Ken
Approved by: Heikki (via IM)