summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* cherry-pick MDEV-1649010.4-nikita-mergeNikita Malyavin2019-09-118-71/+168
|
* bump the VERSIONDaniel Bartholomew2019-09-111-1/+1
|
* Moved the function trace_plan_prefix to the optimizer trace fileVarun Gupta2019-09-115-15/+39
| | | | Also added comments for trace_plan_prefix and the class Json_writer_temp_disable
* MDEV-20444: More information regarding access of a table to be printed ↵Varun Gupta2019-09-117-181/+1279
| | | | | | | | | inside the optimizer_trace Added: 1) estimated_join_cardinality 2) best_chosen_access_method for a table 3) best_join_order
* Merge mariadb-10.4.8 to 10.4Marko Mäkelä2019-09-1022-158/+318
|\
| * List of unstable tests for 10.4.8 release (updated)mariadb-10.4.8Elena Stepanova2019-09-081-178/+472
| |
| * Merge branch '10.3' into 10.4Sergei Golubchik2019-09-0616-139/+312
| |\
| | * Merge branch '10.2' into 10.3Sergei Golubchik2019-09-0616-139/+308
| | |\
| | | * use a shorter name for sources in debuginfo rpmsSergei Golubchik2019-09-061-1/+1
| | | | | | | | | | | | | | | | have the same path as in source rpms, don't build them differently
| | | * Part3: MDEV-18156 Assertion `0' failed or `btr_validate_index(index, 0, ↵Sergei Golubchik2019-09-065-112/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | | | false)' in row_upd_sec_index_entry or error code 126: Index is corrupted upon DELETE with PAD_CHAR_TO_FULL_LENGTH Don't break compatibility in GA releases. Warn the user, but don't refuse to create a table until 10.5
| | | * don't run RocksDB suites by defaultSergei Golubchik2019-09-064-4/+4
| | | |
| | | * MDEV-12121: Avoid unused variableMarko Mäkelä2019-09-061-5/+3
| | | | | | | | | | | | | | | | | | | | With cmake -DWITH_INNODB_AHI=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo the variable 'i' in fseg_free_extent() was declared but not used.
| | | * MDEV-20421: big_innodb_log reliably fails on buildbot WindowsVlad Lesin2019-09-063-15/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test fails because it reuses mysqltest perl code to copy directory tree, and this code contains Windows-specific piece which outputs some diagnostic information. The patch introduces new parameter for that Windows-specific perl code to have the ability to suppress diagnostic output on the corresponding mysqltest perl module initialization.
| | | * MDEV-20490: rocksdb.ttl_primary_read_filtering fails in BBSergei Petrunia2019-09-052-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make the test stable: after DROP TABLE, make sure the compaction is run and finishes. If we don't do this, the post-drop compaction may run during the next testcase. It will cause a record from the next testcase to be compacted away when the test logic doesn't expect it and the test will fail
| * | | various test failures post-mergeSergei Golubchik2019-09-065-17/+4
| | | |
* | | | MDEV-20320 Tablespace flags mismatch for full_crc32 formatThirunarayanan Balathandayuthapani2019-09-103-5/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Files for PAGE_COMPRESSED tables that were created with innodb_checksum_algorithm=full_crc32 store the value of innodb_compression_algorithm at the time of the file creation. The server-wide setting of innodb_compression_algorithm may be changed after file creation. We must ignore any mismatch when opening a data file, and for writes, we must use the choice of algorithm that is stored in the file. fil_space_t::is_flags_full_crc32_equal(): Ignore the innodb_compression_algorithm but do compare innodb_page_size. fil_space_t::is_flags_non_full_crc32_equal(): Ignore the innodb_compression_algorithm.
* | | | MDEV-12112/MDEV-12026: Enable the test for full_crc32Marko Mäkelä2019-09-104-16/+43
| | | | | | | | | | | | | | | | | | | | | | | | The test mariabackup.encrypted_page_corruption was hard-wired for innodb_checksum_algorithm=crc32. Enable a combination for full_crc32 for the sake of completeness.
* | | | List of unstable tests for 10.4.8 releaseElena Stepanova2019-09-081-178/+472
| | | |
* | | | MDEV-17171: RocksDB Tables do not have "Creation Date"Sergei Petrunia2019-09-075-26/+26
| | | | | | | | | | | | | | | | Update test results
* | | | MDEV-17171: RocksDB Tables do not have "Creation Date"bb-10.4-mdev17171Sergei Petrunia2019-09-0615-48/+252
|/ / / | | | | | | | | | | | | | | | Support Create_time and Update_time for MyRocks tables. - Create_time is stored in the MyRocks' internal data dictionary. - Update_time is in-memory only (like in InnoDB).
* | | Merge branch '10.3' into 10.4Sergei Golubchik2019-09-06750-9669/+8197
|\ \ \ | |/ /
| * | MDEV-20425: Enable a test for debug buildsMarko Mäkelä2019-09-052-1/+9
| | |
| * | Simplify trx_state_eq()Marko Mäkelä2019-09-051-6/+1
| | |
| * | MDEV-15326 after-merge fixesMarko Mäkelä2019-09-057-81/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | trx_t::is_recovered: Revert most of the changes that were made by the merge of MDEV-15326 from 10.2. The trx_sys.rw_trx_hash and the recovery of transactions at startup is quite different in 10.3. trx_free_at_shutdown(): Avoid excessive mutex protection. Reading fields that can only be modified by the current thread (owning the transaction) can be done outside mutex. trx_t::commit_state(): Restore a tighter assertion. trx_rollback_recovered(): Clarify why there is no potential race condition with other transactions. lock_trx_release_locks(): Merge with trx_t::release_locks(), and avoid holding lock_sys.mutex unnecessarily long. rw_trx_hash_t::find(): Remove redundant code, and avoid starving the committer by checking trx_t::state before trx_t::reference().
| * | Merge 10.2 into 10.3Marko Mäkelä2019-09-0433-374/+456
| |\ \ | | |/
| | * more tests for DEFAULT and DEFAULT(column) in INSERTSergei Golubchik2019-09-042-10/+23
| | | | | | | | | | | | | | | this is not ideal and needs to be fixed eventually, but it's consistent over all forms of INSERT.
| | * MDEV-20403 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed ↵Sergei Golubchik2019-09-047-40/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in row_upd_sec_index_entry or error code 126: Index is corrupted upon UPDATE with TIMESTAMP..ON UPDATE remove a special treatment of a bare DEFAULT keyword that made it behave inconsistently and differently from DEFAULT(column). Now all forms of the explicit assignment of a default column value behave identically, and all count as an explicitly assigned value (for the purpose of ON UPDATE NOW). followup for c7c481f4d91
| | * MDEV-20137 rpl.mdev_17588 fails in buildbot with "Table doesn't exist"Sachin2019-09-043-18/+20
| | | | | | | | | | | | Fix the test case.
| | * Fix of query cache bug in AriaMonty2019-09-042-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MDEV-5817 query cache bug (returning inconsistent/old result set) with aria table parallel inserts, row format = page The problem is that for transactional aria tables (row_type=PAGE and transactional=1), maria_lock_database() didn't flush the state or the query cache. Not flushing the state is correct for transactional tables as this is done by checkpoint, but not flushing the query cache was wrong and could cause concurrent SELECT queries to not be deleted from the cache. Fixed by introducing a flush of the query cache as part of commit, if the table has changed. t for transactional aria tables (row_type=PAGE and transactional=1), maria_lock_table() didn't flush their state or the query cache.
| | * MDEV-15326: Backport trx_t::is_referenced()Marko Mäkelä2019-09-048-56/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | Backport the applicable part of Sergey Vojtovich's commit 0ca2ea1a6550bb718efc878ed451be69e8244cd4 from MariaDB Server 10.3. trx reference counter was updated under mutex and read without any protection. This is both slow and unsafe. Use atomic operations for reference counter accesses.
| | * MDEV-15326: InnoDB: Failing assertion: !other_lockMarko Mäkelä2019-09-0411-354/+280
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MySQL 5.7.9 (and MariaDB 10.2.2) introduced a race condition between InnoDB transaction commit and the conversion of implicit locks into explicit ones. The assertion failure can be triggered with a test that runs 3 concurrent single-statement transactions in a loop on a simple table: CREATE TABLE t (a INT PRIMARY KEY) ENGINE=InnoDB; thread1: INSERT INTO t SET a=1; thread2: DELETE FROM t; thread3: SELECT * FROM t FOR UPDATE; -- or DELETE FROM t; The failure scenarios are like the following: (1) The INSERT statement is being committed, waiting for lock_sys->mutex. (2) At the time of the failure, both the DELETE and SELECT transactions are active but have not logged any changes yet. (3) The transaction where the !other_lock assertion fails started lock_rec_convert_impl_to_expl(). (4) After this point, the commit of the INSERT removed the transaction from trx_sys->rw_trx_set, in trx_erase_lists(). (5) The other transaction consulted trx_sys->rw_trx_set and determined that there is no implicit lock. Hence, it grabbed the lock. (6) The !other_lock assertion fails in lock_rec_add_to_queue() for the lock_rec_convert_impl_to_expl(), because the lock was 'stolen'. This assertion failure looks genuine, because the INSERT transaction is still active (trx->state=TRX_STATE_ACTIVE). The problematic step (4) was introduced in mysql/mysql-server@e27e0e0bb75b4d35e87059816f1cc370c09890ad which fixed something related to MVCC (covered by the test innodb.innodb-read-view). Basically, it reintroduced an error that had been mentioned in an earlier commit mysql/mysql-server@a17be6963fc0d9210fa0642d3985b7219cdaf0c5: "The active transaction was removed from trx_sys->rw_trx_set prematurely." Our fix goes along the following lines: (a) Implicit locks will released by assigning trx->state=TRX_STATE_COMMITTED_IN_MEMORY as the first step. This transition will no longer be protected by lock_sys_t::mutex, only by trx->mutex. This idea is by Sergey Vojtovich. (b) We detach the transaction from trx_sys before starting to release explicit locks. (c) All callers of trx_rw_is_active() and trx_rw_is_active_low() must recheck trx->state after acquiring trx->mutex. (d) Before releasing any explicit locks, we will ensure that any activity by other threads to convert implicit locks into explicit will have ceased, by checking !trx_is_referenced(trx). There was a glitch in this check when it was part of lock_trx_release_locks(); at the end we would release trx->mutex and acquire lock_sys->mutex and trx->mutex, and fail to recheck (trx_is_referenced() is protected by trx_t::mutex). (e) Explicit locks can be released in batches (LOCK_RELEASE_INTERVAL=1000) just like we did before. trx_t::state: Document that the transition to COMMITTED is only protected by trx_t::mutex, no longer by lock_sys_t::mutex. trx_rw_is_active_low(), trx_rw_is_active(): Document that the transaction state should be rechecked after acquiring trx_t::mutex. trx_t::commit_state(): New function to change a transaction to committed state, to release implicit locks. trx_t::release_locks(): New function to release the explicit locks after commit_state(). lock_trx_release_locks(): Move much of the logic to the caller (which must invoke trx_t::commit_state() and trx_t::release_locks() as needed), and assert that the transaction will have locks. trx_get_trx_by_xid(): Make the parameter a pointer to const. lock_rec_other_trx_holds_expl(): Recheck trx->state after acquiring trx->mutex, and avoid a redundant lookup of the transaction. lock_rec_queue_validate(): Recheck impl_trx->state while holding impl_trx->mutex. row_vers_impl_x_locked(), row_vers_impl_x_locked_low(): Document that the transaction state must be rechecked after trx_mutex_enter(). trx_free_prepared(): Adjust for the changes to lock_trx_release_locks().
| | * MDEV-15326 preparation: Remove trx_sys_t::n_prepared_trxMarko Mäkelä2019-09-045-59/+47
| | | | | | | | | | | | | | | This is a backport of 900b07908bf9dbd2c79c3a66fc471e6be4cf0d13 from MariaDB Server 10.3.
| | * MDEV-15326 preparation: Test slow shutdown after XA PREPAREMarko Mäkelä2019-09-042-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were missing a test that would exercise trx_free_prepared() with innodb_fast_shutdown=0. Add a test. Note: if shutdown hangs due to the XA PREPARE transactions, in MariaDB 10.2 the test would unfortunately pass, but take 2*60 seconds longer, because of two shutdown_server statements timing out after 60 seconds. Starting with MariaDB 10.3, the hung server would be killed with SIGABRT, and the test could fail thanks to a backtrace message.
| | * MVCC::view_close(): Correct commentsMarko Mäkelä2019-09-042-8/+7
| | |
| | * Disable galera.galera_var_node_address test case.Jan Lindström2019-09-041-1/+2
| | |
| | * C/CSergei Golubchik2019-09-031-0/+0
| | |
| | * MDEV-20403 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed ↵Sergei Golubchik2019-09-034-14/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in row_upd_sec_index_entry or error code 126: Index is corrupted upon UPDATE with TIMESTAMP..ON UPDATE Three issues here: * ON UPDATE DEFAULT NOW columns were updated after generated columns were computed - this broke indexed virtual columns * ON UPDATE DEFAULT NOW columns were updated after BEFORE triggers, so triggers didn't see the correct NEW value * in case of a multi-update generated columns were also updated after BEFORE triggers
| | * don't compare unassigned columnsSergei Golubchik2019-09-031-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | on UPDATE, compare_record() was comparing all columns that are marked for writing. But generated columns that are written to the table are always deterministic and cannot change unless normal non-generated columns were changed. So it's enough to compare only non-generated columns that were explicitly assigned values in the SET clause.
| | * cleanup: on update default nowSergei Golubchik2019-09-037-51/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | * remove one level of virtual functions * remove redundant checks * remove an if() as the value is always known at compilation time don't pretend that "DEFAULT expr" and "ON UPDATE DEFAULT NOW" are "basically the same thing"
| * | MDEV-20079 When setting back the system time while mysqld is running, NOW() ↵Sergei Golubchik2019-09-044-0/+35
| | | | | | | | | | | | | | | | | | | | | and UNIX_TIMESTAMP() results get stuck typo. system_time.start wasn't updated when system_time.sec and system_time.sec_part were.
| * | MDEV-16871 in_predicate_conversion_threshold cannot be set in my.cnfSergei Golubchik2019-09-0410-29/+35
| | |
| * | Merge 10.2 (up to commit ef00ac4c86daf3294c46a45358da636763fb0049) into 10.3Alexander Barkov2019-09-0444-23/+1825
| |\ \ | | |/
| | * Part2: MDEV-18156 Assertion `0' failed or `btr_validate_index(index, 0, ↵Alexander Barkov2019-09-0315-12/+585
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | false)' in row_upd_sec_index_entry or error code 126: Index is corrupted upon DELETE with PAD_CHAR_TO_FULL_LENGTH This patch allows the server to open old tables that have "bad" generated columns (i.e. indexed virtual generated columns, persistent generated columns) that depend on sql_mode, for general things like SELECT, INSERT, DROP, etc. Warning are issued in such cases. Only these commands are now disallowed and return an error: - CREATE TABLE introducing a "bad" generated column - ALTER TABLE introducing a "bad" generated column - CREATE INDEX introdicing a "bad" generated column (i.e. adding an index on a virtual generated column that depends on sql_mode). Note, these commands are allowed: - ALTER TABLE removing a "bad" generate column - ALTER TABLE removing an index from a "bad" virtual generated column - DROP INDEX removing an index from a "bad" virtual generated column but only if the table does not have any "bad" columns as a result.
| | * MDEV-18156 Assertion `0' failed or `btr_validate_index(index, 0, false)' in ↵Alexander Barkov2019-09-0330-22/+1238
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | row_upd_sec_index_entry or error code 126: Index is corrupted upon DELETE with PAD_CHAR_TO_FULL_LENGTH This change takes into account a column's GENERATED ALWAYS AS expression dependcy on sql_mode's PAD_CHAR_TO_FULL_LENGTH and NO_UNSIGNED_SUBTRACTION flags. Indexed virtual columns as well as persistent generated columns are now not allowed to have such dependencies to avoid inconsistent data or index files on sql_mode changes. So an error is now returned in cases like this: CREATE OR REPLACE TABLE t1 ( a CHAR(5), v VARCHAR(5) AS (a) PERSISTENT -- CHAR->VARCHAR or CHAR->TEXT = ERROR ); Functions RPAD() and RTRIM() can now remove dependency on PAD_CHAR_TO_FULL_LENGTH. So this can be used instead: CREATE OR REPLACE TABLE t1 ( a CHAR(5), v VARCHAR(5) AS (RTRIM(a)) PERSISTENT ); Note, unlike CHAR->VARCHAR and CHAR->TEXT this still works, not RPAD(a) is needed: CREATE OR REPLACE TABLE t1 ( a CHAR(5), v CHAR(5) AS (a) PERSISTENT -- CHAR->CHAR is OK ); More sql_mode flags may affect values of generated columns. They will be addressed separately. See comments in sql_mode.h for implementation details.
| | * Disabled test in 32bit that uses too much memory or cpuMonty2019-09-024-0/+6
| | |
| * | Merge branch '10.2' into 10.3Monty2019-09-03671-9109/+6035
| |\ \ | | |/
| | * Updated mtr files to support different compiled in optionsMonty2019-09-01659-8463/+6430
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while.
| | * Fixed some compiler warningsMonty2019-09-013-2/+3
| | |
| | * embedded client now writes errors to stderr during init_embedded_serverMonty2019-09-011-3/+14
| | | | | | | | | | | | | | | This was done to be able to get any information why the embedded server doesn't start.
| | * Remove test that where only applicable for MySQLMonty2019-09-018-3997/+0
| | | | | | | | | | | | These was part of an incomplete old merge from MySQL 5.6