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).
buf_LRU_old_adjust_len(): Replace a constant ut_ad() with a preprocessor check.
buf_LRU_free_block(): Remove the check for the unlikely case
buf_pool->LRU_old == prev_b in order to simplify the function.
The check was implemented as part of r2306.
suggested by Heikki, because it breaks row_vers_impl_x_locked_off_kernel();
see Mantis issue #10.
However, now that Heikki's fix has been removed, the code may break elsewhere
when it tries to dereference half-freed or completely freed externally
stored columns.
lock_update_delete(): Add the debug assertion ut_ad(page == page_align(rec)).
lock_rec_insert_check_and_lock(): Determine next_rec_heap_no before
acquiring the kernel mutex. Require the table to be at least S-locked
in fast index creation.
lock_rec_get_first(): Use a simple for loop.
lock_rec_copy(): Use mem_heap_dup().
lock_rec_find_similar_on_page(): Add const qualifier to trx.
lock_move_rec_list_end(), lock_move_rec_list_start(): Simplify the
memcmp() assertion on ROW_FORMAT=REDUNDANT records.
innobase_check_index_keys(): Remove unused parameters. Use
sql_print_error() for error message output.
ha_innobase::add_index(): When row_merge_rename_tables() fails, do not
allow row_merge_drop_table() to alter the error code returned to MySQL.
the dynamic InnoDB plugin, ha_innodb.so. This libtool option cannot
be used on every target platform. For instance, the AMD64 (x86_64) ABI
mandates position-independent code (PIC) in dynamic shared objects.
Makefile.am: Use $(INNODB_CFLAGS) and $(INNODB_DYNAMIC_CFLAGS) in
target-specific CFLAGS and CXXFLAGS variable definitions.
plug.in: Instead of appending to the MySQL-wide CFLAGS, introduce
the variables INNODB_CFLAGS and INNODB_DYNAMIC_CFLAGS. Depending on
$target_cpu, append -prefer-non-pic to INNODB_DYNAMIC_CFLAGS.
position-independent code in the compilation of ha_innodb.so.
ha_innodb_la_CXXFLAGS, ha_innodb_la_CFLAGS: Add -prefer-non-pic.
This flag is interpreted by the ../../libtool script that acts
as a front-end to the compiler and linker.
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.
At present, the script only accepts one command line parameter.
Append newline to some die messages, so that the Perl interpreter
will not print the file name and line number of the failing statement.
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.
about undo_rec possibly being uninitialized. When trx_undo_get_undo_rec()
leaves undo_rec uninitialized, both functions will return DB_MISSING_HISTORY
without dereferencing undo_rec.
This closes Mantis issue #7.
in r2276. Now the following symbols will be exported when InnoDB is built
as a dynamic plugin:
* the virtual method pointer table of class ha_innodb
* the three variables that MySQL will reference when linking at runtime:
_mysql_plugin_declarations_
_mysql_plugin_interface_version_
_mysql_sizeof_struct_st_plugin_
Furthermore, the following symbols are weak globals, to allow us to access
the built-in InnoDB in the mysqld executable, in case it contains a statically
linked InnoDB:
builtin_innobase_plugin
innodb_hton_ptr
pars/pars0grm.h: Remove. The primary file is include/pars0grm.h.
pars/make_bison.sh: Add from trunk. Somehow, this file was not merged
at the same time with make_flex.sh. Add sed magic for replacing the
file name and for hiding yychars, yynerrs, yylval, and yyparse.
pars/pars0grm.c: Apply the changes made by make_bison.sh.
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.
btr_cur_pessimistic_update(): Note why the externally stored columns
of a record on a latched page cannot have been purged.
trx_undo_get_undo_rec(): Clarify that the stack of versions is locked
all the way down to the purge view.
trx_undo_prev_version_build(): Set *old_vers = NULL also when the record
could have been purged already. Add some clarifying comments.
Require PROCESS privileges instead of SUPER to view INFORMATION_SCHEMA tables.
Suggested by: Sergei Golubchik <serg@mysql.com> (in a private email,
pointed http://bugs.mysql.com/32710)
is not indexed.
btr_search_update_hash_ref(), btr_search_drop_page_hash_index(),
btr_search_build_page_hash_index(), btr_search_update_hash_on_delete(),
btr_search_update_hash_node_on_insert(), btr_search_update_hash_on_insert(),
btr_search_validate():
Assert that hashed blocks do not belong to the insert buffer tree.
btr_search_move_or_delete_hash_entries():
When invoked on the insert buffer tree, assert that neither block is hashed.
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