summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix MTR test galera_as_slave_replayDaniele Sciascia2021-01-092-27/+29
| | | | | | | | - Galera cluster must be in node 1 and 2, and acts as slave for node 3 - Sync point commit_monitor_enter_sync was renamed to commit_monitor_master_enter_sync in 4.x Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
* Update wsrep-libJan Lindström2021-01-083-2/+2
|
* Update wsrep-lib (new logger interface)Alexey Yurchenko2021-01-074-35/+40
| | | | | | Ensure consistent use of logging macros in wsrep-related code Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
* MDEV-24500: Added wait condition to make sure table t1 is replicated to node_2.bb-10.4-MDEV-24500Stepan Patryshev2021-01-041-0/+3
|
* MDEV-24512 Assertion failed in rec_is_metadata() in ↵Marko Mäkelä2021-01-023-8/+36
| | | | | | | | | | | | | | | btr_discard_only_page_on_level() btr_discard_only_page_on_level(): Attempt to read the MDEV-15562 metadata record from the leaf page, not the root page. In the root, the leftmost (in this case, the only) node pointer would look like a metadata record. This corruption bug was introduced in commit 0e5a4ac2532c64a545796c787354dc41d61d0e62 (MDEV-15562). The scenario is rare: a column was dropped instantly or the order of columns was changed instantly, and then the table became empty in such a way that in the last step, the root page had one child page. Normally, a non-leaf B-tree page would always contain at least 2 children.
* MDEV-20386: Allow RDRAND, RDSEED WITH_MSANMarko Mäkelä2021-01-021-27/+28
| | | | | Let us use Intel intrinsic functions in WolfSSL whenever possible. This allows such code to be compiled WITH_MSAN.
* WolfSSL v4.6.0-stableMarko Mäkelä2021-01-023-4/+4
|
* Merge branch '10.3' into 10.4Oleksandr Byelkin2020-12-292-9/+9
|\
| * Correction of the merge 10.2 into 10.3 for MDEV-23619Igor Babaev2020-12-282-9/+9
| | | | | | | | (correction for commit 6fed6de93f120b5e311b79892e7865639e9613a4)
* | MDEV-24255 MTR test galera_bf_abort fails with --ps-protocolTeemu Ollakka2020-12-2810-14/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under ps-protocol, commandsl like COM_STMT_FETCH, COM_STMT_CLOSE and COM_STMT_SEND_LONG_DATA are not supposed to return errors. Therefore, if a transaction is BF aborted and the client is processing one of those commands, then we should not return a deadlock error immediately. Instead wait for the a subsequent client interaction which permits errors to be returned. To handle this, wsrep_before_command() now accepts parameter keep_command_error. If set true, keep_command_error will cause wsrep-lib side to skip result handling, and to keep the current error for the next interaction with the client. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
* | Merge 10.3 into 10.4Marko Mäkelä2020-12-283-7/+31
|\ \ | |/
| * Merge 10.2 into 10.3Marko Mäkelä2020-12-283-7/+31
| |\
| | * MDEV-24449 Corruption of system tablespace or last recovered pageMarko Mäkelä2020-12-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corresponds to 10.5 commit 39378e1366f78b38c05e45103b9fb9c829cc5f4f. With a patched version of the test innodb.ibuf_not_empty (so that it would trigger crash recovery after using the change buffer), and patched code that would modify the os_thread_sleep() in recv_apply_hashed_log_recs() to be 1ms as well as add a sleep of the same duration to the end of recv_recover_page() when recv_sys->n_addrs=0, we can demonstrate a race condition. After disabling some debug checks in buf_all_freed_instance(), buf_pool_invalidate_instance() and buf_validate(), we managed to trigger an assertion failure in fseg_free_step(), on the XDES_FREE_BIT. In other words, an trx_undo_seg_free() call during trx_rollback_resurrected() was attempting a double-free of a page. This was repeated about once in 400 to 500 test runs. With the fix applied, the test passed 2,000 runs. recv_apply_hashed_log_recs(): Do not only wait for recv_sys->n_addrs to reach 0, but also wait for buf_get_n_pending_read_ios() to reach 0, to guarantee that buf_page_io_complete() will not be executing ibuf_merge_or_delete_for_page().
| | * MDEV-23851 MDEV-24229 BF-BF conflict issuessjaakola2020-12-282-6/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issues MDEV-23851 and MDEV-24229 are probably duplicates and are caused by the new self-asserting function lock0lock.cc:wsrep_assert_no_bf_bf_wait(). The criteria for asserting is too strict and does not take in consideration scenarios of "false positive" lock conflicts, which are resolved by replaying the local transaction. As a fix, this PR is relaxing the assert criteria by two conditions, which skip assert if high priority transactions are locking in correct order or if conflicting high priority lock holder is aborting and has just not yet released the lock. Alternative fix would be to remove wsrep_assert_no_bf_bf_wait() altogether, or remove the assert in this function and let it only print warnings in error log. But in my high conflict rate multi-master test scenario, this relaxed asserting appears to be safe. This PR also removes two wsrep_report_bf_lock_wait() calls in innodb lock manager, which cause mutex access assert in debug builds. Foreign key appending missed handling of data types of float and double in INSERT execution. This is not directly related to the actual issue here but is fixed in this PR nevertheless. Missing these foreign keys values in certification could cause problems in some multi-master load scenarios. Finally, some problem reports suggest that some of the issues reported in MDEV-23851 might relate to false positive lock conflicts over unique secondary index gaps. There is separate work for relaxing UK index gap locking of replication appliers, and separate PR will be submitted for it, with a related mtr test as well.
* | | Merge branch '10.3' into 10.4bb-10.4-MDEV-23468Oleksandr Byelkin2020-12-25112-1257/+1838
|\ \ \ | |/ /
| * | Merge branch '10.2' into 10.3Oleksandr Byelkin2020-12-241-1/+1
| |\ \ | | |/
| | * Fix MDEV-21958 code to be working with not 64 MAX_INDEXESOleksandr Byelkin2020-12-241-1/+1
| | |
| * | MDEV-24476 Overloaded functions dbug_print_rec break compilation in 10.3Aleksey Midenkov2020-12-241-0/+48
| | | | | | | | | | | | dbug_print_rec() functions used to print data inside GDB.
| * | Bring changes to oracle parserOleksandr Byelkin2020-12-241-9/+5
| | |
| * | Merge branch '10.2' into 10.3Oleksandr Byelkin2020-12-23115-1234/+1936
| |\ \ | | |/
| | * Forgot to add this change to previous csetSergei Petrunia2020-12-221-0/+10
| | |
| | * MDEV-24444: ASAN use-after-poison in Item_func_in::get_func_mm_tree with NOT INSergei Petrunia2020-12-223-1/+24
| | | | | | | | | | | | | | | Fix a trivial error in the fix for MDEV-21958: check the key in the right table.
| | * MDEV-22630 mysql_upgrade (MariaDB 5.2.X --> MariaDB 10.3.X) does not fix ↵Sergei Golubchik2020-12-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | auth_string to change it to authentication_string cherry-pick from 10.4: commit b976b9bfc3e Author: Sergei Golubchik <serg@mariadb.com> Date: Tue Apr 21 18:40:15 2020 +0200 MDEV-21244 mysql_upgrade creating empty global_priv table support upgrades from 5.2 privilege tables
| | * Item_func_like::walk() was ignoring escape_itemSergei Golubchik2020-12-193-0/+21
| | | | | | | | | | | | | | | in particular, it caused escape_item->is_expensive() property to be lost instead of being properly propagated up.
| | * MDEV-24346 valgrind error in main.precedenceSergei Golubchik2020-12-193-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Part II. It's still possible to bypass Item_func_like::escape initialization in Item_func_like::fix_fields(). This requires ESCAPE argument being a cacheable subquery that uses tables and is inside a derived table which is used in multi-update. Instead of implementing a complex or expensive fix for this particular ridiculously artificial case, let's simply disallow it.
| | * MDEV-24346 valgrind error in main.precedenceSergei Golubchik2020-12-195-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in queries like create view v1 as select 2 like 1 escape (3 in (select 0 union select 1)); select 2 union select * from v1; Item_func_like::escape was left uninitialized, because Item_in_optimizer is const_during_execution() but not actually const_item() during execution. It's not, because const subquery evaluation was disabled for derived. Practically it only needs to be disabled for multi-update that runs fix_fields() before all tables are locked.
| | * Item_func_like calls escape_item->fix_fields() twiceSergei Golubchik2020-12-193-2/+15
| | | | | | | | | | | | | | | this happens if Item_func_like is copied (get_copy()). after one copy gets fixed, the other tries to fix escape item again.
| | * MDEV-23065 : Crash after setting wsrep_on to ON dynamically and reconnectJan Lindström2020-12-193-1/+10
| | | | | | | | | | | | | | | At end_connection make sure we have wsrep before trying to free connection assigned to it.
| | * MDEV-22008 rpl.rpl_semi_sync fails in bb, MDEV-24418 reenable ↵Alice Sherepa2020-12-1813-206/+157
| | | | | | | | | | | | binlog_truncate_innodb and binlog_spurious_ddl_errors, rpl_parallel_retry fails in bb
| | * MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDBNikita Malyavin2020-12-183-1/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | row_upd_clust_step() calls row_upd_del_mark_clust_rec() which would allocate some memory in row_ins_foreign_fill_virtual(). Then, row_upd_store_row() would access the allocated memory, but only after potentially freeing that memory by invoking mem_heap_empty(), leading to ASAN heap-use-after-free diagnostics. row_ins_foreign_fill_virtual(): Use a more appropriate memory heap with a longer lifetime.
| | * MDEV-20751 Permission Issue With Nested CTEsIgor Babaev2020-12-173-2/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to this bug the server reported bogus messages about lack of SELECT privileges for base tables used in the specifications of CTE tables. It happened only if such a CTE were referred to at least twice. For any non-recursive reference to CTE that is not primary the specification of the CTE is cloned. The function check_table_access() is called for such reference. The function checks privileges of the tables referenced in the specification. As no name resolution was performed for CTE references whose definitions occurred outside the specification before the call of check_table_access() that was supposed to check the access rights of the underlying tables these references were considered as references to base tables rather than references to CTEs. Yet for CTEs as well as for derived tables no privileges are needed and thus cannot be granted. The patch ensures proper name resolution of all references to CTEs before any acl checks. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| | * MDEV-24327 wsrep XID checkpointing order with log_slave_updates=OFFbb-10.2-MDEV-24327sjaakola2020-12-174-5/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If log_slave_updates==OFF, wsrep applier threads used to be configured with option: thd->variables.option_bits&= ~(OPTION_BIN_LOG); (i.e. like sql_log_bin=ON). And this was regardless of log-bin configuration. With this, having configuration of: --log-bin && --log-slave-updates=OFF, local threads used binlogging, but applier threads did not. And further: local threads went through binlog group commit, while applier threads did direct commits. This resulted in situation, where applier threads entered earlier in wsrep XID checkpointing, and could sync their wsrep XID out of order. Later local thread commit would see that higher seqno was already checkpointed, and fire an assert because of this. As a fix, applier threads are now forced to enable binlogging regardless of log-slave-updates configuration. This PR comes with new mtr test: galera.MDEV-24327, which causes a scenario where applier transaction is applied and committed while earlier local transaction is parked before commit order monitor enter. A buggy mariadb versoin would fail for assertion because of wsrep XID checkpoint order violation. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
| | * MDEV-23406 Signal 8 in maria_create after recursive cte queryIgor Babaev2020-12-167-39/+370
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug could cause a crash when executing queries that used mutually recursive CTEs with system variable big_tables set to 1. It happened due to several bugs in the code that handled recursive table references referred mutually recursive CTEs. For each recursive table reference a temporary table is created that contains all rows generated for the corresponding recursive CTE table on the previous step of recursion. This temporary table should be created in the same way as the temporary table created for a regular materialized derived table using the method select_union::create_result_table(). In this case when the temporary table is created it uses the select_union::TMP_TABLE_PARAM structure as the parameter for the table construction. However the code created the temporary table using just the function create_tmp_table() and passed pointers to certain fields of the TMP_TABLE_PARAM structure used for accumulation of rows of the recursive CTE table as parameters for update. This was a mistake because now different temporary tables cannot share some TMP_TABLE_PARAM fields in a general case. Besides, depending on how mutually recursive CTE tables were defined and which of them were referred in the executed query the select_union object allocated for a recursive table reference could be allocated again after the the temporary table had been created. In this case the TMP_TABLE_PARAM object associated with the temporary table created for the recursive table reference contained unassigned fields needed for execution when Aria engine is employed as the engine for temporary tables. This patch ensures that - select_union object is created only once for any recursive table reference - any temporary table created for recursive CTEs uses its own TMP_TABLE_PARAM structure The patch also fixes a problem caused by incomplete cleanup of join tables associated with recursive table references. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| | * MDEV-22810 mariabackup does not honor open_files_limit from option during ↵Vlad Lesin2020-12-161-0/+4
| | | | | | | | | | | | | | | | | | | | | backup prepare open_files_limit option was processed only for --backup, but not for --prepare.
| | * MDEV-21958: postfix - result of range_mrr_icpDaniel Black2020-12-161-0/+15
| | |
| | * MDEV-24172: innodb stats table last_update is TIMESTAMPDaniel Black2020-12-163-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last_updated column of innodb_table_stats and innodb_index_stats hasn't been DATA_FIXBINARY for many years. Innodb represents TIMESTAMP as INT of length 4. Let's test it with this and stop hiding the result in mysql_upgrade test. Reviewer: Marko
| | * MDEV-24414 Update and enable galera.galera_defaultsbb-10.2-MDEV-24414Stepan Patryshev2020-12-152-2/+1
| | |
| | * MDEV-21958: Query having many NOT-IN clauses running foreverSergei Petrunia2020-12-153-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Basic variant of the fix: do not consider conditions in form unique_key NOT IN (c1,c2...) to be sargable. If there are only a few constants, the condition is not selective. If there are a lot constants, the overhead of processing such a huge range list is not worth it. (Backport to 10.2)
| | * MDEV-24034 Policy CMP0075 is not set during compileVladislav Vaintroub2020-12-152-39/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The policy is not set for 10.2 If it is set, CMake would complain about bundled zlib for which the policy is not set. Fix: - Set policy for 10.2 for the top level project. For 10.3+ it was already set - Cleanup zlib to remove unneeded stuff. It is an internal static library, it needs none of PROJECT, library versioning, RC file on Windows. The name of the library on Unix does not make any difference, since it is static and compiled in.
| | * MDEV-23209: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())'Rucha Deodhar2020-12-151-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | failed in Diagnostics_area::set_ok_status on INSERT Analysis: Error is not returned when strict mode is enabled and value is truncated because double is outside range. Fix: Return HA_ERR_AUTOINC_ERANGE if the error was reported when double is outside range.
| | * MDEV-22422: Assertion `! is_set()' failed in Diagnostics_area::set_eof_statusRucha Deodhar2020-12-151-0/+3
| | | | | | | | | | | | | | | | | | Analysis: The error is not returned when the statement can't be used. And so we still go on to search for keywords. Fix: Return the error state.
| | * MDEV-21646: postfix - my_addr_resolve: static Dl_info infoDaniel Black2020-12-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Encountered the linker failure on Debug build in 10.4: [53/585] Linking CXX executable unittest/sql/mf_iocache-t FAILED: unittest/sql/mf_iocache-t : && /usr/bin/c++ -pie -fPIC -fstack-protector --param=ssp-buffer-size=4 -fPIC -g -DENABLED_DEBUG_SYNC -ggdb3 -DSAFE_MUTEX -DSAFEMALLOC -DTRASH_FREED_MEMORY -Wall -Wextra -Wno-format-truncation -Wno-init-self -Wno-nonnull-compare -Wno-unused-parameter -Woverloaded-virtual -Wnon-virtual-dtor -Wvla -Wwrite-strings -Werror -Wl,-z,relro,-z,now unittest/sql/CMakeFiles/mf_iocache-t.dir/mf_iocache-t.cc.o unittest/sql/CMakeFiles/mf_iocache-t.dir/__/__/sql/mf_iocache_encr.cc.o -o unittest/sql/mf_iocache-t -lpthread mysys/libmysys.a unittest/mytap/libmytap.a mysys_ssl/libmysys_ssl.a mysys/libmysys.a dbug/libdbug.a mysys/libmysys.a dbug/libdbug.a -lz -lm strings/libstrings.a -lpthread -lssl -lcrypto -ldl && : /usr/bin/ld: mysys/libmysys.a(my_addr_resolve.c.o):/home/dan/repos/mariadb-server-10.4/mysys/my_addr_resolve.c:173: multiple definition of `info'; unittest/sql/CMakeFiles/mf_iocache-t.dir/mf_iocache-t.cc.o:/home/dan/repos/mariadb-server-10.4/unittest/sql/mf_iocache-t.cc:99: first defined here We make Dl_info static as in MDEV-21646 moving it out of the function was the main goal and having it scope limited by static doesn't affect the function.
| | * MDEV-24331 mysqldump fails with "Got error: 1356" if the database contains a ↵Sergei Golubchik2020-12-113-1/+52
| | | | | | | | | | | | | | | | | | | | | view with a subquery detect derived tables differently. TABLE_LIST::is_derived() only works after mysql_derived_init()
| | * MDEV-23942 mariadb-10.5.6/storage/connect/plugutil.cpp:380: bad width ?Sergei Golubchik2020-12-101-2/+2
| | | | | | | | | | | | cppcheck warnings
| | * MDEV-24194 View definition corruptionSergei Golubchik2020-12-103-10/+13
| | | | | | | | | | | | fix parsing of "1 IS NULL = 2"
| | * MDEV-4677 GROUP_CONCAT not showing any output with group_concat_max_len >= 4GbSergei Golubchik2020-12-1010-18/+41
| | | | | | | | | | | | | | | don't allow group_concat_max_len values >= 4Gb (they never worked anyway)
| | * document that a fulltext parser plugin can replace mysql_add_word callbackSergei Golubchik2020-12-101-1/+3
| | |
| | * tests for YEAR(N)Sergei Golubchik2020-12-102-0/+69
| | |
| | * cleanup: type_year test formattingSergei Golubchik2020-12-102-21/+23
| | |
| | * MDEV-14836 Assertion `m_status == DA_ERROR' failed in ↵Sergei Golubchik2020-12-102-1/+2
| | | | | | | | | | | | | | | | | | | | | Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED Make the test case more robust. We only care that the query returns no rows and that the server doesn't crash.