summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* MDEV-28758: Mariabackup copies binary logs to backup directorybb-10.3-MDEV-27524-testsJulius Goryavsky2022-06-2720-76/+328
| | | | | | | | | | | This commit changes the default settings so that, by default, mariabackup will not copy binary logs files to the backup directory and will transfer only one (most recet) binary log file between nodes during SST. If the user wants to make a backup containing all binary logs or wants to transfer them all between nodes, then user must add the sst_max_binlogs=-1 option to the [sst] section, to one of the server configuration sections, or must use the equivalent command line option (when running mariabackup).
* MDEV-27524 addendum: additional testsJulius Goryavsky2022-06-2713-28/+45
|
* MDEV-22590 SIGSEGV in flush_all_key_blocks when changing key_buffer_size / ↵Oleksandr Byelkin2022-06-243-1/+44
| | | | | | | | ASAN: heap-use-after-free in flush_all_key_blocks Take into account that in preparation of a simple key cache for resizing no disk blocks might be assigned to it. Reviewer: IgorBabaev <igor@mariadb.com>
* MDEV-26562: galera-sst-mariabackup is failing due to missing ↵Julius Goryavsky2022-06-212-39/+70
| | | | | | | | | | | | xtrabackup_checkpoints This commit contains workaround for a bug known as 'Red Hat issue 1870279' (connection reset by peer issue in socat versions 1.7.3.3 to 1.7.4.0) which further causes crashes during SST using mariabackup (when openssl is used). Also fixed broken logic of automatic generation of the Diffie-Hellman parameters for socat version less than 1.7.3 (which defaults to 512-bit values instead of 2048-bit ones).
* MDEV-28884: include kernel information in crashing signal handlerDaniel Black2022-06-181-0/+10
| | | | | | | | | | | | | | | | | | | | | Recent adventures in liburing and btrfs have shown up some kernel version dependent bugs. Having a bug report of accurace kernel version can start to correlate these errors sooner. On Linux, /proc/version contains the kernel version. FreeBSD has kern.version (per man 8 sysctl), so include that too. Example output: Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us Core pattern: |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h Kernel version: Linux version 5.19.0-0.rc2.21.fc37.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1), GNU ld version 2.38-14.fc37) #1 SMP PREEMPT_DYNAMIC Mon Jun 13 15:27:24 UTC 2022 Segmentation fault (core dumped)
* remove invalid testSergei Golubchik2022-06-182-82/+0
| | | | | | | | | it starts an EXPLAIN of a multi-table join and tries to KILL it. no sync points. depending on how fast the hareware is and optimizer development it might kill EXPLAIN at some random point in time (generally unrelated to the Bug#28598 it was supposed to test) or EXPLAIN might finish before the KILL and the test will fail.
* Fix intermittent failures of innodb.stats_persistentMarko Mäkelä2022-06-172-4/+5
| | | | | | | | We do not really care about the exact result; we only care that the statistics will be accessed. The result could change depending on when some statistics were updated in the background or when some committed delete-marked rows were purged from other tables on which persistent statistics are enabled.
* MDEV-21027 Assertion `part_share->auto_inc_initialized || ↵Shunsuke Tokunaga2022-06-168-5/+52
| | | | | | | | | | | | | | | | | !can_use_for_auto_inc_init()' failed in ha_partition::set_auto_increment_if_higher ha_partition::set_auto_increment_if_higher expects part_share->auto_inc_initialized is true or can_use_for_auto_inc_init() is false (but as the comment of this method says, it returns false only if we use Spider engine with DROP TABLE or ALTER TABLE query). However, part_share->auto_inc_initialized becomes true only after all partitions are opened (since 6dce6aecebe6ef78a14cb5c5c5daa8a355551e40). Therefore, I added a conditional expression in order to read all partitions when we execute REPLACE on a table that has an AUTO_INCREMENT column. Reviewed by: Nayuta Yanagisawa Reviewed by: Alexey Botchkov
* mtr: fix a race conditionSergei Golubchik2022-06-151-2/+6
| | | | | if a test can run in cond1,cond2 and cond1,cond3 then they can happen to run in parallel and both wanting to create test,cond1.result~
* cleanup: move the check out of the loopSergei Golubchik2022-06-151-10/+9
|
* MDEV-28656: Inability to roll upgrade without stopping the Galera clusterJulius Goryavsky2022-06-146-108/+196
|
* MDEV-28628: Change current Debian package revision schemeTuukka Pasanen2022-06-141-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current Debian package revision scheme when using debian/autobake-deb.sh script is: '1:VERSION+maria~LSBNAME' For example if VERSION can be like 10.6.8 and LSBNAME is buster then version and revision is: '1:10.6.8+maria~buster' Which can lead to problem as distro code names can be lexical unordered. For example Debian LSBNAME's can be: Codename Buster is Debian version 10 Codename Bookworm is Debian version 11 This happens because in ASCII table Buster first two digits are 'Bu' and they are in hex 0x42 and 0x75 and Bookworm first digits 'Bo' are they are in hex 0x42 and 0x6F When apt is upgrading it means that: 1:10.6.8+maria~buster is bigger than 1:10.6.8+maria~bookworm and that leads to problems in dist-upgrade process To solve problem revision format is changed to: '1:VERSION+maria~(deb|ubu)LSBVERSION' Example for Debian 11 is now: 1:10.6.8+maria~deb11 and for Ubuntu 22.04 is now: 1:10.6.8+maria~ubu2204 There are new Variables * VERSION which contains whole version string * LSBVERSION which contains LSB version of distro * LSBID which contains LSB ID (Debian or Ubuntu) added to debian/autobake-deb.sh. Also CODENAME is change to LSBNAME as it's more declaritive
* MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing ↵Nayuta Yanagisawa2022-06-135-7/+51
| | | | | | | | | | | | assertion: id != 0 on ALTER ... REBUILD PARTITION During rebuild of partition, the partitioning engine calls alter_close_table(), which does not unlock and close some table instances of the target table. Then, the engine fails to rename partitions because there are table instances that are still locked. Closing all the table instance of the target table fixes the bug.
* MDEV-27766: connect engine; INSERT ignore option, was ignoredMathew Heard2022-06-104-4/+42
| | | | | | | | | | Test prior to this change: CURRENT_TEST: connect.mysql mysqltest: At line 485: query 'INSERT IGNORE INTO t3 VALUES (5),(10),(30)' failed: ER_GET_ERRMSG (1296): Got error 122 '(1062) Duplicate entry '10' for key 'PRIMARY' [INSERT INTO `t1` (`a`) VALUES (10)]' from CONNECT So the ignore table option wasn't getting passed to the remove server. Closes #2008
* MDEV-28666: Add correct 'Breaks' to make sure upgrade from 10.2 succeedsTuukka Pasanen2022-06-101-1/+2
| | | | | | | | | | | | File '/usr/bin/mariadb_config' has been moved from Debian package libmariadbd-dev to libmariadb-dev since MariaDB version 10.2 this leads to situation where upgrade will no succeed but fail with this kind of error message * trying to overwrite '/usr/bin/mariadb_config', which is also in package libmariadbd-dev 1:10.2.44+maria~bionic Add libmariadbd-dev to libmariadb-dev Debian control files 'Breaks' solve situation and upgrading won't error anymore
* MDEV-28779: ALTER TABLE IMPORT TABLESPACE corrupts an encrypted tableMarko Mäkelä2022-06-093-7/+27
| | | | | | | | | | | | | | | | PageConverter::update_header(): Remove an unnecessary write. The field that was originally called FIL_PAGE_FILE_FLUSH_LSN only made sense for the first page of the system tablespace (initially, for the first page of each file of the system tablespace). It never had any meaning for .ibd files, and it lost its original meaning in MariaDB Server 10.8.1 when commit b07920b634f455c39e3650c6163bec2a8ce0ffe0 (MDEV-27199) removed the ability to start without ib_logfile0. If the most significant 32 bits of the LSN are nonzero, this unnecessary write would write the wrong encryption key identifier to the page. The first page of any file is never encrypted, so normally those bytes should be 0 for any .ibd file.
* MDEV-25577 mariadb-tzinfo-to-sql generates superfluous warningsDaniel Lewart2022-06-091-20/+10
| | | | | | | | The zoneinfo directory is littered with non-timezone information files. These frequently contain extensions, not present in real timezone files. Alo leapseconds is frequently there and is not a timezone file.
* mysql.server.sh fix for non-Red Hat platformsGuiXiaoDi2022-06-091-5/+6
| | | | | | | | | The else condition is meant to be here to define the functions if the Red Hat include file isn't there. Fixes: commit 467011bcac3b3f42ae6f21dde8d88e78708b21d1 / MDEV-26614 RedHat -> Red Hat by Daniel Black
* Cleanup: Remove unused error code DB_FORCED_ABORTMarko Mäkelä2022-06-082-8/+2
| | | | | | MariaDB never supported this form of preemption via high-priority transactions. This error code shold not have been added in the first place, in commit 2e814d4702d71a04388386a9f591d14a35980bfe.
* MDEV-25273: fix typo (s/strucures/structures/)chansuke2022-06-081-1/+1
|
* main.help: flush help tables after modifying themSergei Golubchik2022-06-072-13/+14
| | | | | otherwise following tests that crash the server will see them corrupted
* typo fixed: [[space]] -> [[:space:]]Sergei Golubchik2022-06-071-1/+1
|
* MDEV-28749: restore_prev_nj_state() doesn't update cur_sj_inner_tables correctlySergei Petrunia2022-06-076-33/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Try 2) (Cherry-pick back into 10.3) The code that updates semi-join optimization state for a join order prefix had several bugs. The visible effect was bad optimization for FirstMatch or LooseScan strategies: they either weren't considered when they should have been, or considered when they shouldn't have been. In order to hit the bug, the optimizer needs to consider several different join prefixes in a certain order. Queries with "obvious" query plans which prune all join orders except one are not affected. Internally, the bugs in updates of semi-join state were: 1. restore_prev_sj_state() assumed that "we assume remaining_tables doesnt contain @tab" which wasn't true. 2. Another bug in this function: it did remove bits from join->cur_sj_inner_tables but never added them. 3. greedy_search() adds tables into the join prefix but neglects to update the semi-join optimization state. (It does update nested outer join state, see this call: check_interleaving_with_nj(best_table) but there's no matching call to update the semi-join state. (This wasn't visible because most of the state is in the POSITION structure which is updated. But there is also state in JOIN, too) The patch: - Fixes all of the above - Adds JOIN::dbug_verify_sj_inner_tables() which is used to verify the state is correct at every step. - Renames advance_sj_state() to optimize_semi_joins(). = Introduces update_sj_state() which ideally should have been called "advance_sj_state" but I didn't reuse the name to not create confusion.
* Fixed crashing when using DBUG_PUSH_EMPTYMonty2022-06-061-3/+2
| | | | | | | DBUG_PUSH_EMPTY is used by thr_mutex.cc. If there are 4G of DBUG_PUSH_EMPTY calls, then DBUG_POP_EMPTY will cause a crash when DBUGCloseFile() will try to free an object that was never allocated.
* MDEV-27697 fixup: Exclude debug code from non-debug buildsMarko Mäkelä2022-06-031-3/+3
|
* MDEV-28719: compress_write() leaks data_mutex on errorMarko Mäkelä2022-06-011-12/+11
|
* MDEV-28716: Portability: unlink() can return EPERM instead of EISDIRMarko Mäkelä2022-06-011-0/+1
|
* Fixed bug in ma_loghandler.cc that could cause an assertMonty2022-05-301-10/+2
| | | | | | | | The assert happens in 10.6 with the following command: ./mtr --no-reorder --verbose-restart main.update_ignore_216 main.upgrade_MDEV-19650 main.upgrade_MDEV-23102-1 main.upgrade_MDEV-23102-2 main.upgrade_geometrycolumn_procedure_definer main.upgrade_mdev_24363 main.varbinary sys_vars.aria_log_file_size_basic Reviewer: Oleksandr Byelkin <sanja@mariadb.com>
* Remove compiler warning about unused variablesMonty2022-05-301-0/+2
|
* MDEV-28689, MDEV-28690: Incorrect error handling for ctrl_mutexMarko Mäkelä2022-05-301-55/+22
| | | | | | | | | | | | | | | | | comp_thread_ctxt_t: Remove ctrl_mutex, ctrl_cond, started. We do not actually need them for anything. destroy_worker_thread(): Split from destroy_worker_threads(). create_worker_threads(): We already initialize thd->data_avail=FALSE and thd->cancelled=FALSE before invoking pthread_create(). If any thread creation fails, clean up by destroy_worker_thread(). compress_worker_thread_func(): Assume that thd->started and thd->data_avail are already initialized. Reviewed by: Vladislav Vaintroub
* MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead ↵Masashi Tomooka2022-05-303-2/+33
| | | | | | | | | | | | of ER_WRONG_OBJECT ER_CHECK_NO_SUCH_TABLE was raised because a view does not have the corresponding TABLE instance connected to TABLE_LIST and the server interprets the absence as the absence of the table itself. To fix the problem, we add a check to ensure that the target table to be swapped with a partition is not a view. Reviewed by: Nayuta Yanagisawa
* MDEV-9020: Connect issues ALTER TABLE DISABLE KEYS when inserting dataMathew Heard2022-05-271-19/+0
| | | | | | | | | If the connecting user doesn't have alter table privilege this isn't allowed. This patch removes enable / disable key commands that should never have been here Closes #2002
* Add option --enable-cleartext-plugin to the MariaDB clientTing Nian2022-05-265-1/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For compatibility reasons, add the option to the MariaDB client without any functional changes besides simply accepting the option and emitting a warning that it is obsolete. In MySQL this security related option is compulsory in certain use cases. When users switch to MariaDB, this client command that used to work starts failing without a sensible error message. In worst case users resort to re-installing the mysql client from MySQL. In MariaDB the option is obsolete and should simply be ignored. Users however don't have any opportunity to learn that unless the client program tells them so. Before: mysql --enable-cleartext-plugin ... mysql: unknown option '--enable-cleartext-plugin' (program terminates) After: mysql --enable-cleartext-plugin ... WARNING: option '--enable-cleartext-plugin' is obsolete. (program executes) All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
* remove obsolete fix_session_vcol_expr{,_for_read} function declarationskkz2022-05-261-3/+0
|
* MDEV-25257 SEGV in fts_get_next_doc_id upon some INSERTThirunarayanan Balathandayuthapani2022-05-253-0/+31
| | | | | | - InnoDB fails to create a fts cache while loading the innodb fts table which is stored in system tablespace. InnoDB should create the fts cache while loading FTS_DOC_ID column from system column.
* MDEV-28583: post-merge fixesJulius Goryavsky2022-05-235-1071/+454
|
* Merge branch '10.3' into bb-10.3-releaseOleksandr Byelkin2022-05-207-5/+161
|\
| * bump the VERSIONDaniel Bartholomew2022-05-201-1/+1
| |
| * MDEV-28246 Optimizer uses all partitions after upgrade to 10.3Oleg Smirnov2022-05-193-2/+122
| | | | | | | | | | | | | | Cause: a copy of the joined TABLE_LIST is created during multi_update::prepare and TABLE::pos_in_table_list of the tables are set to point to the new TABLE_LIST object. This prevents some optimization steps to perform correctly. Solution: do not update pos_in_table_list during multi_update::prepare
| * MDEV-14642 Assertion 'table->s->db_create_options == ↵KiyoshiTakeda2022-05-183-2/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | part_table->s->db_create_options' failed in compare_table_with_partition When trying to execute ALTER TABLE EXCHANGE PARTITION with different definitions, assertion table->s->db_create_options == part_table->s->db_create_options failed in compare_table_with_partition(). However, this execution should not be allowed since executing 'exchange partition' requires the identical structure of the two tables. To fix the problem, I deleted the assertion code and added code that returns an error that indicates tables have different definitions. Reviewed By: Nayuta Yanagisawa
* | Merge branch '10.2' into 10.3mariadb-10.3.35Sergei Golubchik2022-05-183-2/+121
|\ \ | | | | | | | | | commit 84984b79f27 is null-merged
| * | Revert "MDEV-27524: Incorrect binlogs after Galera SST using rsync and ↵bb-10.2-sergSergei Golubchik2022-05-1729-1312/+492
| | | | | | | | | | | | | | | | | | mariabackup" This reverts commit 17e0f5224c8339ec08707a6ad0397bbf8c19bbd3.
| * | MDEV-28550: improper handling of replication event group that contains ↵Brandon Nesterenko2022-05-132-0/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Gtid_log_list_event If a slave received a fake GLLE event after a GTID event it would terminate the group. This adds a test for the previous commit which fixed this issue (939672a). Review by Andrei Elkin <andrei.elkin@mariadb.com>
| * | MDEV-28550 improper handling of replication event group that containsAndrei2022-05-131-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GTID_LIST_EVENT or INCIDENT_EVENT. It's legal to have either of the two inside a group. E.g Gtid_event, Gtid_log_list_event, Query_1, ... Xid_log_event is permitted. However, the slave IO thread treated both as the terminal even when the group represents a DDL query. That causes a premature Gtid state update so the slave IO would think the whole group has been collected while in fact Query_1 etc are yet to process. Fixed with correcting a condition to compute the terminal event of the group. Tested with rpl_mysqlbinlog_slave_consistency (of 10.9) and rpl_gtid_errorlog.test.
* | | MDEV-28583: Galera: binlogs disappear after rsync ISTJulius Goryavsky2022-05-189-145/+945
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit sends a flag indicating the presence of the "--bypass" option from the donor node to the joiner nodes during rsync IST, because without such a flag it is impossible to distinguish IST from the SST on the joiner nodes (in IST/SST scripts, because the "--bypass" option is still not passed to scripts from server code). Specifically, this fixes an issue with binary logs disappearing after IST (via rsync). There are also changes to diagnostic messages here that will make it easier to diagnose script-related problems in the future when debugging and when checking the logs. This commit also adds more robust signal handlers - to handle exceptions during script execution. These handlers won't mask some crashes and it also unifies exit codes between different scripts. These changes have already been helpful to debugging "bypass" flag handling.
* | | MDEV-28423: Galera IST is failing on Joiner nodeJulius Goryavsky2022-05-186-27/+799
| | | | | | | | | | | | | | | | | | | | | | | | This commit fixes an issue with IST handling in version 10.9 which is a regression after MDEV-26971 and related to trying to get a non-existent "total" tag on the IST branch (this tag is only defined in SST mode).
* | | MDEV-28552 Assertion `inited==RND' failed in handler::ha_rnd_endAleksey Midenkov2022-05-184-3/+30
| | | | | | | | | | | | | | | We cannot permanently change bits in read_partitions in the middle of processing because ha_rnd_init()/ha_rnd_end() depends on that.
* | | cleanup:have_log_bin.incSergei Golubchik2022-05-182-6/+3
| | | | | | | | | | | | | | | prefer if/skip over require (works better with debugging, not affected by query log)
* | | fix tests for embeddedSergei Golubchik2022-05-184-15/+18
| |/ |/| | | | | followup for c9b5a05341d7
* | MDEV-28588 SIGSEGV in __memmove_avx_unaligned_erms, strmake_rootAlexander Barkov2022-05-173-1/+42
| |