summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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.
| * MDEV-24033: SIGSEGV in __memcmp_avx2_movbe from queue_insert | SIGSEGV in ↵Sergei Golubchik2020-12-1021-799/+328
| | | | | | | | | | | | __memcmp_avx2_movbe from native_compare don't allow too small max_sort_length values
| * Revert "MDEV-24033: SIGSEGV in __memcmp_avx2_movbe from queue_insert | ↵Sergei Golubchik2020-12-104-20/+1
| | | | | | | | | | | | | | SIGSEGV in __memcmp_avx2_movbe from native_compare" This reverts commit 5a0c34e4c2fd951119efb432eedcaa65a1d36606. but keeps the test case
| * MDEV-17573 Assertion in federatedx on multi-updateAleksey Midenkov2020-12-096-15/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cause: shared federatedx_io cannot store table-specific data. Fix: move current row reference `federatedx_io_mysql::current` to ha_federatedx. FederatedX connection (represented by federatedx_io) is stored into federatedx_txn::txn_list of per-server connections (see federatedx_txn::acquire()). federatedx_txn object is stored into THD (see ha_federatedx::external_lock()). When multiple handlers acquire FederatedX connection they get single federatedx_io instance. Multiple handlers do their operation via federatedx_io_mysql::mark_position() and federatedx_io_mysql::fetch_row() in arbitrarty manner. They access the same federatedx_io_mysql instance and same MYSQL_ROWS *current pointer, so one handler disrupts the work of the other. Related to "MDEV-14551 Can't find record in table on multi-table update with ORDER BY".
| * MDEV-24019 Assertion is hit for query using recursive CTE with no default DBIgor Babaev2020-12-083-24/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When the query using a recursive CTE whose definition contained wildcard symbols in the recursive part was processed at the prepare stage an assertion was hit if the query was executed without any default database set. The failure happened when the function insert_fields() tried to check column privileges for the temporary table created for a recursive reference to the CTE. No acl checks are needed for any CTE. That's why this check should be blocked as well. The patch formulates a stricter condition at which this check is to be blocked that covers the case when a query using recursive CTEs is executed with no default database set. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| * MDEV-22781 CREATE VIEW containing WITH clause Signal 11Igor Babaev2020-12-075-6/+73
| | | | | | | | | | | | | | | | For table references to CTEs the field TABLE_LIST::db must be set to an empty string as it's done for table references to derived tables in order CTEs to be processed similar to how derived tables are processed. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| * MDEV-24139: CHECK_CLAUSE field in INFORMATION_SCHEMA.CHECK_CONSTRAINTS ↵Anel Husakovic2020-12-078-15/+21
| | | | | | | | | | | | truncate check constraints expressions - Reviewed by: daniel@mariadb.org
| * MDEV-21367: mysqld_safe log don't log to err.logAnel Husakovic2020-12-071-6/+4
| | | | | | | | | | | | | | Introduced with 6b7918d524d5 in `10.2` just check for helper and handle it if exist. Reviewed by: cvicentiu@mariadb.org
| * MDEV-24177 && MDEV-24178Anel Husakovic2020-12-071-0/+1
| | | | | | | | | | | | | | - MDEV-24177: main.sp2 test fails: Result length mismatch - MDEV-24178: main.upgrade_MDEV-19650 test fails: Result length mismatch Reviewed by: serg@mariadb.com
| * MDEV-24314 Unexpected error message when selecting from view that usesIgor Babaev2020-12-044-0/+69
| | | | | | | | | | | | | | | | mergeable derived table Do not check privileges for derived tables/CTEs and their fields. Approved by Oleksandr Byelkin <sanja@mariadb.com>
* | Merge 10.2 into 10.3Marko Mäkelä2020-12-236-26/+22
|\ \ | |/
| * MDEV-24340 Unique final message of InnoDB during shutdownbb-10.2-MDEV-24340Marko Mäkelä2020-12-044-26/+17
| | | | | | | | | | | | | | | | | | | | | | innobase_space_shutdown(): Remove. We want this step to be executed before the message "InnoDB: Shutdown completed; log sequence number " is output by innodb_shutdown(). It used to be executed after that step. innodb_shutdown(): Duplicate the code that used to live in innobase_space_shutdown(). innobase_init_abort(): Merge with innobase_space_shutdown().
| * MDEV-24318 server_audit doesn't respect filters for PROXY_CONNECTAlexey Botchkov2020-12-012-5/+5
| | | | | | | | | | | | events. The log line should be added behind the filters.
* | Partially revert 7410ff436e95de09c2f3f0028e7af8b3a043028bMarko Mäkelä2020-12-231-39/+0
| | | | | | | | | | Remove the unused dbug_print_rec() functions because they break the clang build due to -Wreturn-stack-address
* | MDEV-23446 UPDATE does not insert history row if the row is not changedAleksey Midenkov2020-12-224-32/+105
| | | | | | | | | | | | | | Add history row outside of compare_record() check. For TRX_ID versioning we have to fail can_compare_record to force InnoDB update which adds history row; and there in ha_innobase::update_row() is additional "row changed" check where we force history row anyway.
* | MDEV-23644 Assertion on evaluating foreign referential action for ↵Aleksey Midenkov2020-12-2213-9/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | self-reference in system versioned table First part of the fix (row0mysql.cc) addresses external columns when adding history row on referential action. The full data must be retrieved before the row is inserted. Second part of the fix (the rest) avoids duplicate primary key error between the history row generated on referential action and the history row generated by SQL command. Both command and referential action can happen on same table since foreign key can be self-reference (parent and child tables are same). Moreover, the self-reference can refer multiple rows when the key is non-unique. In such case history is generated by referential action occured on first row but processed all rows by a matched key. The second round is when the next row is processed by a command but history already exists. In such case we check TRX_ID of existing history row and if it is the same we assume the above situation and skip adding one more history row or failing the command.