- 13 Oct, 2008 1 commit
-
-
marko authored
-
- 11 Oct, 2008 2 commits
- 10 Oct, 2008 1 commit
-
-
marko authored
This should hopefully address Issue #85. ha_innobase::add_index(): Lock the data dictionary before invoking row_merge_rename_indexes() or row_merge_drop_indexes(), because neither function will commit the transaction. ha_innobase::final_drop_index(): Commit the transactions before unlocking the data dictionary. row_merge_drop_index(), row_merge_drop_indexes(), row_merge_rename_tables(), row_merge_rename_indexes(): Note and assert that the data dictionary must have been exclusively locked by the caller, because the transaction will not be committed. row_drop_database_for_mysql(): Commit the transaction immediately after dropping each table. When MySQL is holding open handles to some tables, it can otherwise occur than the data dictionary is unlocked while the transaction has not been committed. This bug was introduced in r2739, which changed the semantics of row_drop_table_for_mysql(). row_drop_database_for_mysql(): Postpone mem_free(table_name), so that an error printout will not dereference freed memory.
-
- 09 Oct, 2008 1 commit
-
-
marko authored
------------------------------------------------------------------------ r2742 | inaam | 2008-10-08 22:02:15 +0300 (Wed, 08 Oct 2008) | 11 lines branches/5.1: Fix Bug#39939 DROP TABLE/DISCARD TABLESPACE takes long time in buf_LRU_invalidate_tablespace() Improve implementation of buf_LRU_invalidate_tablespace by attempting hash index drop in batches instead of doing it one by one. Reviewed by: Heikki, Sunny, Marko Approved by: Heikki ------------------------------------------------------------------------ r2744 | marko | 2008-10-09 10:53:09 +0300 (Thu, 09 Oct 2008) | 5 lines branches/5.1: ha_innobase::delete_all_rows(): In response to a user asking <http://forums.innodb.com/read.php?4,215,215> why DELETE FROM t is not mapped to TRUNCATE TABLE t as it is in MyISAM, note in a comment that DELETE is transactional while TRUNCATE is not. ------------------------------------------------------------------------
-
- 08 Oct, 2008 3 commits
-
-
marko authored
@@GLOBAL.innodb_file_per_table can be 0 or 1, while SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_file_per_table' can be 'OFF' or 'ON'. For some reason, MySQL evaluates (0 = 'OFF') to 1 and (1 = 'ON') to 0. Thus, the test would fail if innodb_file_per_table is set.
-
marko authored
page_zip_validate_low(new_page_zip, new_page, TRUE) because it would cause bogus failures in btr_compress(), as noted in Issue #79.
-
marko authored
to the data dictionary records. This should fix Issue #83. row_drop_table_for_mysql_no_commit(): Rename back to row_drop_table_for_mysql(). Commit the transaction if the data dictionary was not locked when the function was called. Otherwise, neither commit the transaction nor unlock the data dictionary. row_merge_drop_table(): Let row_drop_table_for_mysql() take care of locking the data dictionary. dict_create_or_check_foreign_constraint_tables(), trx_rollback_active(), row_create_table_for_mysql(), row_create_index_for_mysql(), row_table_add_foreign_constraints(): Explicitly commit the transaction, because row_drop_table_for_mysql() would no longer commit it, given that the data dictionary will be locked during the calls. Approved by Sunny (over IM). rb://23
-
- 07 Oct, 2008 6 commits
-
-
marko authored
btr_lift_page_up(): Invoke page_zip_validate() on every page whose level is adjusted. btr_compress(): Invoke page_zip_validate() on merge_page at the end. page_zip_copy_recs(): Relax the page_zip_validate(...) to page_zip_validate_low(..., sloppy = TRUE) to avoid bogus assertion failures. page_copy_rec_list_end(), page_delete_rec_list_start(): Invoke page_zip_validate_low(sloppy = TRUE).
-
marko authored
Add patches to other mysql-test results that fail because of the added INFORMATION_SCHEMA tables: information_schema_db.result, mysqlshow.result.
-
vasil authored
Rename type_bit_innodb.diff to bug32625.diff since an equivalent patch has been submitted to MySQL as Bug#32625 Make test type_bit_innodb more robust.
-
marko authored
type_bit_innodb.diff: Ignore the reported duplicate value. The reported value depends on the internal workings of the merge sort in fast index creation. In the built-in InnoDB of MySQL 5.1, the records are copied to a new temporary table in the order they were selected from the original table. information_schema.diff: Account for the INFORMATION_SCHEMA tables that were added in the InnoDB plugin. innodb_file_per_table.diff: In the InnoDB plugin, innodb_file_per_table is a settable global variable.
-
marko authored
because innodb_lock_wait_timeout is a settable session variable as of r2716. mysql-test/patches/innodb_lock_wait_timeout.diff: New file.
-
calvin authored
Windows plugin. Instead, we will commit diff only.
-
- 06 Oct, 2008 5 commits
-
-
marko authored
page_zip_fail_func(): Display the timestamp. page_zip_validate_low(): Display information about ignored min_rec_flag differences.
-
marko authored
ignore intermittent differences in the "predefined minimum record" flag. page_zip_validate_low(): Renamed from page_zip_validate(), with an additional parameter: ibool sloppy. Ignore REC_INFO_MIN_REC_FLAG when sloppy == TRUE. page_zip_validate(): Wrapper for page_zip_validate_low(). Pass sloppy = recv_recovery_is_on(). recv_recover_page(): After applying the changes from the redo log to a compressed B-tree page, invoke page_zip_validate_low() in strict mode.
-
vasil authored
Add more ChangeLog entries from the merge of 2702:2722 from branches/5.1 (r2723).
-
vasil authored
Add entry for Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables in the ChangeLog
-
vasil authored
Add entry for Bug#39830 Table autoinc value not updated on first insert in the ChangeLog.
-
- 05 Oct, 2008 1 commit
-
-
sunny authored
is > 1. This is safer and easier to understand.
-
- 04 Oct, 2008 4 commits
-
-
sunny authored
so that it conforms to InnoDB's internal error/return code type.
-
sunny authored
non-determinism related to reading the table's autoinc value for the first time. This change has also reduced the sizeof dict_table_t by sizeof(ibool) bytes because we don't need the dict_table_t::autoinc_inited field anymore. This also fixes Bug#39830 Table autoinc value not updated on first insert. rb://16
-
sunny authored
the table's global autoinc counter value. This is part of simplifying the AUTOINC sub-system. We extract the type info from MySQL data structures at runtime. This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables
-
sunny authored
------------------------------------------------------------------------ r2702 | sunny | 2008-09-30 11:41:56 +0300 (Tue, 30 Sep 2008) | 13 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Since handler::get_auto_increment() doesn't allow us to return the cause of failure we have to inform MySQL using the sql_print_warning() function to return the cause for autoinc failure. Previously we simply printed the error code, this patch prints the text string representing the following two error codes: DB_LOCK_WAIT_TIMEOUT DB_DEADLOCK. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Approved by Marko. ------------------------------------------------------------------------ r2709 | vasil | 2008-10-01 10:13:13 +0300 (Wed, 01 Oct 2008) | 10 lines Changed paths: M /branches/5.1/include/lock0lock.h M /branches/5.1/lock/lock0lock.c A /branches/5.1/mysql-test/innodb_bug38231.result A /branches/5.1/mysql-test/innodb_bug38231.test M /branches/5.1/row/row0mysql.c branches/5.1: Fix Bug#38231 Innodb crash in lock_reset_all_on_table() on TRUNCATE + LOCK / UNLOCK In TRUNCATE TABLE and discard tablespace: do not remove table-level S and X locks and do not assert on such locks not being wait locks. Leave such locks alone. Approved by: Heikki (rb://14) ------------------------------------------------------------------------ r2710 | vasil | 2008-10-01 14:13:58 +0300 (Wed, 01 Oct 2008) | 6 lines Changed paths: M /branches/5.1/include/sync0sync.ic branches/5.1: Silence a compilation warning in UNIV_DEBUG. Approved by: Marko (via IM) ------------------------------------------------------------------------ r2719 | vasil | 2008-10-03 18:17:28 +0300 (Fri, 03 Oct 2008) | 49 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug39438-master.opt A /branches/5.1/mysql-test/innodb_bug39438.result A /branches/5.1/mysql-test/innodb_bug39438.test branches/5.1: Fix Bug#39438 Testcase for Bug#39436 crashes on 5.1 in fil_space_get_latch In ha_innobase::info() - do not try to get the free space for a tablespace which has been discarded with ALTER TABLE ... DISCARD TABLESPACE or if the .ibd file is missing for some other reason. ibd_file_missing and tablespace_discarded are manipulated only in row_discard_tablespace_for_mysql() and in row_import_tablespace_for_mysql() and the manipulation is protected/surrounded by row_mysql_lock_data_dictionary()/row_mysql_unlock_data_dictionary() thus we do the same in ha_innobase::info() when checking the values of those members to avoid race conditions. I have tested the code-path with UNIV_DEBUG and UNIV_SYNC_DEBUG. Looks like it is not possible to avoid mysqld printing warnings in the mysql-test case and thus this test innodb_bug39438 must be added to the list of exceptional test cases that are allowed to print warnings. For this, the following patch must be applied to the mysql source tree: --- cut --- === modified file 'mysql-test/lib/mtr_report.pl' --- mysql-test/lib/mtr_report.pl 2008-08-12 10:26:23 +0000 +++ mysql-test/lib/mtr_report.pl 2008-10-01 11:57:41 +0000 @@ -412,7 +412,10 @@ # When trying to set lower_case_table_names = 2 # on a case sensitive file system. Bug#37402. - /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ + /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ or + + # this test is expected to print warnings + ($testname eq 'main.innodb_bug39438') ) { next; # Skip these lines --- cut --- The mysql-test is currently somewhat disabled (see inside innodb_bug39438.test), after the above patch has been applied to the mysql source tree, the test can be enabled. rb://20 Reviewed by: Inaam, Calvin Approved by: Heikki ------------------------------------------------------------------------ r2720 | vasil | 2008-10-03 19:52:39 +0300 (Fri, 03 Oct 2008) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Print a warning if an attempt is made to get the free space for a table whose .ibd file is missing or the tablespace has been discarded. This is a followup to r2719. Suggested by: Inaam ------------------------------------------------------------------------ r2721 | sunny | 2008-10-04 02:08:23 +0300 (Sat, 04 Oct 2008) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: We need to send the messages to the client because handler::get_auto_increment() doesn't allow a way to return the specific error for why it failed. rb://18 ------------------------------------------------------------------------ r2722 | sunny | 2008-10-04 02:48:04 +0300 (Sat, 04 Oct 2008) | 18 lines Changed paths: M /branches/5.1/dict/dict0mem.c M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/dict0mem.h M /branches/5.1/include/row0mysql.h M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0mysql.c branches/5.1: This bug has always existed but was masked by other errors. The fix for bug# 38839 triggered this bug. When the offset and increment are > 1 we need to calculate the next value taking into consideration the two variables. Previously we simply assumed they were 1 particularly offset was never used. MySQL does its own calculation and that's probably why it seemed to work in the past. We would return what we thought was the correct next value and then MySQL would recalculate the actual value from that and return it to the caller (e.g., handler::write_row()). Several new tests have been added that try and catch some edge cases. The tests exposed a wrap around error in MySQL next value calculation which was filed as bug#39828. The tests will need to be updated once MySQL fix that bug. One good side effect of this fix is that dict_table_t size has been reduced by 8 bytes because we have moved the autoinc_increment field to the row_prebuilt_t structure. See review-board for a detailed discussion. rb://3 ------------------------------------------------------------------------
-
- 03 Oct, 2008 3 commits
-
-
vasil authored
ChangeLog: Use "Fix Bug#NNNNN bug summary text" for bugfixes, as for other entries in the file.
-
marko authored
more generic. The previous pattern could fail if other test cases were run before this one. Since r2716, the MySQL server is not restarted for this test.
-
marko authored
(Bug #36285, rb://9). innodb-index.test, innodb-index.result: Set innodb_lock_wait_timeout as a session variable instead of relying on the global value. innodb-index-master.opt: Remove. innodb-timeout.test: Test that setting the innodb_lock_wait_timeout works as advertised. thd_lock_wait_timeout(): New function, to retrieve the lock wait timeout for a given MySQL client connection (thd), or the global value (thd==NULL). srv_lock_wait_timeout, innobase_lock_wait_timeout: Remove. Replace MYSQL_SYSVAR_LONG(lock_wait_timeout) with MYSQL_THDVAR_ULONG(lock_wait_timeout).
-
- 01 Oct, 2008 3 commits
-
-
marko authored
should be space left in the modification log of the compressed page. Record deletion does not require any space in the modification log.
-
marko authored
dump the data structures. This was forgotten in r2698.
-
marko authored
------------------------------------------------------------------------ r2702 | sunny | 2008-09-30 11:41:56 +0300 (Tue, 30 Sep 2008) | 13 lines branches/5.1: Since handler::get_auto_increment() doesn't allow us to return the cause of failure we have to inform MySQL using the sql_print_warning() function to return the cause for autoinc failure. Previously we simply printed the error code, this patch prints the text string representing the following two error codes: DB_LOCK_WAIT_TIMEOUT DB_DEADLOCK. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Approved by Marko. ------------------------------------------------------------------------ rb://18
-
- 30 Sep, 2008 1 commit
-
-
vasil authored
Change the patch to fix the failing mysql-test index_merge_innodb. The previous variant is inappropriate because myisam results are different (2 instead of 4) and then the index_merge_myisam test fails.
-
- 29 Sep, 2008 3 commits
-
-
marko authored
-
marko authored
page_zip_hexdump_func(): New function, to dump a block of data. ut_print_buf() would dump everything on a single line, which is hard to read. page_zip_hexdump(): Wrapper macro for page_zip_hexdump_func(). page_zip_validate(): dump page_zip, page_zip->data, page, temp_page if !valid.
-
marko authored
in r2631. Include the node pointer field in the size calculation. rec_get_converted_size_comp_prefix(): New function, to compute the storage size of the prefix of an ordinary record in COMPACT format. rec_get_converted_size_comp(): Use rec_get_converted_size_comp_prefix().
-
- 26 Sep, 2008 4 commits
-
-
vasil authored
Add a patch to fix the failing mysql-test index_merge_innodb. The test started failing after an optimization, made in r2625, which results in a different number of rows being returned by EXPLAIN.
-
vasil authored
Fix typos in mysql-test/patches/README.
-
marko authored
ut_a() assertions into ut_ad() assertions.
-
calvin authored
The following files are from MySQL source tree without any changes. They will be changed for building Windows plugin. The original files will be used as the base for diff purpose. * CMakeLists.txt * sql/CMakeLists.txt * win/configure.js
-
- 25 Sep, 2008 2 commits