summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb
Commit message (Collapse)AuthorAgeFilesLines
* Merge bb-10.2-ext into 10.3Marko Mäkelä2017-09-075-56/+18
|\
| * Merge 10.2 into bb-10.2-extMarko Mäkelä2017-09-075-56/+18
| |\
| | * Merge 10.1 into 10.2Marko Mäkelä2017-09-063-55/+13
| | |\
| | | * Follow-up to MDEV-13227: Shorten the testMarko Mäkelä2017-09-062-52/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug only affects ROW_FORMAT=DYNAMIC tables. It is reproducible already with 2 records in the table. Keep testing with ROW_FORMAT=REDUNDANT just in case.
| | | * Follow-up to MDEV-13227: Do not run unnecessary test combinationsMarko Mäkelä2017-09-062-3/+1
| | | | | | | | | | | | | | | | | | | | The bug only affected innodb_page_size=64k. There is no point running the test with smaller page sizes.
| | * | Fix nondeterministic failure of innodb.table_flagsMarko Mäkelä2017-09-062-1/+5
| | | | | | | | | | | | | | | | | | | | The files ibtmp1 and ib_buffer_pool are sometimes created, sometimes not. Remove them if they exist.
* | | | Merge bb-10.2-ext into 10.3Marko Mäkelä2017-09-0135-0/+7158
|\ \ \ \ | |/ / /
| * | | Merge 10.2 into bb-10.2-extMarko Mäkelä2017-09-0135-0/+7161
| |\ \ \ | | |/ /
| | * | Merge 10.1 into 10.2Marko Mäkelä2017-08-3134-0/+7155
| | |\ \ | | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For running the Galera tests, the variable my_disable_leak_check was set to true in order to avoid assertions due to memory leaks at shutdown. Some adjustments due to MDEV-13625 (merge InnoDB tests from MySQL 5.6) were performed. The most notable behaviour changes from 10.0 and 10.1 are the following: * innodb.innodb-table-online: adjustments for the DROP COLUMN behaviour change (MDEV-11114, MDEV-13613) * innodb.innodb-index-online-fk: the removal of a (1,NULL) record from the result; originally removed in MySQL 5.7 in the Oracle Bug #16244691 fix https://github.com/mysql/mysql-server/commit/377774689bf6a16af74182753fe950d514c2c6dd * innodb.create-index-debug: disabled due to MDEV-13680 (the MySQL Bug #77497 fix was not merged from 5.6 to 5.7.10) * innodb.innodb-alter-autoinc: MariaDB 10.2 behaves like MySQL 5.6/5.7, while MariaDB 10.0 and 10.1 assign different values when auto_increment_increment or auto_increment_offset are used. Also MySQL 5.6/5.7 exhibit different behaviour between LGORITHM=INPLACE and ALGORITHM=COPY, so something needs to be tested and fixed in both MariaDB 10.0 and 10.2. * innodb.innodb-wl5980-alter: disabled because it would trigger an InnoDB assertion failure (MDEV-13668 may need additional effort in 10.2)
| | | * Merge branch '10.0' into 10.1Marko Mäkelä2017-08-3033-0/+7023
| | | |\
| | | | * Merge innodb.create-index test changes from MySQL 5.6 to MariaDBMarko Mäkelä2017-08-292-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Import the MySQL 5.6 addition from innodb.create-index to a new debug-only test, innodb.create-index-debug. The existing test innodb.create-index also runs on a debug server.
| | | | * Adjust the imported MySQL 5.6 tests for MariaDBMarko Mäkelä2017-08-2921-123/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FIXME: MDEV-13668 InnoDB unnecessarily rebuilds table FIXME: MDEV-13671 InnoDB should use case-insensitive column name comparisons like the rest of the server FIXME: MDEV-13640 / Properly fix MDEV-9469 'Incorrect key file' on ALTER TABLE FIXME: investigate result difference in innodb.innodb-alter-autoinc and ensure that MariaDB does the right thing with auto_increment_increment and auto_increment_offset, for both ALGORITHM=INPLACE and ALGORITHM=COPY (Oracle MySQL behaviour differs between those two).
| | | | * MDEV-13625 Merge InnoDB test cases from MySQL 5.6 (part 1)Marko Mäkelä2017-08-2927-0/+6904
| | | | | | | | | | | | | | | | | | | | | | | | | Import some ALTER TABLE test cases from MySQL 5.6 without modification. The adjustments will be in a separate commit.
| | * | | Merge 10.1 into 10.2Marko Mäkelä2017-08-291-0/+6
| | |\ \ \ | | | |/ /
| | | * | Merge 10.0 into 10.1Marko Mäkelä2017-08-282-1/+6
| | | |\ \ | | | | |/
| | | | * MDEV-13606 XA PREPARE transactions should survive innodb_force_recovery=1 or 2Marko Mäkelä2017-08-232-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When MySQL 5.0.3 introduced InnoDB support for two-phase commit, it also introduced the questionable logic to roll back XA PREPARE transactions on startup when innodb_force_recovery is 1 or 2. Remove this logic in order to avoid unwanted side effects when innodb_force_recovery is being set for other reasons. That is, XA PREPARE transactions will always remain in that state until InnoDB receives an explicit XA ROLLBACK or XA COMMIT request from the upper layer. At the time the logic was introduced in MySQL 5.0.3, there already was a startup parameter that is the preferred way of achieving the behaviour: --tc-heuristic-recover=ROLLBACK.
* | | | | MDEV-13603 Sporadic failure in innodb.dml_purgeMarko Mäkelä2017-08-282-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the test, SET GLOBAL innodb_purge_rseg_truncate_frequency = 1 in order to ensure that everything is purged in the slow shutdown. This could be viewed as a flaw of the slow shutdown.
* | | | | after merge: remove innodb_file_format from merged testsSergei Golubchik2017-08-268-21/+0
| | | | |
* | | | | Merge branch 'bb-10.2-ext' into 10.3Sergei Golubchik2017-08-2635-575/+4171
|\ \ \ \ \ | |/ / / /
| * | | | Merge branch '10.2' into bb-10.2-extSergei Golubchik2017-08-2535-575/+4171
| |\ \ \ \ | | |/ / /
| | * | | MDEV-13534 InnoDB STATS_PERSISTENT fails to ignore garbage delete-mark flag ↵Marko Mäkelä2017-08-242-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | on node pointer pages This bug was a regression caused by MDEV-12698. On non-leaf pages, the delete-mark flag in the node pointer records is basically garbage. (Delete-marking only makes sense at the leaf level anyway. The purpose of the delete-mark is to tell MVCC, locking and purge that a leaf-level record does not exist in the READ UNCOMMITTED view, but it used to exist.) Node pointer records and non-leaf pages are glue that attaches multiple leaf pages to an index. This glue is supposed to be transparent to the transactional layer. When a page is split, InnoDB creates a node pointer record out of the child page record that the cursor is positioned on. The node pointer record for the parent page will be a copy of the child page record, amended with the child page number. If the child page record happened to carry the delete-mark flag, then the node pointer record would also carry this flag (even though the flag makes no sense outside child pages). (On a related note, for the first node pointer record in the first node pointer page of each tree level, if the MIN_REC_FLAG is set, the rest of the record contents (except the child page number) is basically garbage. From this garbage you could deduce at which point the child was originally split.) page_scan_method_t: Replace with bool, as there are only 2 values. dict_stats_scan_page(): Replace the parameter scan_method with is_leaf. Ignore the bogus (garbage) delete-mark flag if !is_leaf.
| | * | | MDEV-13485 MTR tests fail massively with --innodb-sync-debugMarko Mäkelä2017-08-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The parameter --innodb-sync-debug, which is disabled by default, aims to find potential deadlocks in InnoDB. When the parameter is enabled, lots of tests failed. Most of these failures were due to bogus diagnostics. But, as part of this fix, we are also fixing a bug in error handling code and removing dead code, and fixing cases where an uninitialized mutex was being locked and unlocked. dict_create_foreign_constraints_low(): Remove an extraneous mutex_exit() call that could cause corruption in an error handling path. Also, do not unnecessarily acquire dict_foreign_err_mutex. Its only purpose is to control concurrent access to dict_foreign_err_file. row_ins_foreign_trx_print(): Replace a redundant condition with a debug assertion. srv_dict_tmpfile, srv_dict_tmpfile_mutex: Remove. The temporary file is never being written to or read from. log_free_check(): Allow SYNC_FTS_CACHE (fts_cache_t::lock) to be held. ha_innobase::inplace_alter_table(), row_merge_insert_index_tuples(): Assert that no unexpected latches are being held. sync_latch_meta_init(): Properly initialize dict_operation_lock_key at SYNC_DICT_OPERATION. dict_sys->mutex is SYNC_DICT, and the now-removed SRV_DICT_TMPFILE was wrongly registered at SYNC_DICT_OPERATION. buf_block_init(): Correctly register buf_block_t::debug_latch. It was previously misleadingly reported as LATCH_ID_DICT_FOREIGN_ERR. latch_level_t: Correct the relative latching order of SYNC_IBUF_PESS_INSERT_MUTEX,SYNC_INDEX_TREE and SYNC_FILE_FORMAT_TAG,SYNC_DICT_OPERATION to avoid bogus failures. row_drop_table_for_mysql(): Avoid accessing btr_defragment_mutex if the defragmentation thread has not been started. This is the case during fts_drop_orphaned_tables() in recv_recovery_rollback_active(). fil_space_destroy_crypt_data(): Avoid acquiring fil_crypt_threads_mutex when it is uninitialized. We may have created crypt_data before the mutex was created, and the mutex creation would be skipped if InnoDB startup failed or --innodb-read-only was specified.
| | * | | Merge branch '10.1' into 10.2Sergei Golubchik2017-08-1726-570/+3834
| | |\ \ \ | | | |/ /
| | | * | Merge branch '10.0' into 10.1Sergei Golubchik2017-08-081-2/+2
| | | |\ \ | | | | |/
| | | | * Update innodb test result post print_lock_error changeVicențiu Ciorbaru2017-08-012-2/+2
| | | | |
| | | | * MDEV-12915 ST_Centroid does not return the same result than MySQL.Alexey Botchkov2017-08-011-2/+2
| | | | | | | | | | | | | | | | | | | | Calculation of the polygon's centroid fixed.
| | | | * MDEV-12975 InnoDB redo log minimum size check uses detected file size ↵Marko Mäkelä2017-06-191-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of requested innodb_log_file_size log_calc_max_ages(): Use the requested size in the check, instead of the detected redo log size. The redo log will be resized at startup if it differs from what has been requested.
| | | * | MDEV-13443: Port innochecksum tests from 10.2 innodb_zip suite to 10.1Jan Lindström2017-08-0710-0/+1273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is basically port of WL6045:Improve Innochecksum with some code refactoring on innochecksum. Added page0size.h include from 10.2 to make 10.1 vrs 10.2 innochecksum as identical as possible. Added page 0 checksum checking and if that fails whole test fails.
| | | * | MDEV-13227: Assertion failure len < 16384 in file rem0rec.cc line 1285Jan Lindström2017-07-203-0/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Crashes with innodb_page_size=64K. Does not crash at <= 32K. Problem was that when blob record that was earlier < 16k is enlarged at update wo that length > 16K it should be stored externally. However, that was not enforced when page-size = 64K (note that 16K+1 < 64K/2 i.e. half of the btree leaf page). btr_cur_optimistic_update: limit max record size to 16K or in REDUNDANT row format to 16K-1.
| | | * | MDEV-11828: innodb_page_size=64k must reject ROW_FORMAT=REDUNDANT records ↵Jan Lindström2017-07-1212-159/+2041
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | longer than 16383 bytes In all InnoDB row formats, the pointers or lengths stored in the record header can be at most 14 bits, that is, count up to 16383. In ROW_FORMAT=REDUNDANT, this limits the maximum possible record length to 16383 bytes. In other ROW_FORMAT, it could merely limit the maximum length of variable-length fields. When MySQL 5.7 introduced innodb_page_size=32k and 64k, the maximum record length was limited to 16383 bytes (I hope 16383, not 16384, to be able to distinguish from a record whose length is 0 bytes). This change is present in MariaDB Server 10.2. btr_cur_optimistic_update(): Restrict maximum record size to 16K-1 for REDUNDANT and 64K page size. dict_index_too_big_for_tree(): The maximum allowed record size is half a B-tree page or 16K(-1 for REDUNDANT) for 64K page size. convert_error_code_to_mysql(): Fix error message to print correct limits. my_error_innodb(): Fix error message to print correct limits. page_zip_rec_needs_ext() : record size was already restricted to 16K. Restrict REDUNDANT to 16K-1. rem0rec.h: Introduce REDUNDANT_REC_MAX_DATA_SIZE (16K-1) and COMPRESSED_REC_MAX_DATA_SIZE (16K).
| | | * | MDEV-13105 InnoDB fails to load a table with PAGE_COMPRESSION_LEVEL after ↵Marko Mäkelä2017-07-053-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | upgrade from 10.1.20 When using innodb_page_size=16k, InnoDB tables that were created in MariaDB 10.1.0 to 10.1.20 with PAGE_COMPRESSED=1 and PAGE_COMPRESSION_LEVEL=2 or PAGE_COMPRESSION_LEVEL=3 would fail to load. fsp_flags_is_valid(): When using innodb_page_size=16k, use a more strict check for .ibd files, with the assumption that nobody would try to use different-page-size files.
| | * | | MDEV-13331 FK DELETE CASCADE does not honor innodb_lock_wait_timeoutMarko Mäkelä2017-08-152-2/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | row_ins_check_foreign_constraint(): On timeout, return DB_LOCK_WAIT_TIMEOUT instead of DB_LOCK_WAIT, so that the lock wait will be properly terminated. Also, replace some redundant assignments. It looks like this bug was introduced in MySQL 5.7.8 by: commit a97f6b91227c7e0fc3151cfe5421891e79c12d19 Author: Annamalai Gurusami <annamalai.gurusami@oracle.com> Date: Tue Jun 9 16:02:31 2015 +0530 Bug #20953265 INNODB: FAILING ASSERTION: RESULT != FTS_INVALID
| | * | | MDEV-13498 DELETE with CASCADE constraints takes long time / MDEV-13246Marko Mäkelä2017-08-152-0/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MDEV-13498 is a performance regression that was introduced in MariaDB 10.2.2 by commit fec844aca88e1c6b9c36bb0b811e92d9d023ffb9 which introduced some Galera-specific conditions that were being evaluated even if the write-set replication was not enabled. MDEV-13246 Stale rows despite ON DELETE CASCADE constraint is a correctness regression that was introduced by the same commit. Especially the subcondition !(parent && que_node_get_type(parent) == QUE_NODE_UPDATE) which is equivalent to !parent || que_node_get_type(parent) != QUE_NODE_UPDATE makes little sense. If parent==NULL, the evaluation would proceed to the std::find() expression, which would dereference parent. Because no SIGSEGV was observed related to this, we can conclude that parent!=NULL always holds. But then, the condition would be equivalent to que_node_get_type(parent) != QUE_NODE_UPDATE which would not make sense either, because the std::find() expression is actually assuming the opposite when casting parent to upd_node_t*. It looks like this condition never worked properly, or that it was never properly tested, or both. wsrep_must_process_fk(): Helper function to check if FOREIGN KEY constraints need to be processed. Only evaluate the costly std::find() expression when write-set replication is enabled. Also, rely on operator<<(std::ostream&, const id_name_t&) and operator<<(std::ostream&, const table_name_t&) for pretty-printing index and table names. row_upd_sec_index_entry(): Add !wsrep_thd_is_BF() to the condition. This is applying part of "Galera MW-369 FK fixes" https://github.com/codership/mysql-wsrep/commit/f37b79c6dab101310a45a9e8cb23c0f98716da52 that is described by the following part of the commit comment: additionally: skipping wsrep_row_upd_check_foreign_constraint if thd has BF, essentially is applier or replaying This FK check would be needed only for populating parent row FK keys in write set, so no use for appliers
| | * | | MDEV-13520 InnoDB attempts UPDATE with DB_TRX_ID=0 if innodb_force_recovery=3Marko Mäkelä2017-08-152-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | trx_set_rw_mode(): Check the flag high_level_read_only instead of testing srv_force_recovery (innodb_force_recovery) directly. There is no need to prevent the creation of read-write transactions if innodb_force_recovery=3 is used. Yes, in that mode any recovered incomplete transactions will not be rolled back, but these transactions will continue to hold locks on the records that they have modified. If the new read-write transactions hit conflicts with already existing (possibly recovered) transactions, the lock wait timeout mechanism will work just fine.
| | * | | MDEV-13472 rpl.rpl_semi_sync_wait_point crashes because of thd_destructor_proxySergei Golubchik2017-08-142-4/+23
| | | | | | | | | | | | | | | | | | | | | | | | | InnoDB: in slow shutodwn mode do not stop purge threads as long as some connection threads are running
| | * | | InnoDB: restore thd->proc_info in innobase_reset_background_thd()Sergei Golubchik2017-08-141-4/+4
| | | | |
| | * | | InnoDB: disallow fast_shutdown=0 when purge threads have exitedSergei Golubchik2017-08-142-0/+4
| | | | |
| | * | | InnoDB: test case to exploit a purge thread shutdown race conditionSergei Golubchik2017-08-142-0/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | execute queries after purge thread has exited, but the connection thread hasn't before c720e68f537 it used to crash
* | | | | Work around MDEV-13542 Crashing on a corrupted page is unhelpfulMarko Mäkelä2017-08-162-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With MDEV-12288 and MDEV-13536, the InnoDB purge threads will access pages more often, causing all sorts of debug assertion failures in the B-tree code. Work around this problem by amending the corruption tests with --innodb-purge-rseg-truncate-frequency=1 --skip-innodb-fast-shutdown so that everything will be purged before the server is restarted to deal with the corruption.
* | | | | MDEV-13536 DB_TRX_ID is not actually being reset when the history is removedMarko Mäkelä2017-08-168-378/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should have been part of MDEV-12288. trx_undo_t::del_marks: Remove. Purge needs to process all undo log records in order to reset the DB_TRX_ID. Before MDEV-12288, it sufficed to only delete the purgeable delete-marked records, and it ignore other undo log. trx_rseg_t::needs_purge: Renamed from trx_rseg_t::last_del_marks. Indicates whether a rollback segment needs to be processed by purge. TRX_UNDO_NEEDS_PURGE: Renamed from TRX_UNDO_DEL_MARKS. Indicates whether a rollback segment needs to be processed by purge. This will be 1 until trx_purge_free_segment() has been invoked. row_purge_record_func(): Set the is_insert flag for TRX_UNDO_INSERT_REC, so that the DB_ROLL_PTR will match in row_purge_reset_trx_id(). trx_purge_fetch_next_rec(): Add a comment about row_purge_record_func() going to set the is_insert flag. trx_purge_read_undo_rec(): Always attempt to read the undo log record. trx_purge_get_next_rec(): Do not skip any undo log records. Even when no clustered index record is going to be removed, we may want to reset some DB_TRX_ID,DB_ROLL_PTR. trx_undo_rec_get_cmpl_info(), trx_undo_rec_get_extern_storage(): Remove. trx_purge_add_undo_to_history(): Set the TRX_UNDO_NEEDS_PURGE flag so that the resetting will work on undo logs that were originally created before MDEV-12288 (MariaDB 10.3.1). trx_undo_roll_ptr_is_insert(), trx_purge_free_segment(): Cleanup (should be no functional change).
* | | | | Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3Alexander Barkov2017-08-153-0/+53
|\ \ \ \ \ | |/ / / /
| * | | | Merge remote-tracking branch 'origin/10.2' into bb-10.2-extAlexey Botchkov2017-08-113-0/+53
| |\ \ \ \ | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: sql/item_cmpfunc.cc storage/innobase/buf/buf0flu.cc storage/innobase/include/ut0stage.h storage/innobase/row/row0upd.cc
| | * | | MDEV-12868 MySQL bug #84038 also affects MariaDB 10.2Marko Mäkelä2017-08-093-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cherry-pick the commit from MySQL 5.7.19, and adapt the test case: commit 45c933ac19c73a3e9c756a87ee1ba18ba1ac564c Author: Aakanksha Verma <aakanksha.verma@oracle.com> Date: Tue Mar 21 10:31:43 2017 +0530 Bug #25189192 ERRORS WHEN RESTARTING MYSQL AFTER RENAME TABLE. PROBLEM While renaming table innodb doesn't update the InnoDB Dictionary table INNODB_SYS_DATAFILES incase there is change in database while doing rename table. Hence on a restart the server log shows error that it couldnt find table with old path before rename which has actually been renamed. So the errors would only vanish if we update the system tablespace FIX Update the innodb dictionary table with new path in the case there is not a change in the table but the database holding the table as well. Reviewed-by: Jimmy Yang<Jimmy.Yang@oracle.com> RB: 15751
* | | | | Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3Marko Mäkelä2017-08-097-104/+71
|\ \ \ \ \ | |/ / / /
| * | | | Merge 10.2 into bb-10.2-extMarko Mäkelä2017-08-087-104/+71
| |\ \ \ \ | | |/ / /
| | * | | Remove wait_innodb_all_purged.incMarko Mäkelä2017-08-087-104/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The file wait_innodb_all_purged.inc waited for InnoDB purge in a way that only worked in debug builds. The file wait_all_purged.inc provides a better mechanism.
* | | | | Introduce a new InnoDB redo log format for MariaDB 10.3.1Marko Mäkelä2017-07-072-11/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The redo log format will be changed by MDEV-12288, and it could be changed further during MariaDB 10.3 development. We will allow startup from a clean redo log from any earlier InnoDB version (up to MySQL 5.7 or MariaDB 10.3), but we will refuse to do crash recovery from older-format redo logs. recv_log_format_0_recover(): Remove a reference to MySQL documentation, which may be misleading when it comes to MariaDB. recv_log_recover_10_2(): Check if a MariaDB 10.2.2/MySQL 5.7.9 redo log is clean. recv_find_max_checkpoint(): Invoke recv_log_recover_10_2() if the redo log is in the MariaDB 10.2.2 or MySQL 5.7.9 format.
* | | | | Merge bb-10.2-ext into 10.3Marko Mäkelä2017-07-078-4/+36
|\ \ \ \ \ | |/ / / /
| * | | | Merge remote-tracking branch 'origin/10.2' into bb-10.2-extAlexander Barkov2017-07-078-4/+36
| |\ \ \ \ | | |/ / /
| | * | | Adjust a test for WindowsMarko Mäkelä2017-07-052-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows, when tmpdir is not writable, there are only messages like this: 2017-07-05 14:04:25 3860 [ERROR] InnoDB: Unable to create temporary file; errno: 0 On other platforms, there would be two messages for each failure: 2017-07-05 17:23:02 140436573771648 [ERROR] mysqld: Can't create/write to file '/dev/null/nonexistent/ibaajU4U' (Errcode: 20 "Not a directory") 2017-07-05 17:23:02 140436573771648 [ERROR] InnoDB: Unable to create temporary file; errno: 20