summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* MDEV-24545 Sequence created by one connection remains invisible to anotherst-10.3Marko Mäkelä2021-04-273-1/+33
| | | | | | row_merge_is_index_usable(): Allow access to any SEQUENCE, even if it was created after the read view. SQL sequences are no-rollback tables with no history at all.
* Merge 10.2 into 10.3Marko Mäkelä2021-04-272-2/+2
|\
| * MDEV-25513: raise systemd LimitNOFILE limits to match server defaultsDaniel Black2021-04-272-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Quoting MDEV reporter Daniel Lewart: Starting MariaDB with default configuration causes the following problems: "[Warning] Could not increase number of max_open_files to more than 16384 (request: 32186)" silently reduces table_open_cache_instances from 8 (default) to 4 Default Server System Variables: extra_max_connections = 1 max_connections = 151 table_open_cache = 2000 table_open_cache_instances = 8 thread_pool_size = 4 LimitNOFILE=16834 is in the following files: support-files/mariadb.service.in support-files/mariadb@.service.in Looking at sql/mysqld.cc lines 3837-3917: wanted_files= (extra_files + max_connections + extra_max_connections + tc_size * 2 * tc_instances); wanted_files+= threadpool_size; Plugging in the default values: wanted_files = (30 + 151 + 1 + 2000 * 2 * 8 + 4) = 32186 However, systemd configuration has LimitNOFILE = 16384, which is far smaller. I suggest increasing LimitNOFILE to 32768.
| * MDEV-24898: Server crashes in st_select_lex::next_selectbb-10.2-tmp1Sergei Petrunia2021-04-252-0/+24
| | | | | | | | | | (trivial backport to 10.2) Add a testcase
| * MDEV-24925: Server crashes in Item_subselect::init_expr_cache_trackerSergei Petrunia2021-04-253-1/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | (trivial backport to 10.2) The optimizer removes redundant GROUP BY operations. If GROUP BY element is a subselect, it is "eliminated". However one must not eliminate the item if it is used both in the select list and in the GROUP BY, like so: select (select ... ) as SUBQ from ... group by SUBQ Do not eliminate such items.
* | MDEV-24758 heap-use-after-poison in innobase_add_instant_try/rec_copyMarko Mäkelä2021-04-267-19/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a backport of commit fd9ca2a742abe2e91b2b77e70915dec7bd3cd7e1 (MDEV-23295) and commit 9a156e1a23046ba3e37bdb1e4e1ad887d3f5829b (MDEV-23345) to 10.3. An instant ADD/DROP/reorder column could create a dummy table object with the wrong ROW_FORMAT when innodb_default_row_format was changed between CREATE TABLE and ALTER TABLE. prepare_inplace_alter_table_dict(): If we had promised that ALGORITHM=INPLACE is supported, we must preserve the ROW_FORMAT. The rest of the changes are related to adding Alter_inplace_info::inplace_supported to cache the return value of handler::check_if_supported_inplace_alter().
* | MDEV-24773: slave_compressed_protocol doesn't work properly with semi-sync ↵Sujatha2021-04-264-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | replication Back port upstream fix commit 1800b015a1d487330f7b15f2020b887be348a66b Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com> Date: Fri Sep 8 20:29:22 2017 +0530 Bug#26027024 SLAVE_COMPRESSED_PROTOCOL DOESN'T WORK WITH SEMI-SYNC REPLICATION IN MYSQL-5.7 Analysis: In mysql-5.6, dump thread (the thread that is created on Master after Slave requested for a binlog dump) is also used to receive acknowledgements from the Slave and act on them accordingly. For performance reasons, a special thread called Ack Receiver thread is added in mysql-5.7 Semi synchronous replication plugin. This thread does not have special handling to receive acknowledgements if Slave has enabled compression in the protocol. Hence Master is unable to handle any slave if Slave_compressed_protocol is enabled on it. Fix: Enable compress flag on the communication channels if the Slave has Slave_compressed_protocol ON.
* | MDEV-24898: Server crashes in st_select_lex::next_selectbb-10.3-mdev24925Sergei Petrunia2021-04-252-0/+24
| | | | | | | | Add a testcase
* | MDEV-24925: Server crashes in Item_subselect::init_expr_cache_trackerSergei Petrunia2021-04-253-1/+92
| | | | | | | | | | | | | | | | | | | | | | | | The optimizer removes redundant GROUP BY operations. If GROUP BY element is a subselect, it is "eliminated". However one must not eliminate the item if it is used both in the select list and in the GROUP BY, like so: select (select ... ) as SUBQ from ... group by SUBQ Do not eliminate such items.
* | This commit adds the same call of st_select_lex::set_unique_exclude() thatIgor Babaev2021-04-243-1/+24
| | | | | | | | | | complemented the fix for MDEV-24823 in 10.2. As it is the only call of this function in 10.3 the commit also has added the code of the function.
* | Merge 10.2 into 10.3Marko Mäkelä2021-04-2416-199/+362
|\ \ | |/ | | | | except commit 1288dfffe77a99d6c5906d12010a1677ee149308
| * MDEV-23026/MDEV-25474 fixup: Assertion ib_table->stat_initializedMarko Mäkelä2021-04-241-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is possible that an object that was originally created by open_purge_table() will remain cached and reused for SQL execution. Our previous fix wrongly assumed that ha_innobase::open() would always be called before SQL execution starts. Therefore, we must invoke dict_stats_init() in ha_innobase::info_low() instead of only doing it in ha_innobase::open(). Note: Concurrent execution of dict_stats_init() on the same table is possible, but it also was possible between two calls to ha_innobase::open(), with no ill effects observed. This should fix the assertion failure on stat_initialized. A possibly easy way to reproduce it would have been to run the server with innodb_force_recovery=2 (disable the purge of history), update a table so that an indexed virtual column will be affected, and finally restart the server normally (purge enabled), to observe a crash when the table is accessed from SQL. The problem was first observed and this fix verified by Elena Stepanova. Also Thirunarayanan Balathandayuthapani repeated the problem.
| * MDEV-25459 MVCC read from index on CHAR or VARCHAR wrongly omits rowsMarko Mäkelä2021-04-243-35/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | row_sel_sec_rec_is_for_clust_rec(): If the field in the clustered index record stored off page, always fetch it, also when the secondary index field has been built on the entire column. This was broken ever since the InnoDB Plugin for MySQL Server 5.1 introduced ROW_FORMAT=DYNAMIC and ROW_FORMAT=COMPRESSED for InnoDB tables. That code was first introduced in this tree in commit 3945d5e5549187a18c64a112899f90a7f6a320d6. For the original ROW_FORMAT=REDUNDANT and the MySQL 5.0.3 ROW_FORMAT=COMPRESSED, there was no problem, because for those tables we always stored at least a 768-byte prefix of each column in the clustered index record. row_sel_sec_rec_is_for_blob(): Allow prefix_len==0 for matching the full column.
| * This patch complements the patch for MDEV-24823.Igor Babaev2021-04-231-1/+1
| |
| * MDEV-25091 CREATE TABLE: field references qualified by a wrong table name ↵Aleksey Midenkov2021-04-235-5/+188
| | | | | | | | | | | | | | | | | | | | | | succeed Before FRM is written walk vcol expressions through check_table_name_processor() and check if field items match (db, table_name) qualifier. We cannot do this in check_vcol_func_processor() as there is already no table name qualifiers in expressions of written and loaded FRM.
| * MDEV-23455 Hangs + Sig11 in unknown location(s) due to single complex FK queryAleksey Midenkov2021-04-233-3/+54
| | | | | | | | | | | | | | | | Buffer overflow in ib_push_warning() fixed by using vsnprintf(). InnoDB parser was obsoleted by MDEV-16417. Thanks to Nikita Malyavin for review and suggestion.
| * remove EXCEPTIONS-CLIENTSergei Golubchik2021-04-232-138/+1
| | | | | | | | | | It's Oracle libmysqlclient license exception, we no longer include, build or ship libmysqlclient
| * MDEV-24823 Crash with invalid multi-table update of view in 2nd execution of SPIgor Babaev2021-04-229-26/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch mergeable derived tables / view used in a multi-table update / delete were merged before the preparation stage. When the merge of a derived table / view is performed the on expression attached to it is fixed and ANDed with the where condition of the select S containing this derived table / view. It happens after the specification of the derived table / view has been merged into S. If the ON expression refers to a non existing field an error is reported and some other mergeable derived tables / views remain unmerged. It's not a problem if the multi-table update / delete statement is standalone. Yet if it is used in a stored procedure the select with incompletely merged derived tables / views may cause a problem for the second call of the procedure. This does not happen for select queries using derived tables / views, because in this case their specifications are merged after the preparation stage at which all ON expressions are fixed. This patch makes sure that merging of the derived tables / views used in a multi-table update / delete statement is performed after the preparation stage. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| * MDEV-25456 - fix predicate in ib::error_or_warnVladislav Vaintroub2021-04-221-1/+1
| |
| * MDEV-25456 MariaBackup logs "[ERROR]" on Invalid log block checksumVladislav Vaintroub2021-04-221-1/+2
| | | | | | | | Fix is to changed message to be [WARNING] for backup
| * Update timezone data on WindowsVladislav Vaintroub2021-04-222-0/+2
| | | | | | | | | | | | | | | | There is new Yukon Standard time Windows timezone. Also fix the powershell script that generates the Windows locale mapping, tell powershell to use TLSv1.2 to access the github (on some reason it is TLS1.1 that powershell is using by default, and it does no work)
* | MDEV-24823 Crash with invalid multi-table update of view in 2nd execution of SPIgor Babaev2021-04-227-25/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch mergeable derived tables / view used in a multi-table update / delete were merged before the preparation stage. When the merge of a derived table / view is performed the on expression attached to it is fixed and ANDed with the where condition of the select S containing this derived table / view. It happens after the specification of the derived table / view has been merged into S. If the ON expression refers to a non existing field an error is reported and some other mergeable derived tables / views remain unmerged. It's not a problem if the multi-table update / delete statement is standalone. Yet if it is used in a stored procedure the select with incompletely merged derived tables / views may cause a problem for the second call of the procedure. This does not happen for select queries using derived tables / views, because in this case their specifications are merged after the preparation stage at which all ON expressions are fixed. This patch makes sure that merging of the derived tables / views used in a multi-table update / delete statement is performed after the preparation stage. Approved by Oleksandr Byelkin <sanja@mariadb.com>
* | Merge 10.2 into 10.3Marko Mäkelä2021-04-229-19/+325
|\ \ | |/
| * MDEV-25474 Background thread returns uninitialized statisticsbb-10.2-MDEV-25474Thirunarayanan Balathandayuthapani2021-04-211-2/+6
| | | | | | | | | | | | | | | | | | to mysql interpreter InnoDB returns uninitialized statistics to mysql interpreter when background thread is opening the table. So it leads to assertion failure. In that case, InnoDB avoid sending innodb statistics information to mysql interpreter.
| * MDEV-25457 Server crashes in row_undo_mod_clust_low upon rollback of ↵Eugene Kosov2021-04-213-1/+13
| | | | | | | | | | | | | | read-only transaction node->index was NULL. But it's possible to get dict_table_t* from another source.
| * MDEV-24526 binlog rotate via FLUSH LOGS may obsolate binlog file for ↵Andrei Elkin2021-04-213-0/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | recovery too eary There was race between a committing transaction and the following in binlog order FLUSH LOGS that could create a 2nd Binlog checkpoint (BCP) event in the new file *before* the first logged-in-old-binlog transaction gets committed in Innodb. That would cause the transaction loss at recovery, should the server stop right after the BCP. The race is tackled by enforcing the necessary set of mutexes to be acquired by FLUSH-LOGS handler in the correct order (of the group commit leader pattern). Note, there remain two cases where a similar race is still possible: - the above race as it is when the server is run with ("unlikely") non-default `--binlog-optimize-thread-scheduling=0` (MDEV-24530), and - at unlikely event of bin-logging of Incident event (MDEV-24531) that also triggers binlog rotation, in both cases though with lesser chances after the current fixes.
| * Fixup: Event_queue_element_for_exec initializer list not supported on gcc-4.1Vicențiu Ciorbaru2021-04-211-1/+5
| |
| * fixed some korean error messagesbb-10.2-danielblack-pr1811-korean-translationLee Keun Won2021-04-211-14/+17
| | | | | | | | Closes #1811
| * Smoke test collection should not be executableElena Stepanova2021-04-211-1/+0
| | | | | | | | | | | | | | | | | | Since it ended up being a plain text file rather than a script (post-fix for MDEV-25288) Also removed main-test_sql_discovery.create from the list, as a workaround for MDEV-25384. The bug only affects 10.3+, but it will be simpler if 10.2 part of the tests is the same in all branches
| * MDEV-25288 Create a list of tests for distributionsElena Stepanova2021-04-211-0/+139
| | | | | | | | ... to run upon building/packaging of MariaDB server
| * MDEV-24807:A possibility for double free in dtor of ↵Vicențiu Ciorbaru2021-04-203-1/+3
| | | | | | | | | | | | | | Event_queue_element_for_exec in the case of OOM Eliminate a memory leak when init can fail by forgetting to delete the Event_queue_element_for_exec object.
* | Merge 10.2 into 10.3Marko Mäkelä2021-04-2130-123/+621
|\ \ | |/
| * MDEV-25466 Merge new release of InnoDB 5.7.34 to 10.2Marko Mäkelä2021-04-202-6/+2
| |\
| | * Bug #32032897 DEADLOCKING WAIT GRAPH ON BUSY SERVERAditya A2021-04-201-5/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROBLEM ------- 1. The customer had presented a stack which had many threads waiting on multiple mutexes like LOCK_Status, srv_innodb_monitor_mutex, ibuf_mutex etc. 2. The root cause was that the AHI latch was held in S (shared) mode by the a thread which was doing a truncate of a large table . 3. There was another thread which was trying to acquire the AHI latch in X (exclusive) mode 4. With our lock implementation any thread requesting a X lock ,blocks rest of the threads requesting S(shared) locks,this caused many threads to wait for this shared lock. 5. The main reason why we hold the latches in truncate is to avoid disabling of AHI during truncate FIX
| * MDEV-25362 Incorrect name resolution for subqueries in ON expressionsprot-10.2Igor Babaev2021-04-175-1/+164
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch sets the proper name resolution context for outer references used in a subquery from an ON clause. Usually this context is more narrow than the name resolution context of the parent select that were used before this fix. This fix revealed another problem that concerned ON expressions used in from clauses of specifications of derived tables / views / CTEs. The name resolution outer context for such ON expression must be set to NULL to prevent name resolution beyond the derived table where it is used. The solution to resolve this problem applied in sql_derived.cc was provided by Sergei Petrunia <sergey@mariadb.com>. The change in sql_parse.cc is not good for 10.4+. A corresponding diff for 10.4+ will be provided in JIRA entry for this bug. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| * MDEV-15064: IO_CACHE mysys read_pos, not libmaria rc_posbb-10.2-danielblack-MDEV-15064-IO_CACHE-read_posRainer Orth2021-04-172-2/+2
| | | | | | | | | | | | | | | | | | It seems some overly tolerant compilers (gcc) allow the structure of IO_CACHE that is defined differently in libmaria to have members equalivance to the iocache in mysys. More strict Solaris compilers recognise that rc_pos really isn't a structure member and won't compile.
| * MDEV-25407: EXISTS subquery with correlation in ON expression crashesbb-10.2-mdev25407Sergei Petrunia2021-04-163-1/+70
| | | | | | | | Make Item_subselect::walk() walk the ON expressions, too.
| * MDEV-22255 SIGABRT: Assertion `id' failed in trx_write_trx_id on INSERT | ↵Eugene Kosov2021-04-1510-12/+212
| | | | | | | | Assertion `id > 0' failed in trx_write_trx_id | Assertion `val > 0' failed in row_upd_index_entry_sys_field | Assertion `thr_get_trx(thr)->id || index->table->no_rollback()' failed.
| * MDEV-23026 purge fails with assert !rw_lock_own_flagged(lock, ↵st-10.2-MDEV-23026Thirunarayanan Balathandayuthapani2021-04-151-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RW_LOCK_FLAG_X | RW_LOCK_FLAG_S) InnoDB purge thread locks the root page of clustered index while accessing the undo log records and later same thread tries to open the table, initialize statistics and tries to lock the clustered index root page while doing virtual column computation. Solution: ========= InnoDB should prevent statistics initialization when the table is being opened by purge thread
| * update C/CSergei Golubchik2021-04-151-0/+0
| |
| * MDEV-25403 ALTER TABLE wrongly checks for field's default value if AFTER is usedSergei Golubchik2021-04-153-1/+30
| | | | | | | | | | | | | | | | When a column is added to an non-empty table, existing rows will have a column's default value for existing rows. Or a "zero value" if the column has no default. But this check should be skipped when an existing column is altered.
| * signal handler, display coredump file pattern similarly to MDEV-25294 but ↵David Carlier2021-04-151-3/+3
| | | | | | | | for FreeBSD, thankfully the sysctl OID is the same.
| * Update mysqlbinlog man page with --table optionIan Gilfillan2021-04-141-2/+19
| |
| * MDEV-25363 binlog_stm_datetime_ranges_mdev15289 failed in bbAlice Sherepa2021-04-142-0/+2
| |
| * MDEV-25354: Fix my_print_defaults wordingIan Gilfillan2021-04-141-1/+1
| |
* | MDEV-25327 Unexpected ER_DUP_ENTRY upon dropping PK column from ↵Aleksey Midenkov2021-04-193-2/+49
| | | | | | | | | | | | system-versioned table When dropped all user key-parts we also drop key-parts of implicit system fields.
* | Fix riscv64 build failure by linking correctly with pthreadbb-10.3-ottok-MDEV-23892-pthreadOtto Kekäläinen2021-04-151-0/+1
| | | | | | | | | | | | | | | | | | Link with -pthread instead of -lpthread, and do that for all architectures. Contributors: Aurelien Jarno <aurelien@aurel32.net> Closes: #1717
* | Fixup merge 6e6318b29b446f76f01f2ef65d1460870b607d2aMarko Mäkelä2021-04-141-3/+3
| |
* | Merge 10.2 into 10.3Marko Mäkelä2021-04-142-5/+5
|\ \ | |/
| * -DMYSQL_MAINTAINER_MODE=NOSergei Golubchik2021-04-132-3/+7
| | | | | | | | | | also add =WARN as an alias for =OFF and clarify the help text