- 12 Sep, 2019 1 commit
-
-
Vladislav Vaintroub authored
On Windows, during packaging step, if signing fails, retry signtool again without timestamp parameter. Fixes sporadic (rare) failures on buildbot
-
- 11 Sep, 2019 8 commits
-
-
Sergei Petrunia authored
It is not reproducible, but the issue seems to be the same as with MDEV-20490 and rocksdb.ttl_primary_read_filtering - a compaction caused by DROP TABLE gets behind and compacts away the expired rows for the next test. Fix this in the same way.
-
Sergei Petrunia authored
best_access_path() is called from two optimization phases: 1. Plan choice phase, in choose_plan(). Here, the join prefix being considered is in join->positions[] 2. Plan refinement stage, in fix_semijoin_strategies_for_picked_join_order Here, the join prefix is in join->best_positions[] It used to access join->positions[] from stage #2. This didnt cause any valgrind or asan failures (as join->positions[] has been written-to before) but the effect was similar to that of reading the random data: The join prefix we've picked (in join->best_positions) could have nothing in common with the join prefix that was last to be considered (in join->positions).
-
Daniel Bartholomew authored
-
Marko Mäkelä authored
In mysql-server/commit@f46329044f8618212923bdf52e15d5b464201edc the InnoDB function btr_cur_open_at_rnd_pos() was corrected so that it would return a status that indicates whether the cursor was successfully positioned. But this change was not correctly merged to MariaDB in 2e814d47. btr_cur_open_at_rnd_pos(): In the code path that was introduced in MDEV-8588, properly return failure status. No deterministic test case was found for this failure. It was caught after removing the function page_copy_rec_list_end_to_created_page() in a development branch. As a result, the fill factor of index trees would improve, and supposedly, so would the probability of btr_cur_open_at_rnd_pos() reaching the intentionally corrupted page in the test innodb.leaf_page_corrupted_during_recovery. The wrong return value would cause btr_estimate_number_of_different_key_vals() to wrongly invoke btr_rec_get_externally_stored_len() on a non-leaf page and trigger an assertion failure at the start of that function.
-
Thirunarayanan Balathandayuthapani authored
- During trx_undo_report_rename(), InnoDB can fail to write undo log for it if undo log doesn't fit in the undo page. In that case, InnoDB adds one more undo log page and retry to write the rename undo log. But the assert is wrong and it doesn't allow to fail even for one time.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Null merge the MDEV-14383 fix; it affects 5.5 only.
-
Alexander Barkov authored
-
- 10 Sep, 2019 1 commit
-
-
Nikita Malyavin authored
there was a SELECT/DELETE race
-
- 09 Sep, 2019 13 commits
-
-
Vladislav Vaintroub authored
-
Marko Mäkelä authored
The setting innodb_change_buffering_debug=2 was supposed to inject a crash during change buffer merge. There is no public test for that functionality, and even if there were, it would be better to use DEBUG_SYNC to halt the thread that does change buffer merge, force a redo log flush from another thread, and finally kill the server externally.
-
Vladislav Vaintroub authored
The most likely cause of the crash is that a timer fired, after it was closed. MSDN documents such a possibility, in the documentation for CloseThreadpoolTimer() function, and recommends disabling the timer before calling WaitForThreadpoolTimerCallbacks()/CloseThreadpoolTimer(). The fix follows this recommendation. Note, that 5.5-10.1 disabled the timer before close, but this code was lost in threadpool refactoring in 10.2
-
Vladislav Vaintroub authored
MYSQL_MAINTAINER_MODE is ERR
-
Vladislav Vaintroub authored
-
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
-
Vladislav Vaintroub authored
For Visual Studio generator, use a per-config .def/.lib files with symbols exported from mysqld.exe Functions exported from mysqld.exe may differ between debug/optimized compilation, e.g dbug functions are missing in release config.
-
Alexey Botchkov authored
InnoDB intentionally (it's a documented behavior) ignores changing of DATA DIRECTORY and INDEX DIRECTORY for partitions. Though we should issue warning when this happens.
-
Jan Lindström authored
After SST from master node (the one where event is ENABLED) - you will end up with the event enabled on two nodes, hence it's now being executed twice. It can be solved by comparing event's originator with server_id. if not equal, then change its status to 'SLAVESIDE_DISABLED' Changes to be committed: new file: mysql-test/suite/galera/r/galera_events2.result new file: mysql-test/suite/galera/t/galera_events2.test modified: sql/events.cc
-
Jan Lindström authored
-
Jan Lindström authored
Test changes only.
-
Jan Lindström authored
Enable after SST script changes.
-
Marko Mäkelä authored
Try to use more deterministic floating-point operations. Apparently, 2.2 > 2.2 wrongly holds on many platforms, but not ppc64le on the compiler used on Red Had Enterprise Linux 8. The reason could be an infinite binary presentation: 2.2 = 0b10.001100110011… With t1_f = 2.5 = 0b10.1, t1_f > 2.5 would no longer hold on AMD64. Let us replace the 2.2 with 2.5 and compare t1_f >= 2.5 in order to get more consistent results across all platforms.
-
- 08 Sep, 2019 1 commit
-
-
Elena Stepanova authored
-
- 07 Sep, 2019 1 commit
-
-
Alexander Barkov authored
-
- 06 Sep, 2019 5 commits
-
-
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
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.
-
- 05 Sep, 2019 1 commit
-
-
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
-
- 04 Sep, 2019 9 commits
-
-
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.
-
Sachin authored
Fix the test case.
-
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().
-
Marko Mäkelä authored
This is a backport of 900b0790 from MariaDB Server 10.3.
-
Marko Mäkelä authored
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.
-