summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* MDEV-27181: Galera SST scripts should use ssl_capath for CA directorybb-10.6-MDEV-27181-galeraJulius Goryavsky2021-12-1419-258/+1172
| | | | | | | | | | | | | | | | | 1. Galera SST scripts should use ssl_capath (not ssl_ca) for CA directory. The current implementation tries to automatically detect the path using the trailing slash in the ssl_ca variable value, but this approach is not compatible with the server configuration. Now, by analogy with the server, SST scripts also use a separate ssl_capath variable. In addition, a similar tcapath variable has been added for the old-style configuration (in the "sst" section). 2. Openssl utility detection made more reliable. 3. Removed extra spaces in automatically generated command lines - to simplify debugging of the SST scripts. 4. In general, the code for detecting the presence or absence of auxiliary utilities has been improved - it is made more reliable in some configurations (and for shells other than bash).
* MDEV-27014 InnoDB fails to restore page 0 from the doublewrite bufferThirunarayanan Balathandayuthapani2021-12-122-7/+7
| | | | | - Addressing the format issue in deferred_dblwr() and changed the function comment.
* MDEV-27111 atomic.rename_table test case failsThirunarayanan Balathandayuthapani2021-12-121-0/+12
| | | | | | | InnoDB fails to identify the deferred tablespace after recovery. Problem is that InnoDB fails to rename the tablespace present in recovered tablespace. Fix is that InnoDB should try to rename the recovered tablespace when tablespace is being deferred
* MDEV-27014 InnoDB fails to restore page 0 from the doublewrite bufferThirunarayanan Balathandayuthapani2021-12-124-28/+65
| | | | | | | | | | | | This patch reverts the commit cab8f4b552d234c8642f87fae28ecb098392c381. InnoDB fails to restore page0 from doublewrite buffer when the tablespace is being deferred. In that case, InnoDB doesn't find INIT_PAGE redo log record for page0 and it leads to failure. InnoDB should recovery page0 from doublewrite buffer for the deferred tablespace before applying the redo log records. Added deferred_dblwr() to restore page0 of deferred tablespace from doublewrite buffer
* MDEV-27219 Some error messages might report table names incorrectly on LLP64Marko Mäkelä2021-12-101-3/+3
| | | | | | | | | | | In commit 49e2c8f0a6fefdeac50925f758090d6bd099768d (MDEV-25743) some more use of the printf-style format "%.*s" was added. The length parameter is of type int, not size_t. On 64-bit platforms that follow the LLP64 convention (such as 64-bit Microsoft Windows), sizeof(int)==4 and sizeof(size_t)==8. Let us explicitly cast the lengths to the correct type in order to avoid any trouble.
* Merge branch '10.5' into 10.6Sergei Golubchik2021-12-0718-81/+391
|\
| * BUG#31761802 STATISTICS ANY QUERIES USING VIEWS ARE SUMMARIZED TOGETHER WITH ↵Sergei Golubchik2021-12-072-0/+220
| | | | | | | | | | | | THE VIEW DEFINITION SELECT test case only
| * require system pcre2 in rpmsSergei Golubchik2021-12-071-3/+1
| | | | | | | | now when SLES12.3 is gone, we can enforce it
| * ColumnStore and S3 SUMMARY/DESCRIPTION for RPMSergei Golubchik2021-12-072-0/+5
| |
| * Merge branch '10.4' into 10.5Sergei Golubchik2021-12-079-5/+89
| |\
| | * Merge branch '10.3' into 10.4Sergei Golubchik2021-12-0711-10/+98
| | |\
| | | * Merge branch '10.2' into 10.3Sergei Golubchik2021-12-069-8/+92
| | | |\
| | | | * fix srpm builds after fe065f8d90b0Sergei Golubchik2021-12-061-1/+2
| | | | |
| | | | * fix ./mtr --manual warning after f5441ef4dac9Sergei Golubchik2021-12-061-1/+1
| | | | |
| | | | * MDEV-27088: lf unit tests - cycles insufficientMartin Beck2021-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Per bug report, cycles was woefully insufficient to detect any implementation error.
| | | | * MDEV-27088: Server crash on ARM (WMM architecture) due to missing barriers ↵Martin Beck2021-11-302-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in lf-hash MariaDB server crashes on ARM (weak memory model architecture) while concurrently executing l_find to load node->key and add_to_purgatory to store node->key = NULL. l_find then uses key (which is NULL), to pass it to a comparison function. The specific problem is the out-of-order execution that happens on a weak memory model architecture. Two essential reorderings are possible, which need to be prevented. a) As l_find has no barriers in place between the optimistic read of the key field lf_hash.cc#L117 and the verification of link lf_hash.cc#L124, the processor can reorder the load to happen after the while-loop. In that case, a concurrent thread executing add_to_purgatory on the same node can be scheduled to store NULL at the key field lf_alloc-pin.c#L253 before key is loaded in l_find. b) A node is marked as deleted by a CAS in l_delete lf_hash.cc#L247 and taken off the list with an upfollowing CAS lf_hash.cc#L252. Only if both CAS succeed, the key field is written to by add_to_purgatory. However, due to a missing barrier, the relaxed store of key lf_alloc-pin.c#L253 can be moved ahead of the two CAS operations, which makes the value of the local purgatory list stored by add_to_purgatory visible to all threads operating on the list. As the node is not marked as deleted yet, the same error occurs in l_find. This change three accesses to be atomic. * optimistic read of key in l_find lf_hash.cc#L117 * read of link for verification lf_hash.cc#L124 * write of key in add_to_purgatory lf_alloc-pin.c#L253 Reviewers: Sergei Vojtovich, Sergei Golubchik Fixes: MDEV-23510 / d30c1331a18d875e553f3fcf544997e4f33fb943
| | | | * MDEV-26553 NOT IN subquery construct crashing 10.1 and upIgor Babaev2021-11-264-1/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug was introduced by commit be00e279c6061134a33a8099fd69d4304735d02e The commit was applied for the task MDEV-6480 that allowed to remove top level disjuncts from WHERE conditions if the range optimizer evaluated them as always equal to FALSE/NULL. If such disjuncts are removed the WHERE condition may become an AND formula and if this formula contains multiple equalities the field JOIN::item_equal must be updated to refer to these equalities. The above mentioned commit forgot to do this and it could cause crashes for some queries. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| | | * | MDEV-21108 Add option for setting install paths of groongabb-10.3-robertLukas Javorsky2021-12-022-2/+6
| | | | | | | | | | | | | | | | | | | | Include gronnga and groonga-normalizer-mysql install path
| * | | | MDEV-27190 InnoDB upgrade from 10.2, 10.3, 10.4 is not crash-safeMarko Mäkelä2021-12-071-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During startup, InnoDB must write a FILE_CHECKPOINT record. However, before MDEV-12353 (in MariaDB Server 10.2, 10.3, 10.4) the corresponding record MLOG_CHECKPOINT was encoded in a different way. When we are upgrading from a logically empty 10.2, 10.3, or 10.4 redo log, we must not write anything to the old log file, because if the server were killed during the upgrade, we would end up with a corrupted log file, and both the old and the new server would refuse to start up. On upgrade, we must simply create a new logically empty log file and replace the old ib_logfile0 with that.
| * | | | MDEV-27183 optimize std::map lookup in during crash recoverybb-10.5-MDEV-27183-map-lookup-recoveryEugene Kosov2021-12-072-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a low hanging fruit. Before this patch std::map::emplace() was a ~50% of the whole recv_sys_t::parse() operation in by test. After the fix it's only ~20%. recv_sys_t::parse() recv_sys_t::pages is a collection of all pages to recovery. Often, there are multiple changes for a single page. Often, they go in a row and for such cases let's avoid lookup in a std::map. cached_pages_it serves as a cache of size 1. recv_sys_t::add(): replace page_id argument with a std::map::iterator
| * | | | cleanup: reduce code bloatbb-10.5-kevgsEugene Kosov2021-12-062-61/+60
| | | | |
* | | | | MDEV-27058 fixup: GCC 11 -march=i686 -Warray-boundsMarko Mäkelä2021-12-041-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | page_zip_des_t::clear(): Avoid a bogus GCC warning with some pointer arithmetics. Yes, storing the unrelated member "fix" in this object is ugly, but it avoids memory alignment overhead on 64-bit architectures.
* | | | | Merge 10.5 into 10.6Marko Mäkelä2021-12-0428-201/+188
|\ \ \ \ \ | |/ / / /
| * | | | Correct some commentsMarko Mäkelä2021-12-032-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | In commit aae3f921adec9b9d1bff093c9a75a94e44f5c8d4 recv_apply_hashed_log_recs() was replaced by recv_sys_t::apply().
| * | | | MDEV-27139 32-bit systems fail to use big innodb-log-file-sizeEugene Kosov2021-12-031-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | log_write_buf(): do not cast to size_t which prevents to write to files which a bigger that 4G and remove useless assertion
| * | | | Merge 10.4 into 10.5Marko Mäkelä2021-12-0324-187/+182
| |\ \ \ \ | | |/ / /
| | * | | MDEV-27160 Out of memory in main.long_uniquest-10.4-markoMarko Mäkelä2021-12-034-70/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A part of the test main.long_unique attempts to insert records with two 60,000,001-byte columns. Let us move that test into a separate file main.long_unique_big, declared as big test, so that it can be skipped in environments with limited memory.
| | * | | Use mysqladmin ping instead of pid filesChristopher Odenbach2021-12-031-2/+2
| | | | | | | | | | | | | | | How 'bout know?
| | * | | Fix logrotate problem with twice configured pid-file optionChristopher Odenbach2021-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi, if the pid-file option is configured more than once (e.g. multiple times in different files), my_print_defaults prints it twice, resulting in the logrotate postrotate script failing because of a syntax error. Debian fixed this already (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830976#42). Perhaps you could implement this small change in the other branches as well? Thanks, Christopher
| | * | | Fix bad galera testsJan Lindström2021-12-0118-112/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * galera_kill_applier : we should make sure that node has correct number of wsrep appliers * galera_bad_wsrep_new_cluster: This test restarts both nodes, so it is bad on mtr. Make sure it is run alone * galera_update_limit : Make sure we have PK when needed galera_as_slave_replay : bf abort was not consistent * galera_unicode_pk : Add wait_conditions so that all nodes are part of cluster and DDL and INSERT has replicated before any further operations are done. * galera_bf_abort_at_after_statement : Add wait_conditions to make sure all nodes are part of cluster and that DDL and INSERT has replicated. Make sure we reset DEBUG_SYNC.
| | * | | Make the Optimizer Trace of reqular query and PS EXECUTE be identicalbb-10.4-spetruniaSergei Petrunia2021-11-291-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Print this piece when we've just made the choice to convert to semi-join. Also, print it when we've already made that choice before: transformation": { "select_id": 2, "from": "IN (SELECT)", "to": "semijoin", "chosen": true }
| * | | | MDEV-12353 fixup: Correct a commentMarko Mäkelä2021-12-011-2/+2
| | | | | | | | | | | | | | | | | | | | Several EXTENDED type records have already been implemented.
| * | | | MDEV-27088: Server crash on ARM (WMM architecture) due to missing barriers ↵Martin Beck2021-11-302-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in lf-hash (10.5) MariaDB server crashes on ARM (weak memory model architecture) while concurrently executing l_find to load node->key and add_to_purgatory to store node->key = NULL. l_find then uses key (which is NULL), to pass it to a comparison function. The specific problem is the out-of-order execution that happens on a weak memory model architecture. Two essential reorderings are possible, which need to be prevented. a) As l_find has no barriers in place between the optimistic read of the key field lf_hash.cc#L117 and the verification of link lf_hash.cc#L124, the processor can reorder the load to happen after the while-loop. In that case, a concurrent thread executing add_to_purgatory on the same node can be scheduled to store NULL at the key field lf_alloc-pin.c#L253 before key is loaded in l_find. b) A node is marked as deleted by a CAS in l_delete lf_hash.cc#L247 and taken off the list with an upfollowing CAS lf_hash.cc#L252. Only if both CAS succeed, the key field is written to by add_to_purgatory. However, due to a missing barrier, the relaxed store of key lf_alloc-pin.c#L253 can be moved ahead of the two CAS operations, which makes the value of the local purgatory list stored by add_to_purgatory visible to all threads operating on the list. As the node is not marked as deleted yet, the same error occurs in l_find. This change three accesses to be atomic. * optimistic read of key in l_find lf_hash.cc#L117 * read of link for verification lf_hash.cc#L124 * write of key in add_to_purgatory lf_alloc-pin.c#L253 Reviewers: Sergei Vojtovich, Sergei Golubchik Fixes: MDEV-23510 / d30c1331a18d875e553f3fcf544997e4f33fb943
* | | | | MDEV-27014 InnoDB fails to restore page 0 from the doublewrite bufferbb-10.6-MDEV-27014Thirunarayanan Balathandayuthapani2021-12-013-4/+5
| | | | | | | | | | | | | | | | | | | | - Replaced the pointer parameter of validate_for_recovery() with uint32_t
* | | | | MDEV-27014 InnoDB fails to restore page 0 from the doublewrite bufferThirunarayanan Balathandayuthapani2021-11-293-11/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InnoDB fails to restore page0 from doublewrite buffer when the tablespace is being deferred. In that case, InnoDB doesn't find INIT_PAGE redo log record for page0 and it leads to failure. InnoDB should recovery page0 from doublewrite buffer.
* | | | | Make the Optimizer Trace of reqular query and PS EXECUTE be identicalbb-10.6-spetruniaSergei Petrunia2021-11-293-93/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Print this piece when we've just made the choice to convert to semi-join. Also, print it when we've already made that choice before: transformation": { "select_id": 2, "from": "IN (SELECT)", "to": "semijoin", "chosen": true }
* | | | | Merge 10.5 into 10.6Marko Mäkelä2021-11-2929-88/+617
|\ \ \ \ \ | |/ / / /
| * | | | Merge 10.4 into 10.5Marko Mäkelä2021-11-2931-86/+529
| |\ \ \ \ | | |/ / /
| | * | | Merge 10.3 into 10.4Marko Mäkelä2021-11-2929-87/+346
| | |\ \ \ | | | |/ /
| | | * | MDEV-27134: Sporadic failure of DROP DATABASE testMarko Mäkelä2021-11-292-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Let us create and drop a separate database for getting rid of the default database in the MDEV-22781 test.
| | | * | Merge 10.2 into 10.3Marko Mäkelä2021-11-2940-99/+897
| | | |\ \ | | | | |/
| | | | * MDEV-26972 MTR worker aborts after server restart failureSergei Golubchik2021-11-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | restore the old behavior where without a debugger mtr does not wait for mysqld to start. It was broken in feacc0aaf2
| | | | * MDEV-26755 innodb.undo_truncate: ilink::assert_linked(): Assertion `prev != ↵Sergei Golubchik2021-11-261-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0 && next != 0' failed close_connections() in mysqld.cc sends a signal to all threads. But InnoDB is too busy purging, doesn't react immediately. close_connections() waits 20 seconds, which isn't enough in this particular case, and then unlinks all threads from the list and forcibly closes their vio connection. InnoDB background threads have no vio connection to close, but they're unlinked all the same. So when later they finally notice the shutdown request and try to unlink themselves, they fail to assert that they're still linked. Fix: don't assert_linked, as another thread can unlink this THD anytime
| | | | * add a test casest-10.2-markoSergei Golubchik2021-11-262-0/+8
| | | | | | | | | | | | | | | | | | | | MDEV-20330 Combination of "," (comma), cross join and left join fails to parse
| | | | * MDEV-26558 Fix a deadlock due to cyclic dependencebb-10.2-robertryancaicse2021-11-241-1/+1
| | | | | | | | | | | | | | | Fix a potential deadlock bug between locks ctrl_mutex and entry->mutex
| | | | * mysql_install_db: remove MySQL referencesDaniel Black2021-11-241-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | MySQL documentation isn't going to help our users and we shouldn't refer to it.
| | | | * MDEV-27066: Fixed scientific notation parsing bugMarc Olivier Bergeron2021-11-243-2/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug occurs where the float token containing a dot with an 'e' notation was dropped from the request completely. This causes a manner of invalid SQL statements like: select id 1.e, char 10.e(id 2.e), concat 3.e('a'12356.e,'b'1.e,'c'1.1234e)1.e, 12 1.e*2 1.e, 12 1.e/2 1.e, 12 1.e|2 1.e, 12 1.e^2 1.e, 12 1.e%2 1.e, 12 1.e&2 from test; To be parsed correctly as if it was: select id, char(id), concat('a','b','c'), 12*2, 12/2, 12|2, 12^2, 12%2, 12&2 from test.test; This correct parsing occurs when e is followed by any of: ( ) . , | & % * ^ /
| | | | * MDEV-22522 RPM packages have meaningless summary/descriptionbb-10.2-MDEV-22522Alexey Bychko2021-11-2310-47/+60
| | | | | | | | | | | | | | | | | | | | | | | | | this patch moves cpack summury and description for optional packages to the appropriate CMakeLists.txt files
| | | | * MDEV-26915: SST scripts do not take log_bin_index setting into accountbb-10.2-MDEV-26915-galeraJulius Goryavsky2021-11-237-10/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, SST scripts assume that the filename specified in the --log-bin-index argument either does not contain an extension or uses the standard ".index" extension. Similar assumptions are used for the log_bin_index parameter read from the configuration file. This commit adds support for arbitrary extensions for the index file paths.
| | | | * MDEV-26064: mariabackup SST fails when starting with --innodb-force-recoveryJulius Goryavsky2021-11-238-2/+463
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the server is started with the --innodb-force-recovery argument on the command line, then during SST this argument can be passed to mariabackup only at the --prepare stage, and accordingly it must be removed from the --mysqld-args list (and it is not should be passed to mariabackup otherwise). This commit fixes a flaw in the SST scripts and add a test that checks the ability to run the joiner node in a configuration that uses --innodb-force-recovery=1.