is one test that fails as of this commit. The updated test case should be
part of the snapshot from MySQL shortly.
Fix for bug# 27950 - Init AUTOINC from delete_row().
Fix for bug# 28781 - Use value specified by MySQL, in update_row().
Summary of structural changes:
==============================
InnoDB needs to hold a table level lock for AUTOINC allocations to overcome
the non-determinism inherent in MySQL SBR for INSERT ... SELECT. In this fix
for simple INSERT statements (including multi-value inserts), we try and avoid
acquiring the special AUTOINC table level lock unless another transaction has
already reserved the AUTOINC table level lock, in which case we fall back
to the old behavior of acquiring the AUTOINC table level lock.
The max AUTOINC value is now read directly using the low level interface
of InnoDB.
and adapt some things.
Note that ha_innodb.cc depends on mysql_tmpfile() being declared in
<mysql/plugin.h>. Until the function is declared there, you can
uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc.
Remove storage/innobase/*/Makefile.am. The whole compilation is driven by
storage/innobase/Makefile.am and storage/innobase/plug.in.
plug.in: Declare InnoDB as a dynamic plugin.
ha_innodb.h: Remove the declarations of many global variables. The variables
are no longer directly referenced outside of storage/innobase.
trx_t: Add the field trx->duplicates.
trx_create(): Initialize the fields trx->active_trans and trx->duplicates.
innobase_query_is_update(): Remove. Consult trx->duplicates instead.
and lexer files). From now on, the following Emacs cc-mode settings apply
when indenting C function bodies in InnoDB:
(setq c-basic-offset 8)
(setq c-label-minimum-indentation 0)
(add-to-list 'c-offsets-alist '(c . 0))
(add-to-list 'c-offsets-alist '(label . [0]))
The indentation rules for function declarations still have not been
formalized, and they must be formatted manually.
Try to limit all lines to at most 79 characters (assuming TAB stops every
8 characters) by splitting lines before opening parenthesis, or at
string constants.
Fix some grammar mistakes in diagnostic output:
match to, match with -> match
found from -> found in
trying rename -> trying to rename
Fix an error in page_check_dir(): it said "supremum not pointed to"
when the infimum was not pointed to.
Enclose commented-out code snippets in #if 0 ... #endif instead of /* ... */.
Add (void*) casts to some %p parameters in fprintf() calls. Try to
split lines before a binary operator, not after one. (These three fixes
were not made everywhere.)
weakens the locks for this session similarly like the option
innodb_locks_unsafe_for_binlog. This patch removes almost all
gap locking (used in next-key locking) and makes MySQL to release
the row locks on the rows which does not belong to result set.
Additionally, nonlocking selects on INSERT INTO SELECT,
UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a
nonlocking consistent read. If a binlog is used, then binlog
format should be set to row based binloging to make the execution
of the complex SQL statements.
Corrected some comments.
os_file_create_tmpfile(): Remove the implementation from InnoDB Hot Backup.
In InnoDB Hot Backup builds, do not define dict_casedn_str(),
which is invoked in fil_load_single_table_tablespace() on
Windows. This function depends on innobase_casedn_str() and
my_casedn_str().
Define btr_check_node_ptr() and data_error only #ifdef UNIV_DEBUG.
They are only being used in ut_ad() assertions.
Replace the occurrences of the type uint with ulint, because InnoDB
Hot Backup does not define any uint data type.
Disable lock_validate() in InnoDB Hot Backup builds.
Disable some unused static variables of srv0srv.c in InnoDB Hot Backup builds.
Disable some srv_table_...() functions in InnoDB Hot Backup builds.
Disable some unused static variables in srv0start.c in
InnoDB Hot Backup builds.
Disable io_handler_thread() in InnoDB Hot Backup builds.
Disable srv_calc_low32() and srv_calc_high32() in InnoDB Hot Backup builds
to avoid warnings about unused functions.
In fil_node_open_file(), avoid bogus assertions in InnoDB Hot Backup builds.
In fil_load_single_table_tablespace(), remove the call to dict_casedn_str(),
as it depends on MySQL code.
Copy the code of recv_reset_log_files_for_backup() from InnoDB Hot Backup.
Disable innobase_mysql_cmp(), cmp_whole_field(), cmp_data_data_slow(),
cmp_dtuple_rec_with_match() and cmp_rec_rec_with_match()
in InnoDB Hot Backup builds, as they depend on MySQL code.
Adapt dtype_set_mblen() and dtype_get_fixed_size() for InnoDB Hot Backup
builds, assuming that they will only be called on system tables, which
do not contain multi-byte characters.
Disable the static functions row_ins_set_exclusive_rec_lock() and
row_ins_dupl_error_with_rec() in InnoDB Hot Backup builds
to avoid warnings about unused functions.
In row_sel_field_store_in_mysql_format(), disable some UTF-8 related
assertions #ifndef UNIV_RELEASE_NOT_YET_STABLE.