- 19 Sep, 2007 2 commits
- 17 Sep, 2007 2 commits
- 13 Sep, 2007 1 commit
-
-
marko authored
(smart ALTER TABLE) from ha_innodb.cc to a separate module, handler0alter.cc.
-
- 12 Sep, 2007 3 commits
- 11 Sep, 2007 4 commits
-
-
marko authored
existed before the fast-index-creation code was merged, in r1414. Do not call row_prebuilt_table_obsolete(innodb_table) until after the table has been renamed to a temporary name. Otherwise, the following could happen when creating a clustered index on table T: (a1) copy T to T#1 (a2) mark T obsolete (b1) add the name of T to the background drop list (a3) rename T to T#2 and T#1 to T (b2) drop the table on the background These steps are executed by two threads, a and b. If b1 is executed after a3, all is fine: the name T#2 will be added to the background drop list. If b1 is executed before a3, the name T will be added, and T#2 will survive.
-
marko authored
row_add_table_to_background_drop_list(): Replace the dict_table_t* parameter with const char* (the table name). row_check_table_for_mysql(): Replace prebuilt->table with table.
-
inaam authored
These should have gone to branches/fts. Spotted by: Marko and Ken
-
inaam authored
These should have gone in branches/fts Spotted by: Marko and Ken
-
- 10 Sep, 2007 2 commits
- 07 Sep, 2007 2 commits
-
-
marko authored
Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW(). The memory area need not be initialized. This mistake was made in r1815.
-
marko authored
fast index creation. innobase_convert_tablename(): New function, to remove the filename encoding of a database and table name. ha_innobase::add_index(): Invoke innobase_convert_tablename() before calling my_error(). innodb-index.result: Update the error messages.
-
- 06 Sep, 2007 5 commits
-
-
marko authored
the dictionary operations. TODO: ha_innobase::final_drop_index() should do the same, and set trx->dict_operation as well.
-
marko authored
-
marko authored
accidentally added in r1815.
-
marko authored
UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory area is defined. UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable. UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE() in many places. mem_init_buf(): Declare the memory undefined. mem_erase_buf(): Declare the memory freed.
-
marko authored
-
- 05 Sep, 2007 3 commits
-
-
marko authored
temporary table cannot be created or renamed. innodb-index.test,result: Add test cases where a temporary table already exists.
-
marko authored
trx_t: Remove dict_undo_list and dict_redo_list. innobase_create_temporary_tablename(): Replace TEMP_TABLE_PREFIX with a table name suffix "#1" or "#2". In this way, the user can restore precious data, should anything go wrong. It is possible to reach an inconsistent state, because the creation, deletion and renaming of single-table tablespaces are not transactional. ut_print_namel(), fil_make_ibd_name(), innobase_rename_table(): Remove the special treatment of TEMP_TABLE_PREFIX. Introduce TEMP_INDEX_PREFIX == 0xff for temporary indexes. This byte cannot occur in index names since MySQL 4.1. However, it might have been possible to use this byte in MySQL 4.0. recv_recovery_from_checkpoint_finish(): Call the new function row_merge_drop_temp_indexes(), to drop all indexes whose name starts with the byte 0xff. row_merge_rename_indexes(): Renamed from row_merge_rename_index(). Remove the parameter "index". row_drop_table_for_mysql(): Unconditionally call trx_commit_for_mysql(). row_drop_table_for_mysql_no_commit(): Correct the function commit, based on the corrected comment of row_drop_table_for_mysql(). Rely on table->to_be_dropped instead of TEMP_TABLE_PREFIX. ha_innobase::add_index(): Simplify the control flow.
-
marko authored
in a dictionary operation, display also the name of the index.
-
- 04 Sep, 2007 2 commits
-
-
vasil authored
is inline and accesses lock_t members. As advised by Marko rename lock_get_type() to lock_get_type_low() and create a public non-inline function lock_get_type() which calls lock_get_type_low(). Approved by: Marko
-
vasil authored
defined, fall back to using malloc/free. Approved by: Marko
-
- 03 Sep, 2007 5 commits
-
-
vasil authored
INFORMATION_SCHEMA implementation: lock_get_trx_id() lock_get_mode_str() lock_get_type_str() lock_get_table_id() lock_get_table_name() lock_rec_get_index_name() lock_rec_get_space_id() lock_rec_get_page_no() Approved by: Marko
-
marko authored
row_drop_table_for_mysql() call with a call to row_drop_table_for_mysql_no_commit(). The last parameter of the function is ibool drop_db, not ibool do_commit. Also, since r1790 of trunk it is not necessary to copy table->name.
-
vasil authored
Move lock_rec_find_set_bit() from lock0priv.h to lock0lock.h. This function is needed in the INFORMATION_SCHEMA implementation which currently resides in trx/ Approved by: Marko
-
marko authored
-
marko authored
#ifdef ROW_MERGE_IS_INDEX_USABLE, to avoid growing the memory footprint until MySQL implements and calls the virtual method handler::is_index_available() or something equivalent.
-
- 31 Aug, 2007 1 commit
-
-
marko authored
in fast index creation. The prefix was previously TEMP_TABLE_PREFIX == '/', which may occur in index names. ut_print_namel(): Do not assume that all '/' are separators between database and table names.
-
- 30 Aug, 2007 2 commits
- 29 Aug, 2007 6 commits
-
-
marko authored
of the InnoDB SQL parser. pars_is_string_type(): New function. Returns TRUE iff mtype equals DATA_VARCHAR, DATA_CHAR, DATA_FIXBINARY, or DATA_BINARY. pars_resolve_func_data_type(): Replace checks for DATA_VARCHAR with pars_is_string_type(). For example, the NAME column of SYS_INDEXES, SYS_TABLES, and SYS_COLUMNS is of DATA_BINARY type, although it contains a UTF-8 character string. This affects the functions TO_NUMBER, BINARY_TO_NUMBER, LENGTH, INSTR, and SUBSTR.
-
marko authored
Replace if-else with switch-case.
-
marko authored
in a comment about latching the data dictionary. The data dictionary may be latched elsewhere too.
-
marko authored
created in fast index creation. dict_load_indexes(): Always complain if the first index is not clustered. lock_table_enqueue_waiting(): Always complain about lock waits in a dictionary operation. row_merge_rename_tables(): Add an assertion that dict_sys->mutex is being held. row_undo_mod_del_unmark_sec_and_undo_update(): Make the test about temporary indexes more readable. row_create_table_for_mysql(): Do not retry creating a temporary table in fast index creation. Orphaned temporary tables will have to be dropped in crash recovery.
-
marko authored
row_upd_index_is_referenced(), row_upd_check_references_constraints(), row_purge_parse_undo_rec(): Remove duplicated code that calls row_mysql_unfreeze_data_dictionary(). row_undo_ins_remove_clust_rec(): Assert that the data dictionary is X-latched. Do not attempt to re-latch the data dictionary, because doing so introduces race conditions. This re-latching was probably made unnecessary already in r1676, which keeps the data dictionary X-latched in ha_innobase::add_index() for the complete duration of the data dictionary operations. row_undo_ins_parse_undo_rec(): Do not attempt to acquire the data dictionary latch. The data dictionary should be already X-latched when a transaction that modifies system tables is rolled back. This also holds in the rollback during crash recovery: trx_rollback_active() will X-latch the data dictionary when needed.
-
marko authored
been removed in r1752.
-