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.)
ut_print_name(), ut_print_namel(): Add parameter table_id for distinguishing
names of tables from other identifiers (names of indexes, columns and
constraints).
innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset(): New functions.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low():
Add parameter "cs", so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert the identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace dict_accept()
in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_string() call.
Pass the statement to InnoDB in the connection character set
and let InnoDB convert the identifiers to UTF-8.
Remove unused dict_table_LRU_trim().
Remove unused 'trx' parameter from the functions dict_table_get_on_id_low,
dict_table_get and dict_table_get_and_increment_handle_count.
the implementation would be challenging with ROW_FORMAT=COMPACT.
Remove the table types DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and
all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and
cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0 and CLUSTER_NAME=NULL
when inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
duplicate http://bugs.mysql.com/bug.php?id=17134 : MySQL's partitioned
table code does not set prebuilt->sql_stat_start right if it does an
insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when
flag sql_stat_start is on. This will waste CPU time very slightly.
a duplicate record to a clustered index comprising
more than about 90 columns. (Bug #18384)
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at func_exit
if needed.
r340: Fix http://bugs.mysql.com/bug.php?id=18283 in ha_innodb.cc and
http://bugs.mysql.com/bug.php?id=18238 in InnoDB
r339: Remove disk space leak on update of BLOB columns (Bug #18252).
btr_cur_pessimistic_update(): Invoke rec_get_offsets() after
rec_set_field_extern_bits().
btr_store_big_rec_extern_fields(): Note that offsets will no longer be
valid after calling this function.
r338: Fix bug 18238 : check in pessimistic insert and update if the buffer
pool is exhausted by locks
which can contain the new flag DICT_TF_COMPACT. Change dict_mem_table_create
to take a flags argument. Add dict_table_is_comp(). Adapt all users.
Change some places to explicitly assume that system tables do not use the
compact page format.
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.
Do not pad VARBINARY or BINARY columns. (Bug #14189)
innodb.test, innodb.result: Add test cases for foreign key constraints
between VARBINARY and BINARY columns, and between VARCHAR BINARY and
CHAR BINARY columns.
innobase_init(): Assert that
DATA_MYSQL_BINARY_CHARSET_COLL == my_charset_bin.number.
dtype_get_pad_char(): Do not pad VARBINARY or BINARY columns.
row_ins_cascade_calc_update_vec(): Refuse ON UPDATE CASCADE
when trying to change the length of a VARBINARY column
that refers to or is referenced by a BINARY column. BINARY
columns are no longer padded on comparison, and thus they
cannot be padded on storage either.
In row_ins_set_detailed(), truncate the tmpfile by os_file_set_eof(), because
trx_set_detailed_error_from_file() does not call ftell() to determine
the actual length of the file. This bug resulted in trash being appended
to foreign key error messages.
Work around Bug #12071: Do not call os_file_create_tmpfile() at runtime.
Instead, create all tempfiles at startup and guard access to them with
mutexes.