- 17 Sep, 2007 1 commit
-
-
marko authored
the 65,535-byte VARCHAR length limit of MySQL.
-
- 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.
-
- 27 Aug, 2007 1 commit
-
-
inaam authored
only after the buffer_cache has warmed up. During the initial warmup phase these values are set to zero. We should recommend to move the block to the start of the LRU in this case. Also added some comments to buf0buf.c about the LRU logic. reviewed by: Sunny
-
- 23 Aug, 2007 2 commits