summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Remove restarts from encrypt_and_grep testst-10.2-mergeMarko Mäkelä2021-11-092-10/+12
|
* Merge mariadb-10.2.41 into 10.2Marko Mäkelä2021-11-0923-277/+477
|\
| * MDEV-26833 Missed statement rollback in case transaction drops or create ↵mariadb-10.2.41Andrei Elkin2021-11-059-51/+1211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | temporary table When transaction creates or drops temporary tables and afterward its statement faces an error even the transactional table statement's cached ROW format events get involved into binlog and are visible after the transaction's commit. Fixed with proper analysis of whether the errored-out statement needs to be rolled back in binlog. For instance a fact of already cached CREATE or DROP for temporary tables by previous statements alone does not cause to retain the being errored-out statement events in the cache. Conversely, if the statement creates or drops a temporary table itself it can't be rolled back - this rule remains.
| * MDEV-23328 Server hang due to Galera lock conflict resolutionJan Lindström2021-11-023-8/+10
| | | | | | | | | | Use better error message when KILL fails even in case TOI fails.
| * MDEV-23328 Server hang due to Galera lock conflict resolutionJan Lindström2021-11-013-9/+15
| | | | | | | | | | * Fix error handling NULL-pointer reference * Add mtr-suppression on galera_ssl_upgrade
| * MDEV-23328 Server hang due to Galera lock conflict resolutionsjaakola2021-10-2915-203/+417
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mutex order violation when wsrep bf thread kills a conflicting trx, the stack is wsrep_thd_LOCK() wsrep_kill_victim() lock_rec_other_has_conflicting() lock_clust_rec_read_check_and_lock() row_search_mvcc() ha_innobase::index_read() ha_innobase::rnd_pos() handler::ha_rnd_pos() handler::rnd_pos_by_record() handler::ha_rnd_pos_by_record() Rows_log_event::find_row() Update_rows_log_event::do_exec_row() Rows_log_event::do_apply_event() Log_event::apply_event() wsrep_apply_events() and mutexes are taken in the order lock_sys->mutex -> victim_trx->mutex -> victim_thread->LOCK_thd_data When a normal KILL statement is executed, the stack is innobase_kill_query() kill_handlerton() plugin_foreach_with_mask() ha_kill_query() THD::awake() kill_one_thread() and mutexes are victim_thread->LOCK_thd_data -> lock_sys->mutex -> victim_trx->mutex This patch is the plan D variant for fixing potetial mutex locking order exercised by BF aborting and KILL command execution. In this approach, KILL command is replicated as TOI operation. This guarantees total isolation for the KILL command execution in the first node: there is no concurrent replication applying and no concurrent DDL executing. Therefore there is no risk of BF aborting to happen in parallel with KILL command execution either. Potential mutex deadlocks between the different mutex access paths with KILL command execution and BF aborting cannot therefore happen. TOI replication is used, in this approach, purely as means to provide isolated KILL command execution in the first node. KILL command should not (and must not) be applied in secondary nodes. In this patch, we make this sure by skipping KILL execution in secondary nodes, in applying phase, where we bail out if applier thread is trying to execute KILL command. This is effective, but skipping the applying of KILL command could happen much earlier as well. This also fixed unprotected calls to wsrep_thd_abort that will use wsrep_abort_transaction. This is fixed by holding THD::LOCK_thd_data while we abort transaction. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
| * MDEV-25114: Crash: WSREP: invalid state ROLLED_BACK (FATAL)Jan Lindström2021-10-292-112/+74
| | | | | | | | | | | | Revert "MDEV-23328 Server hang due to Galera lock conflict resolution" This reverts commit 29bbcac0ee841faaa68eeb09c86ff825eabbe6b6.
| * fix depricated pthread_yield() for tokudbOleksandr Byelkin2021-10-281-1/+3
| |
| * Merge remote-tracking branch 'connect/10.2' into 10.2Oleksandr Byelkin2021-10-285-16/+30
| |\
| | * Fix MDEV-24493Olivier Bertrand2021-10-152-6/+5
| | |
| | * Fix bson crash and mongo testOlivier Bertrand2021-07-312-2/+13
| | |
| | * Fix slow processing of pretty json files by BSON tablesOlivier Bertrand2021-07-302-8/+12
| | |
* | | MDEV-26561 mariabackup release locksDaniel Black2021-11-091-0/+7
| | | | | | | | | | | | | | | | | | | | | The previous threads locked need to be released too. This occurs if the initialization of any of the non-first mutex/conditition variables errors occurs.
* | | MDEV-26561 Fix a bug due to unreleased lockryancaicse2021-11-091-0/+1
| | | | | | | | | | | | Fix a bug of unreleased lock ctrl_mutex in the method create_worker_threads
* | | bump the VERSIONbb-10.2-bumpversionDaniel Bartholomew2021-11-081-1/+1
| | |
* | | MDEV-22522 RPM packages have meaningless summary/descriptionAlexey Bychko2021-11-081-6/+67
| | | | | | | | | | | | added summary/description per package.
* | | MDEV-25610 Assertion `escape != -1' failed in Item_func_like::val_intbb-10.2-bar-MDEV-25610Alexander Barkov2021-11-086-2/+1123
| | |
* | | appveyor - do not use buggy cygwin bison.Vladislav Vaintroub2021-11-041-1/+7
| | |
* | | Revert "MDEV-19129: Xcode compatibility update: deprecated vfork -> fork"Sergei Krivonos2021-11-031-1/+1
| | | | | | | | | | | | This reverts commit 5d6f3cebca77ee650e6cde3bd738d1fac0a8110c.
* | | MDEV-22284 Aria table key read crash because wrong index usedbb-10.2-midenok2Aleksey Midenkov2021-11-023-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When restoring lastinx last_key.keyinfo must be updated as well. The good example is in _ma_check_index(). The point of failure is extra(HA_EXTRA_NO_KEYREAD) in ha_maria::get_auto_increment(): 1. extra(HA_EXTRA_KEYREAD) saves lastinx; 2. maria_rkey() changes index, so the lastinx and last_key.keyinfo; 3. extra(HA_EXTRA_NO_KEYREAD) restores lastinx but not last_key.keyinfo. So we have discrepancy between lastinx and last_key.keyinfo after 3.
* | | MDEV-24335 Unexpected question mark in the end of a TINYTEXT columnAlexander Barkov2021-11-023-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | my_copy_fix_mb() passed MIN(src_length,dst_length) to my_append_fix_badly_formed_tail(). It could break a multi-byte character in the middle, which put the question mark to the destination. Fixing the code to pass the true src_length to my_append_fix_badly_formed_tail().
* | | MDEV-26949 --debug-gdb installs redundant signal handlersMarko Mäkelä2021-11-012-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a server startup option --gdb a.k.a. --debug-gdb that requests signals to be set for more convenient debugging. Most notably, SIGINT (ctrl-c) will not be ignored, and you will be able to interrupt the execution of the server while GDB is attached to it. When we are debugging, the signal handlers that would normally display a terse stack trace are useless. When we are debugging with rr, the signal handlers may interfere with a SIGKILL that could be sent to the process by the environment, and ruin the rr replay trace, due to a Linux kernel bug https://lkml.org/lkml/2021/10/31/311 To be able to diagnose bugs in kill+restart tests, we may really need both a trace before the SIGKILL and a trace of the failure after a subsequent server startup. So, we had better avoid hitting the problem by simply not installing those signal handlers.
* | | MDEV-19129: Xcode compatibility update: #include <editline/readline.h> pathSergei Krivonos2021-10-311-1/+5
| | |
* | | MDEV-19129: Xcode compatibility update: deprecated vfork -> forkSergei Krivonos2021-10-311-1/+1
| | |
* | | MDEV-24901 SIGSEGV in fts_get_table_name, SIGSEGV in ib_vector_size, SIGSEGV ↵bb-10.2-bar-MDEV-24901Alexander Barkov2021-10-295-4/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in row_merge_fts_doc_tokenize, stack smashing strmake() puts one extra 0x00 byte at the end of the string. The code in my_strnxfrm_tis620[_nopad] did not take this into account, so in the reported scenario the 0x00 byte was put outside of a stack variable, which made ASAN crash. This problem is already fixed in in MySQL: commit 19bd66fe43c41f0bde5f36bc6b455a46693069fb Author: bin.x.su@oracle.com <> Date: Fri Apr 4 11:35:27 2014 +0800 But the fix does not seem to be correct, as it breaks when finds a zero byte in the source string. Using memcpy() instead of strmake(). - Unlike strmake(), memcpy() it does not write beyond the destination size passed. - Unlike the MySQL fix, memcpy() does not break on the first 0x00 byte found in the source string.
* | | MDEV-26833 Missed statement rollback in case transaction drops or create ↵bb-10.2-andreiAndrei Elkin2021-10-289-51/+1211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | temporary table When transaction creates or drops temporary tables and afterward its statement faces an error even the transactional table statement's cached ROW format events get involved into binlog and are visible after the transaction's commit. Fixed with proper analysis of whether the errored-out statement needs to be rolled back in binlog. For instance a fact of already cached CREATE or DROP for temporary tables by previous statements alone does not cause to retain the being errored-out statement events in the cache. Conversely, if the statement creates or drops a temporary table itself it can't be rolled back - this rule remains.
* | | rpl_get_master_version_and_clock and rpl_row_big_table_id tests are slow, so ↵Alice Sherepa2021-10-282-0/+2
|/ / | | | | | | let's not run them under valgrind
* | Fix message severity for "thread pool blocked" messages.Vladislav Vaintroub2021-10-281-2/+2
| | | | | | | | Those messages don't indicate errors, they should be normal warnings.
* | MDEV-26867: Update the InnoDB version number to 5.7.36Marko Mäkelä2021-10-281-1/+1
| | | | | | | | | | The InnoDB changes in MySQL 5.7.36 that were applicable to MariaDB were covered by MDEV-26864, MDEV-26865, MDEV-26866.
* | MDEV-26866 FOREIGN KEY…SET NULL corrupts an index on a virtual columnNikita Malyavin2021-10-289-71/+415
| | | | | | | | | | | | | | | | | | | | | | | | The initial test case for MySQL Bug #33053297 is based on mysql/mysql-server@27130e25078864b010d81266f9613d389d4a229b. innobase_get_field_from_update_vector is not a suitable function to fetch updated row info, as well as parent table's update vector is not always suitable. For instance, in case of DELETE it contains undefined data. castade->update vector seems to be good enough to fetch all base columns update data, and besides faster, and less error-prone.
* | Fix compile warning:bb-10.2-tmpSergei Petrunia2021-10-271-9/+7
| | | | | | | | | | ha_rocksdb.h:459:15: warning: 'table_type' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
* | MDEV-25402 Assertion `!str || str != Ptr' failed in String::copyAlexander Barkov2021-10-273-1/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The assert inside String::copy() prevents copying from from "str" if its own String::Ptr also points to the same memory. The idea of the assert is that copy() performs memory reallocation, and this reallocation can free (and thus invalidate) the memory pointed by Ptr, which can lead to further copying from a freed memory. The assert was incomplete: copy() can free the memory pointed by its Ptr only if String::alloced is true! If the String is not alloced, it is still safe to copy even from the location pointed by Ptr. This scenario demonstrates a safe copy(): const char *tmp= "123"; String str1(tmp, 3); String str2(tmp, 3); // This statement is safe: str2.copy(str1->ptr(), str1->length(), str1->charset(), cs_to, &errors); Inside the copy() the parameter "str" is equal to String::Ptr in this example. But it's still ok to reallocate the memory for str2, because str2 was a constant before the copy() call. Thus reallocation does not make the memory pointed by str1->ptr() invalid. Adjusting the assert condition to allow copying for constant strings.
* | Fix tests for PLUGIN_PARTITION=NOMarko Mäkelä2021-10-273-0/+3
| |
* | MDEV-26868: Session tracking flag in OK_PACKETDiego Dupin2021-10-261-11/+8
| | | | | | | | Take into account client capabilities.
* | pthread_yield() is depricated now, so use sched_yield() if possible.Oleksandr Byelkin2021-10-261-5/+7
| |
* | Safemalloc typo fix found by clang.Oleksandr Byelkin2021-10-261-2/+2
| |
* | Try to fix appveyor to prevent occasional failing of mysql_client_testVladislav Vaintroub2021-10-261-1/+1
| | | | | | | | Sometimes, although not often, it would timeout after 3 minutes.
* | MDEV-23391 Crash/assertion CREATE OR REPLACE TABLE AS SELECT under LOCK TABLEVladislav Vaintroub2021-10-263-6/+46
| | | | | | | | | | | | | | | | | | Happens with Innodb engine. Move unlock_locked_table() past drop_open_table(), and rollback current statement, so that we can actually unlock the table. Anything else results in assertions, in drop, or unlock, or in close_table.
* | MDEV-26902 Auxilary fts table evicts during DDLbb-10.2-thiruThirunarayanan Balathandayuthapani2021-10-261-2/+2
| | | | | | | | | | | | MDEV-25702(commit 696de6d06c0eeaf7b20d5f89278ed7d62a9f204f) should've closed the fts table further. This patch closes the table after finishing the bulk insert operation.
* | MDEV-22711 Assertion `nr != 0' failed in handler::update_auto_increment.bb-10.2-mdev-22711-hfAlexey Botchkov2021-10-263-6/+57
| | | | | | | | | | DBUG_ASSERT removed as the AUTO INCREMENT can actually be 0 when the SET insert_id= 0; was done.
* | MDEV-26556 An improper locking bug(s) due to unreleased lock.bb-10.2-mdev-26556-hfAlexey Botchkov2021-10-253-23/+13
| | | | | | | | Get rid of the global big_buffer.
* | compilation fixes for sys-devel/gcc-11.2.0:11Sergei Golubchik2021-10-256-7/+19
| |
* | MDEV-23267 Assertion on --bootstrap --innodb-force-recoveryMarko Mäkelä2021-10-251-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | SysTablespace::file_not_found(): If the system tablespace cannot be found and innodb_force_recovery has been specified, refuse to start up. The system tablespace is necessary for accessing any InnoDB tables, because it contains the TRX_SYS page (the state of transactions) and the InnoDB data dictionary. This is similar to our handling of innodb_read_only except that we will happily create the InnoDB temporary tablespace even if innodb_force_recovry is set.
* | Fix comment10.2-tmpSergei Petrunia2021-10-221-1/+1
| |
* | MDEV-19129: Xcode compatibility update: mysql-test-run.pl: rename ↵Sergei Krivonos2021-10-218-45/+46
| | | | | | | | $opt_vs_config to $multiconfig to use with other cmake multiconfig generators
* | MDEV-19522 fixup: Use correct printf formatMarko Mäkelä2021-10-211-2/+2
| |
* | MDEV-19522 fixup: Integer type mismatch in unit testMarko Mäkelä2021-10-211-2/+2
| |
* | MDEV-26865: Add test case and instrumentationMarko Mäkelä2021-10-213-0/+298
| | | | | | | | | | | | | | | | | | Based on mysql/mysql-server@bc9c46bf2894673d0df17cd0ee872d0d99663121 but without sleeps. The test was verified to hit the debug assertion if the change to fts_add_doc_by_id() in commit 2d98b967e31623d9027c0db55330dde2c9d1d99a was reverted.
* | MDEV-26865 fts_optimize_thread cannot keep up with workloadMarko Mäkelä2021-10-215-43/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | fts_cache_t::total_size_at_sync: New field, to sample total_size. fts_add_doc_by_id(): Invoke sync if total_size has grown too much since the previous sync request. (Maintain cache->total_size_at_sync.) ib_wqueue_t::length: Caches ib_list_len(*items). ib_wqueue_len(): Removed. We will refer to fts_optimize_wq->length directly. Based on mysql/mysql-server@bc9c46bf2894673d0df17cd0ee872d0d99663121
* | MDEV-26864 Race condition between transaction commit and undo log truncationMarko Mäkelä2021-10-211-6/+10
| | | | | | | | | | | | | | | | | | | | trx_commit_in_memory(): Do not release the rseg reference before trx_undo_commit_cleanup() has been invoked and the current transaction is truly done with the rollback segment. The purpose of the reference count is to prevent data races with trx_purge_truncate_history(). This is based on mysql/mysql-server@ac79aa1522f33e6eb912133a81fa2614db764c9c.