Remove the unused constant DICT_NOT_READY.
Make dict_index_t::type a bit-field, and move it next to other bit-fields.
Add a const qualifier to dict_index_t::name.
It was only set by ha_innobase::prepare_drop_index(), which can return
the appropriate MySQL error code (HA_ERR_DROP_INDEX_FK) directly.
ha_innobase::add_index(): Correct the function comment.
ha_innobase::prepare_drop_index(): Correct the function comment.
Return MySQL error codes directly.
ha_innobase::final_drop_index(): Correct the function comment.
row_merge_buf_add(): Add a prefetch instruction to row->fields.
Eliminate a variable from the copying loop, and move the termination
condition to the end of the loop.
row_merge_build_indexes(): Remove the second call to
trx_start_if_not_started().
trx_t: Change the type of error_info from void* to const dict_index_t*.
trx_get_error_info(): Add const qualifier to trx_t*. Make this an
inline function.
(merging branches/fast-index-creation):
row_truncate_table_for_mysql(), row_drop_table_for_mysql_no_commit():
Let ut_print_name() output to ef instead of stderr.
key name "PRIMARY". If the table has a generated clustered index,
also check for a UNIQUE INDEX containing no NULL columns.
innobase_create_index_def(): Add the parameter key_primary.
innobase_create_key_def(): Check if the first index is a UNIQUE index
consisting of NOT NULL columns.
Fixing this bug revealed another one: FOREIGN KEY constraints
will be lost when a PRIMARY KEY is created. This is the reason why
innodb.test will fail.
innobase_create_key_def(), row_table_got_default_clust_index(),
row_get_mysql_key_number_for_index(): Add a const qualifier.
dict_table_get_first_index(), dict_table_get_next_index(): Define
as a const-preserving macro. Preserve the old function for UNIV_DEBUG,
but add a const qualifier to the parameter and cast away the constness.
row_merge_create_temporary_table(): Add the parameter index_defs.
DB_PRIMARY_KEY_IS_NULL: New error code, mapped to ER_PRIMARY_CANT_HAVE_NULL.
row_merge_read_clustered_index(): Replace the parameter "table" with the
two parameters "old_table" and "new_table". Detect NULL values of columns
that are supposed to be NOT NULL.
row_merge_col_prtype(): New auxiliary function, used by
row_merge_create_temporary_table() to flag NOT NULL any columns
contained in an added PRIMARY KEY.
innobase_copy_index_field_def(): Remove parameter heap. The field->name
will not be deallocated before the copied index has been added to the
data dictionary cache.
innobase_copy_index_def(): Add const qualifier to dict_index_t*.
Add an assertion !dict_index_is_clust(index).
ha_innobase::add_index(): Add the missing user_thd parameter to the
convert_error_code_to_mysql() call that was forgotten from r1686.
merge_index_field_struct: Add const qualifier to field_name.
merge_index_def_struct: Add const qualifier to name.
row_merge_build_indexes(): Improve the function comment.
row_merge_drop_table(): Remove bogus assertion ut_a(table->to_be_dropped).
goto err_exit. The error handling should be rewritten. Many of the
error messages contain parameters, but this code is only returning
the error number to MySQL.
row_merge_buf_create_low(): Swap the parameters max_tuples and buf_size,
because the callers had them swapped. Add debug assertions about
these parameters.
row_merge_buf_empty(): Return the emptied buffer. In some cases, the
buffer may be relocated.
row_mysql_read_true_varchar(), row_mysql_read_blob_ref(),
row_mysql_store_col_in_innobase_format(),
row_sel_convert_mysql_key_to_innobase(): Add const qualifiers.
row_sel_convert_mysql_key_to_innobase(): Document that the first parameter
is in/out.
the data dictionary locked across the operations.
dict_table_decrement_handle_count(), row_prebuilt_free(): Add the flag
dict_locked, to prevent the acquisition of dict_sys->mutex.
innobase_rename_table(): Rename commit_flag to lock_and_commit,
and do not acquire dict_sys->mutex or flush the log unless the flag is set.
Remove bogus comment about utility threads, because the threads will
be waken up by the upper-level function ha_innobase::rename_table().
ha_innobase::add_index(): After creating a primary key, hold dict_sys->mutex
across all dictionary operations.
C++ requires explicit type casts when converting from void*, and *.ic files
are now inlined in ha_innodb.cc.
fil_space_get_by_id(), fil_space_get_by_name(): New inline functions, to
replace occurrences of the HASH_SEARCH() macro in fil0fil.c. This should
improve readability.
be set always.
trx_rollback_active(): Split from trx_rollback_or_clean_all_without_sess().
row_undo_dictionary(): Do not return a value. Assert that all operations
succeed.
row_merge_drop_index(): Remove bogus comment about void return value.
trx_dummy_sess: Move the declaration from trx0roll.h to trx0trx.h,
because the variable is defined in trx0trx.c.
Some things still fail in innodb-index.test, and there seems to be
a race condition (data dictionary lock wait) when running with --valgrind.
dfield_t: Add an "external storage" flag, dfield->ext.
dfield_is_null(), dfield_is_ext(), dfield_set_ext(), dfield_set_null():
New functions.
dfield_copy(), dfield_copy_data(): Add const qualifiers, fix in/out comments.
data_write_sql_null(): Use memset().
big_rec_field_t: Replace byte* data with const void* data.
ut_ulint_sort(): Remove.
upd_field_t: Remove extern_storage.
upd_node_t: Replace ext_vec, n_ext_vec with n_ext.
row_merge_copy_blobs(): New function.
row_ins_index_entry(): Add the parameter "ibool foreign" for suppressing
foreign key checks during fast index creation or when inserting into
secondary indexes.
btr_page_insert_fits(): Add const qualifiers.
btr_cur_add_ext(), upd_ext_vec_contains(): Remove.
dfield_print_also_hex(), dfield_print(): Replace if...else if with switch.
Observe dfield_is_ext().
to rec_t*. Remove the ut_ad(rec_offs_validate()), because this function
will be called from row0merge.c on a record that lacks the
REC_N_NEW_EXTRA_BYTES.