summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* enable -Wenum-compare -Wenum-conversionSergei Golubchik2022-05-156-23/+21
| | | | | to make the all headers -std=c++20 clean for those, who need c++20 (some plugins)
* fix plugin.multiauth test for FreeBSDSergei Golubchik2022-05-093-17/+2
| | | | remove AIX support, as 10.4 is not tested on AIX, so cannot test a regex
* 10.4 specific fixes for DEFAULT()Sergei Golubchik2022-05-095-1/+54
|
* cleanup: testSergei Golubchik2022-05-092-23/+35
|
* Merge branch '10.3' into 10.4Sergei Golubchik2022-05-08197-1289/+5208
|\
| * can't use Item_default_value as a field if it's an expression OR a blobSergei Golubchik2022-05-081-1/+1
| | | | | | | | | | | | Fixed failing main.default on Windows (to trigger an assert the test needed a debug build without safemalloc, as 0xa5 happened to have the important bit set "correctly")
| * these tests need ipv6Sergei Golubchik2022-05-082-2/+4
| |
| * Merge branch '10.2' into 10.3Sergei Golubchik2022-05-0731-112/+648
| |\
| | * MDEV-28310 Missing binlog data for INSERT .. ON DUPLICATE KEY UPDATEAndrei2022-05-0610-54/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MDEV-21810 MBR: Unexpected "Unsafe statement" warning for unsafe IODKU MDEV-17614 fixes to replication unsafety for INSERT ON DUP KEY UPDATE on two or more unique key table left a flaw. The fixes checked the safety condition per each inserted record with the idea to catch a user-created value to an autoincrement column and when that succeeds the autoincrement column would become the source of unsafety too. It was not expected that after a duplicate error the next record's write_set may become different and the unsafe decision for that specific record will be computed to screw the Query's binlogging state and when @@binlog_format is MIXED nothing gets bin-logged. This case has been already fixed in 10.5.2 by 91ab42a823 that relocated/optimized THD::decide_logging_format_low() out of the record insert loop. The safety decision is computed once and at the right time. Pertinent parts of the commit are cherry-picked. Also a spurious warning about unsafety is removed when MIXED @@binlog_format; original MDEV-17614 test result corrected. The original test of MDEV-17614 is extended and made more readable.
| | * MDEV-28402 ASAN heap-use-after-free in create_tmp_table, Assertion `l_offset ↵Oleksandr Byelkin2022-05-063-3/+40
| | | | | | | | | | | | | | | | | | | | | >= 0 && table->s->rec_buff_length - l_offset > 0' Make default() function follow Item_field and use get_tmp_table_item() for change_to_use_tmp_fields().
| | * Update test results after fix for MDEV-19398Sergei Petrunia2022-05-061-0/+42
| | |
| | * MDEV-28478: INSERT into SPATIAL INDEX in TEMPORARY table writes logMarko Mäkelä2022-05-066-19/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | row_ins_sec_index_entry_low(): If a separate mini-transaction is needed to adjust the minimum bounding rectangle (MBR) in the parent page, we must disable redo logging if the table is a temporary table. For temporary tables, no log is supposed to be written, because the temporary tablespace will be reinitialized on server restart. rtr_update_mbr_field(): Plug a memory leak.
| | * MDEV-28437: Assertion `!eliminated' failed: Part #2Sergei Petrunia2022-05-051-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In SELECT_LEX::update_used_tables(), do not run the loop setting tl->table->maybe_null when tl is an eliminated table (Rationale: First, with current table elimination, tl already has maybe_null=1. Second, one should not care what flags eliminated tables had)
| | * MDEV-28437: Assertion `!eliminated' failed in Item_subselect::execSergei Petrunia2022-05-055-4/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (This is the assert that was added in fix for MDEV-26047) Table elimination may remove an ON expression from an outer join. However SELECT_LEX::update_used_tables() will still call item->walk(&Item::eval_not_null_tables) for eliminated expressions. If the subquery is constant and cheap Item_cond_and will attempt to evaluate it, which will trigger an assert. The fix is not to call update_used_tables() or eval_not_null_tables() for ON expressions that were eliminated.
| | * MDEV-19398: Assertion `item1->type() == Item::FIELD_ITEM ...Sergei Petrunia2022-05-045-10/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Window Functions code tries to minimize the number of times it needs to sort the select's resultset by finding "compatible" OVER (PARTITION BY ... ORDER BY ...) clauses. This employs compare_order_elements(). That function assumed that the order expressions are Item_field-derived objects (that refer to a temp.table). But this is not always the case: one can construct queries order expressions are arbitrary item expressions. Add handling for such expressions: sort them according to the window specification they appeared in. This means we cannot detect that two compatible PARTITION BY clauses that use expressions can share the sorting step. But at least we won't crash.
| | * Use proper pid namespaceanel2022-05-042-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: ============== By testing `pgrep` with `--ns` option, introduced with MDEV-21331, commit fb7c1b9415c9a8b0dc2e86ae44f0e7a2634e5d7e, I noted that: a) `--ns` cannot use more than single PID. b) `--ns` is returning the processes of the namespace to which supplied PID belongs to. So by that sense command `pgrep -x --ns $$ mysqld` will always return an error and skip checking of the existing PID of the server. Solution: ============== Suggested solution is to add `--nslist pid`, since `--ns` needs to know in which namespace type it should look for. See `pgrep --help` for different namespace types. Note also that this works *only* if script is run as a `root` (we have that case here). Current PR is a part of: 1. MDEV-21331: sync preinst and postrm script 2. MDEV-15718: check for exact mysqld process This commit: a) fixes fb7c1b9415c9a8b0dc2e86ae44f0e7a2634e5d7e b) Closes PR #2068 (obsolete) c) Closes PR #2069 (obsolete) Thanks Faustin Lammler <faustin@mariadb.org> for testing and verifying Reviewed by <>
| * | MDEV-27816: Set sql_mode before DROP IF EXISTS already (postfix)Daniel Black2022-05-071-8/+8
| | | | | | | | | | | | Test compat/oracle.sp-package-mysqldump needed re-record.
| * | MDEV-4875 Can't restore a mysqldump if --add-drop-database meets general_logDaniel Black2022-05-063-121/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | or slow query log when the log_output=TABLE. When this happens, we temporary disable by changing log_output until we've created the general_log and slow_log tables again. Move </database> in xml mode until after the transaction_registry. General_log and slow_log tables where moved to be first to be dumped so that the disabling of the general/slow queries is minimal.
| * | MDEV-27816 Set sql_mode before DROP IF EXISTS alreadyHartmut Holzgraefe2022-05-068-49/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the correct SQL mode for a stored routine or package was only set before doing the CREATE part, this worked out for PROCEDUREs and FUNCTIONs, but with ORACLE mode specific PACKAGEs the DROP also only works in ORACLE mode. Moving the setting of the sql_mode a few lines up to happen right before the DROP statement is writen fixes this.
| * | MDEV-28388: As Travis is not used anymore remove configurations filesTuukka Pasanen2022-05-052-245/+0
| | | | | | | | | | | | | | | As Travis is not used anymore for CI is not wise to keep untested CI files laying around that someone can base their effort to update un-used files.
| * | MDEV-12275: Add switch '--silent' to SySV init upgradeTuukka Pasanen2022-05-051-1/+1
| | | | | | | | | | | | | | | | | | Debian script debian-start upgrades database (which can be huge) and prints lots of unnecessary information (not errors). Add '--silent' to only sport possible errors
| * | test fixes for FreeBSDSergei Golubchik2022-05-048-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * FreeBSD returns errno 31 (EMLINK, Too many links), not 40 (ELOOP, Too many levels of symbolic links) * (`mysqlbinlog|mysql`) was just crazy, why did it ever work? * socket_ipv6.inc check (that checked whether ipv6 is supported) only worked correctly when ipv6 was supported * perfschema.socket_summary_by_instance was changing global variables and then skip-ing the test (because on missing ipv6)
| * | MDEV-17843 Assertion `page_rec_is_leaf(rec)' failed in ↵Vlad Lesin2022-05-041-17/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lock_rec_queue_validate upon SHOW ENGINE INNODB STATUS lock_validate() accumulates page ids under locked lock_sys->mutex, then releases the latch, and invokes lock_rec_block_validate() for each page. Some other thread has ability to add/remove locks and change pages between releasing the latch in lock_validate() and acquiring it in lock_rec_validate_page(). lock_rec_validate_page() can invoke lock_rec_queue_validate() for non-locked supremum, what can cause ut_ad(page_rec_is_leaf(rec)) failure in lock_rec_queue_validate(). The fix is to invoke lock_rec_queue_validate() only for locked records in lock_rec_validate_page(). The error message in lock_rec_block_validate() is not necessary as BUF_GET_POSSIBLY_FREED mode is used to get block from buffer pool, and this is not error if a block was evicted. The test case would require new debug sync point. I think it's not necessary as the fixed code is debug-only.
| * | Merge branch '10.2' into 10.3Oleksandr Byelkin2022-05-03111-551/+2662
| |\ \ | | |/
| | * New CC 3.1Oleksandr Byelkin2022-05-021-0/+0
| | |
| | * MDEV-28446 mariabackup prepare fails for incrementals if a new schema is ↵Alexander Barkov2022-05-023-2/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | created after full backup is taken When "mariabackup --target-dir=$basedir --incremental-dir=$incremental_dir" is running and is moving a new table file (e.g. `db1/t1.new`) from the incremental directory to the base directory, it needs to verify that the base backup database directory (e.g. `$basedir/db1`) really exists (or create it otherwise). The table `db1/t1` can come from a new database `db1` which was created during the base mariabackup execution time. In such case the directory `db1` exists only in the incremental directory, but does not exist in the base directory.
| | * Bug#33578113: DROP privilege on performance_schema.* can't be revokedSergei Golubchik2022-04-282-9/+19
| | | | | | | | | | | | test case only
| | * MDEV-28428 Master_SSL_Crl shows Master_SSL_CA value in SHOW SLAVE STATUS outputSergei Golubchik2022-04-284-4/+12
| | | | | | | | | | | | it was showing ca and capath instead of crl and crl_path
| | * MDEV-28268: Server crashes in Expression_cache_tracker::fetch_current_statsSergei Petrunia2022-04-284-1/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Expression_cache_tmptable object uses an Expression_cache_tracker object to report the statistics. In the common scenario, Expression_cache_tmptable destructor sets tracker->cache=NULL. The tracker object survives after the expression cache is deleted and one may call cache_tracker->fetch_current_stats() for it with no harm. However a degenerate cache with no parameters does not set tracker->cache=NULL in Expression_cache_tmptable destructor which results in an attempt to use freed data in the cache_tracker->fetch_current_stats() call. Fixed by setting tracker->cache to NULL and wrapping the assignment into a function.
| | * MDEV-28417 Merge new release of InnoDB 5.7.38 to 10.2Marko Mäkelä2022-04-277-34/+105
| | |\
| | | * MDEV-28416 Incorrect AUTO_INCREMENT may be issued when close to UINT64_MAXMarko Mäkelä2022-04-275-9/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ha_innobase::get_auto_increment(): In the overflow check, account for 64-bit unsigned integer wrap-around. Based on mysql/mysql-server@25ecfe7f49b5a649e96d462cb90602de9de3b919
| | | * MDEV-28415 ALTER TABLE on a large table hangs InnoDBMarko Mäkelä2022-04-271-24/+3
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | buf_flush_page(): Never wait for a page latch, even in checkpoint flushing (flush_type == BUF_FLUSH_LIST), to prevent a hang of the page cleaner threads when a large number of pages is latched. In mysql/mysql-server@9542f3015b00330ef537f6223565b28b82a5b325 it was claimed that such a hang only affects CREATE FULLTEXT INDEX. Their fix was to retain buffer-fix but release exclusive latch on non-leaf pages, and subsequently write to those pages while they are not associated with the mini-transaction, which would trip a debug assertion in the MariaDB version of mtr_t::memo_modify_page() and cause potential corruption when using the default MariaDB setting innodb_log_optimize_ddl=OFF. This change essentially backports a small part of commit 7cffb5f6e8a231a041152447be8980ce35d2c9b8 (MDEV-23399) from MariaDB Server 10.5.7.
| | * MDEV-28020 CHECKSUM TABLE calculates different checksumsSergei Golubchik2022-04-264-8/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two bugs here: 1. CHECKSUM TABLE asserted that all fields in the table are arranged sequentially in the record, but virtual columns are always at the end, violating this assertion 2. virtual columns were not calculated for CHECKSUM, so CHECKSUM was using, essentially, garbage left from the previous statement. (that's why the test must use INSERT IGNORE to have this "previous statement" mark vcols not null) Fix: don't include virtual columns into the table CHECKSUM. Indeed, they cannot be included as the engine does not see virtual columns, so in-engine checksum cannot include them, meaning in-server checksum should not either
| | * New C/C versionOleksandr Byelkin2022-04-261-0/+0
| | | | | | | | | | | | *again* after 388032e9905 has reverted 25ccf8f6dcf by mistake
| | * MDEV-27697. Removed a false assert.Andrei2022-04-262-2/+0
| | |
| | * MDEV-25317 Assertion `scale <= precision' failed in decimal_bin_size And ↵Alexey Botchkov2022-04-269-17/+79
| | | | | | | | | | | | | | | | | | | | | | | | Assertion `scale >= 0 && precision > 0 && scale <= precision' failed in decimal_bin_size_inline/decimal_bin_size. Precision should be kept below DECIMAL_MAX_SCALE for computations. It can be bigger in Item_decimal. I'd fix this too but it changes the existing behaviour so problemmatic to ix.
| | * MDEV-27697. Two affected tests fixed.Andrei2022-04-264-2/+18
| | | | | | | | | | | | | | | A result file is updated in one case and former error simulation got refined.
| | * MDEV-26047: MariaDB server crash at Item_subselect::init_expr_cache_trackerSergei Petrunia2022-04-263-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The cause of crash: remove_redundant_subquery_clauses() removes redundant item expressions. The primary goal of this is to remove the subquery items. The removal process unlinks the subquery from SELECT_LEX tree, but does not remove it from SELECT_LEX:::ref_pointer_array or from JOIN::all_fields. Then, setup_subquery_caches() tries to wrap the subquery item in an expression cache, which fails, the first reason for failure being that the item doesn't have a query plan. Solution: do not wrap eliminated items with expression cache. (also added an assert to check that we do not attempt to execute them). This may look like an incomplete fix: why don't we remove any mention of eliminated item everywhere? The difficulties here are: * items can be "un-removed" (see set_fake_select_as_master_processor) * it's difficult to remove an element from ref_pointer_array: Item_ref objects refer to elements of that array, so one can't shift elements in it. Replacing eliminated subselect with a dummy Item doesn't look like a good idea, either.
| | * MDEV-20207: Assertion ! is_set() failed in Diagnostics_area::set_eof_statusRucha Deodhar2022-04-269-1/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | upon HANDLER READ Analysis: The error state is not stored while checking condition and key name. Fix: Return true while checking condition and key name if error is reported because geometry object can't be created from the data in the index value for HANDLER READ.
| | * New CC versionOleksandr Byelkin2022-04-261-0/+0
| | |
| | * MDEV-6899 extra semicolon in show create event syntaxSergei Golubchik2022-04-256-8/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to detect the end of SP definition correctly we need to know where the parser stopped parsing the SP. lip->get_cpp_ptr() shows the current parsing position, lip->get_cpp_tok_start() shows the start of the last parsed token. The actual value depends on whether the parser has performed a look-ahead. For example, in CREATE PROCEDURE ... BEGIN ... END ; the parser reads 'END' and knows that this ends the procedure definition, it does not need to read the next token for this. But in CREATE PROCEDURE ... SELECT 1 ; the parser cannot know that the procedure ends at '1'. It has to read the semicolon first (it could be '1 + 2' for example). In the first case, the "current parsing position" is after END, before the semicolon, in the second case it's *after* the semicolon. Note that SP definition in both cases ends before the semicolon. To be able to detect the end of SP deterministically, we need the parser to do the look-ahead always or never. The bug fix introduces a new parser token FORCE_LOOKAHEAD. Lexer never returns it, so this token can never match. But the parser cannot know it so it will have to perform a look-ahead to determine that the next token is not FORCE_LOOKAHEAD. This way we deterministically end SP parsing with a look-ahead.
| | * MDEV-28393 Server crashes in TABLE::mark_default_fields_for_writeSergei Golubchik2022-04-252-0/+24
| | | | | | | | | | | | test only
| | * cleanup: main.create_select testSergei Golubchik2022-04-252-18/+24
| | |
| | * MDEV-28403 ASAN heap-use-after-free in String::copy / get_field_default_valueSergei Golubchik2022-04-253-6/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5ba77222e9fe7af8ff403816b5338b18b342053c but keeps the test. A different fix for MDEV-21028 Server crashes in Query_arena::set_query_arena upon SELECT from view internal temporary tables should use THD as expr_area
| | * MDEV-27212 Crash in Item_equal::sort on second execution of stored procedurebb-10.2-igorIgor Babaev2022-04-253-1/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug could cause a crash of the server at the second call of a stored procedure when it executed a query containing a mergeable derived table / view whose specification used another mergeable derived_table or view and a subquery with outer reference in the select list of the specification. Such queries could cause the same problem when they were executed for the second time in a prepared mode. The problem appeared due to a typo mistake in the legacy code of the function create_view_field() that prevented building Item_direct_view_ref wrapper for the mentioned outer reference at the second execution of the query and setting the depended_from field for the outer reference. Approved by Oleksandr Byelkin <sanja@mariadb.com>
| | * MDEV-27697 slave must recognize incomplete replication event groupAndrei2022-04-256-26/+292
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases of a faulty master or an incorrect binlog event producer, that slave is working with, sends an incomplete group of events slave must react with an error to not to log into the relay-log any new events that do not belong to the incomplete group. Fixed with extending received event properties check when slave connects to master in gtid mode. Specifically for the event that can be a part of a group its relay-logging is permitted only when its position within the group is validated. Otherwise slave IO thread stops with ER_SLAVE_RELAY_LOG_WRITE_FAILURE.
| | * MDEV-21037 mariabackup does not detect multi-source replication slaveAlexander Barkov2022-04-257-79/+510
| | |
| | * MDEV-28405 main.information_schema_tables fails sporadically with ↵Alexander Barkov2022-04-251-0/+5
| | | | | | | | | | | | ER_NEED_REPREPARE or extra warning
| | * MDEV-27065 fixup: disable tests under valgrindNayuta Yanagisawa2022-04-242-1/+2
| | | | | | | | | | | | | | | The server behaves differently on the DATA/INDEX DIRECTORY clause under valgrind because symlink is disabled under valgrind.
| | * MDEV-28263 mariadb-tzinfo-to-sql binlog fixesDaniel Black2022-04-2313-320/+357
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --skip-write-binlog message was confusing that it only had an effect if the galera was enabled. There are uses beyond galera so we apply SET SESSION SQL_LOG_BIN=0 as implied by the option without being conditional on the wsrep status. Remove wsrep.mysql_tzinfo_to_sql_symlink{,_skip} tests as they offered no additional coverage beyond main.mysql_tzinfo_to_sql_symlink as no server testing was done. Introduced a variant of the galera.mariadb_tzinfo_to_sql as galera.mysql_tzinfo_to_sql, which does testing using the mysql client rather than directly importing into the server via mysqltest. Update man page and mysql_tzinfo_to_sql to having a --skip-write-binlog option. merge notes: 10.4: - conflicts in tztime.cc can revert to this version of --help text. - tztime.cc - merge execute immediate @prep1, and leave %s%s trunc_tables, lock_tables after that. 10.6: - Need to remove the not_embedded.inc in mysql_tzinfo_to_sql.test and replace it with no_protocol.inc - leave both mysql_tzinfo_to_sql.test and mariadb_tzinfo_to_sql.sql tests. - sql/tztime.cc - keep entirely 10.6 version.