- 12 Sep, 2019 1 commit
-
-
Sachin authored
Rerecord sysvars_server_notembedded
-
- 11 Sep, 2019 3 commits
-
-
Alexander Barkov authored
Revert "Part3: MDEV-18156 Assertion `0' failed or `btr_validate_index(index, 0, false)' in row_upd_sec_index_entry or error code 126: Index is corrupted upon DELETE with PAD_CHAR_TO_FULL_LENGTH" This reverts commit 5a9e2b77 in 10.5, so it produces an error on "bad" generated columns. Note, 10.2, 10.3, 10.4 produce only warnings, for backward compatibility.
-
Sachin authored
Cherry-pick the commits the mysql and some changes. WL#4618 RBR: extended table metadata in the binary log This patch extends Table Map Event. It appends some new fields for more metadata. The new metadata includes: - Signedness of Numberic Columns - Character Set of Character Columns and Binary Columns - Column Name - String Value of SET Columns - String Value of ENUM Columns - Primary Key - Character Set of SET Columns and ENUM Columns - Geometry Type Some of them are optional, the patch introduces a GLOBAL system variable to control it. It is binlog_row_metadata. - Scope: GLOBAL - Dynamic: Yes - Type: ENUM - Values: {NO_LOG, MINIMAL, FULL} - Default: NO_LOG Only Signedness, character set and geometry type are logged if it is MINIMAL. Otherwise all of them are logged. Also add a binlog_type_info() to field, So that we can have extract relevant binlog info from field.
-
Alexander Barkov authored
-
- 10 Sep, 2019 5 commits
-
-
Varun Gupta authored
Also added comments for trace_plan_prefix and the class Json_writer_temp_disable
-
Varun Gupta authored
Added: 1) estimated_join_cardinality 2) best_chosen_access_method for a table 3) best_join_order
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
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.
-
Marko Mäkelä authored
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.
-
- 09 Sep, 2019 1 commit
-
-
Vladislav Vaintroub authored
Remove debug output, remove overriding of the Windows C runtime flags(linker warning) do not add code that depends on restsdk if library is not going to be linked. freaking Connect
-
- 08 Sep, 2019 3 commits
-
-
Elena Stepanova authored
-
Elena Stepanova authored
-
Vladislav Vaintroub authored
MYSQL_PLUGIN_IMPORT did not work correctly for the Rocksdb helper library rocksdb_aux_lib, because that library was not compiled with -DMYSQL_DYNAMIC_PLUGIN. Fix dbug such that it does not depend on exported data, only on functions (which do not need MYSQL_PLUGIN_IMPORT decoration) Use a "getter" function _db_my_assert() instead of DLL-exported variable.
-
- 07 Sep, 2019 1 commit
-
-
Sergei Petrunia authored
Update test results
-
- 06 Sep, 2019 13 commits
-
-
Sergei Petrunia authored
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).
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
have the same path as in source rpms, don't build them differently
-
Sergei Golubchik authored
Part3: MDEV-18156 Assertion `0' failed or `btr_validate_index(index, 0, 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
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Sergei Golubchik authored
-
Marko Mäkelä authored
With cmake -DWITH_INNODB_AHI=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo the variable 'i' in fseg_free_extent() was declared but not used.
-
Vlad Lesin authored
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.
-
Alexander Barkov authored
-
- 05 Sep, 2019 4 commits
-
-
Sergei Petrunia authored
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
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
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().
-
- 04 Sep, 2019 9 commits
-
-
Marko Mäkelä authored
-
Sergei Golubchik authored
this is not ideal and needs to be fixed eventually, but it's consistent over all forms of INSERT.
-
Sergei Golubchik authored
MDEV-20403 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed 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 c7c481f4
-
Sachin authored
Fix the test case.
-
Sergei Golubchik authored
MDEV-20079 When setting back the system time while mysqld is running, NOW() and UNIX_TIMESTAMP() results get stuck typo. system_time.start wasn't updated when system_time.sec and system_time.sec_part were.
-
Sergei Golubchik authored
-
Monty authored
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.
-
Marko Mäkelä authored
Backport the applicable part of Sergey Vojtovich's commit 0ca2ea1a 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.
-
Marko Mäkelä authored
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().
-