Commit graph

196727 commits

Author SHA1 Message Date
Sergei Golubchik
315f2e8b81 cleanup: remove *slow*_basic tests 2022-10-04 12:28:03 +02:00
Aleksey Midenkov
ba875e9396 MDEV-29664 Assertion `!n_mysql_tables_in_use' failed in innobase_close_connection
When ha_end_bulk_insert() fails F_UNLCK was done twice: in
select_insert::prepare_eof() and in select_create::abort_result_set().

Now we avoid making F_UNLCK in prepare_eof() if error is non-zero.
2022-09-30 23:58:08 +03:00
Sergei Golubchik
d026447101 Merge branch '10.10' into 10.11 2022-09-30 10:39:47 +02:00
Aleksey Midenkov
aa08a7442a MDEV-29620 Assertion `next_insert_id == 0' failed in handler::ha_external_lock
ha_release_auto_increment() must be done before F_UNLCK.
Non-atomic case is handled by select_insert::binlog_query().
2022-09-30 00:55:42 +03:00
Aleksey Midenkov
c579d66ba6 MDEV-29628 Memory leak after CREATE OR REPLACE with foreign key
MDEV-28933 added a condition to avoid keeping cached foreign keys when
renaming into temporary table. Such foreign keys must be freed.
2022-09-30 00:55:42 +03:00
Aleksey Midenkov
cb583b2f1b MDEV-29609 create_not_windows test fails with different result
make_tmp_name() creates temporary name with prefix containing PID and
TID. This prefix influences max length of the rest of the name (the
whole name is limited by NAME_LEN). During the test run PID and TID
can change. PID increases when the server restarts. TID is incremented
with the new connections (generated by next_thread_id(), is not the
posix thread ID).

During the test run PID can increase max 2 decimal positions: from
tens to thousands this requires ~900 restarts. TID depends on
connection count, but for test we assume it will not trespass 100000
connections which is 5 decimal positions. So it should be enough to
reserve 7 characters for PID and TID increment.

The patch reserves more: it reserves 12 characters for 7-decimal PID
and 5-decimal TID plus 4 chars of additional reserve (for future
prefix changes) and assumes minimal legth of the prefix is 30 bytes:

#sql-backup-PID-TID-
#sql-create-PID-TID-

4-6-PID-TID- is 10 + 4 + PID + TID, so PID + TID is 16 chars (7 + 5 + 4).
2022-09-30 00:55:42 +03:00
Aleksey Midenkov
dcd66c3814 MDEV-29544 SIGSEGV in HA_CREATE_INFO::finalize_locked_tables
Usually when we get into finalize_locked_tables() with error
m_locked_tables_count was not decremented. m_locked_tables_count is
decremented when we drop the original table and if we failed that
m_locked_tables_count is expected intact.

The bug comes from the fact that finalize_atomic_replace() violates
the above contract. It does HA_EXTRA_PREPARE_FOR_DROP and decrements
m_locked_tables_count. Then it tries rename_table_and_triggers() and
fails. With decremented m_locked_tables_count reopen_tables() does
nothing and we don't get new value for pos_in_locked_tables->table.

The test case demonstrates ER_ERROR_ON_RENAME where non-atomic CREATE
OR REPLACE would not fail. The original RENAME TABLE fails under such
broken environment, so nothing is wrong with atomic CREATE OR REPLACE
failing there too.
2022-09-30 00:55:42 +03:00
Sergei Golubchik
1ac8149b83 MDEV-29608 Default SSL makes mysqlslap much slower, tests fail with timeout
mysqlslap has an unusual semantics of the --iterations option, so that
$ mysqlslap --concurrency=16 --iterations=1000
performs 16,000 connections. Because of that it gets many times slower
with --ssl

Let's disable ssl for mysqlslap in mysql-test
2022-09-29 22:38:24 +02:00
Sergei Golubchik
530d19a320 after merge update *.result 2022-09-29 22:38:24 +02:00
asklavou
9bf5274929 MDEV-29517: rpl.rpl_change_master_demote sporadically fails in BB
Problem:
=======
Test Case 4 sporadically failed upon waiting for the slave to start during
master demotion to slave, due to a GTID event not existing in the new
master's binlog. If by chance the original slave (new master) did not yet
receive all the binlog events, then this failure could occur.

Solution:
========
Sync slave with master GTID  before master demotion.

Reviewed By:
============
Brandon Nesterenko <brandon.nesterenko@mariadb.com>
2022-09-27 17:57:33 -04:00
Sergei Golubchik
07581249e9 MDEV-29632 SUPER users created before 10.11 should retain READ_ONLY ADMIN privilege upon upgrade 2022-09-26 20:36:29 +02:00
Sergei Golubchik
e30f30d43b read_only failures 2022-09-23 22:41:59 +02:00
Monty
47dccace13 MDEV-29596 Separate SUPER and READ ONLY ADMIN privileges
The benefit of this is that one can remove the READ ONLY ADMIN privilege
from all users and this way ensure that no one can do any changes on
any non-temporary tables.

This is good option to use on slaves when one wants to ensure that the
slave is kept identical to the master.
2022-09-21 19:16:33 +03:00
Marko Mäkelä
49cee4e21a Merge 10.10 into 10.11 2022-09-21 11:25:57 +03:00
Marko Mäkelä
5e996fbad9 Merge 10.9 into 10.10 2022-09-21 10:59:56 +03:00
Marko Mäkelä
a8e4540476 Merge 10.8 into 10.9 2022-09-21 10:07:09 +03:00
Marko Mäkelä
4345d93100 Merge 10.7 into 10.8 2022-09-21 09:52:09 +03:00
Marko Mäkelä
7c7ac6d4a4 Merge 10.6 into 10.7 2022-09-21 09:33:07 +03:00
Marko Mäkelä
789f55c947 MDEV-28701 after-merge fix
Update the result of a ./mtr --ps-protocol test
2022-09-21 08:00:46 +03:00
Marko Mäkelä
44fd2c4b24 Merge 10.5 into 10.6 2022-09-20 16:53:20 +03:00
Marko Mäkelä
0792aff161 Merge 10.4 into 10.5 2022-09-20 13:17:02 +03:00
Marko Mäkelä
0c0a569028 Merge 10.3 into 10.4 2022-09-20 12:38:25 +03:00
Alexander Barkov
5dcc56be4d MDEV-29561 SHOW CREATE TABLE produces syntactically incorrect structure 2022-09-20 11:02:36 +04:00
Marko Mäkelä
5d9d379329 MDEV-15020 fixup: Make trx_t::apply_log() truly ATTRIBUTE_COLD 2022-09-20 09:14:04 +03:00
Daniel Bartholomew
4a7367d528
bump the VERSION 2022-09-19 10:57:07 -04:00
Daniel Bartholomew
90d899c30f
bump the VERSION 2022-09-19 10:33:31 -04:00
Daniel Bartholomew
b73c70c265
bump the VERSION 2022-09-19 10:02:09 -04:00
Vlad Lesin
5ab78cf340 MDEV-29515 innodb.deadlock_victim_race is unstable
The test is unstable because 'UPDATE t SET b = 100' latches a page and
waits for 'upd_cont' signal in lock_trx_handle_wait_enter sync point, then
purge requests RW_X_LATCH on the same page, and then 'SELECT * FROM t
WHERE a = 10 FOR UPDATE' requests RW_S_LATCH, waiting for RW_X_LATCH
requested by purge. 'UPDATE t SET b = 100' can't release page latch as
it waits for upd_cont signal, which must be emitted after 'SELECT * FROM
t WHERE a = 10 FOR UPDATE' acquired RW_S_LATCH. So we have a deadlock,
which is resolved by finishing the debug sync point wait by timeout, and
the 'UPDATE t SET b = 100' releases it's record locks rolling back the
transaction, and 'SELECT * FROM t WHERE a = 10 FOR UPDATE' is finished
successfully instead of finishing by lock wait timeout.

The fix is to forbid purging during the test by opening read view in a
separate connection before the first insert into the table.

Besides, 'lock_wait_end' syncpoint is not needed, as it enough to wait
the end of the SELECT execution to let the UPDATE to continue.
2022-09-19 16:57:58 +03:00
Daniel Bartholomew
a762dad4ec
bump the VERSION 2022-09-19 09:38:01 -04:00
Andrew Hutchings
65b4a2afb8
MDEV-29426 Fix memory leak in CONNECT JSON/BSON ()
* MDEV-29426 Fix memory leak in CONNECT JSON/BSON

If information is being gathered on JSON/BSON tables we leak the heap
allocated to the table class. With this fix we close and cleanup
instead, just as we do for XML tables.
2022-09-19 13:25:45 +01:00
Marko Mäkelä
5e959bc363 Fix clang -Wunused-but-set-variable 2022-09-19 13:30:52 +03:00
Marko Mäkelä
3ab4b260e1 Merge innodb.cmake to CMakeLists.txt
The reason why mysql/mysql-server@8020cfac20
split the files was some unit tests that never existed in the
MariaDB Server code base. The storage/innobase/unittest/ works just fine
with this file.

This is reverting part of 2e814d4702
which applied InnoDB changes from MySQL 5.7.9.
2022-09-19 12:42:50 +03:00
Marko Mäkelä
73658eded3 Cleanup: Remove HAVE_IB_LINUX_FUTEX
The futex system calls were introduced in Linux 2.6.0,
which was released in December 2003. It should be safe to assume
that the system calls are always available on the Linux kernels
that MariaDB Server 10.3 would run on.
2022-09-19 12:36:19 +03:00
Marko Mäkelä
4c8b65db08 Cleanup: Remove INNODB_COMPILER_HINTS
There should be no point to disable branch prediction hints or prefetch.
2022-09-19 12:29:16 +03:00
Marko Mäkelä
c22dff21a5 InnoDB cleanup: Replace UNIV_LINUX, UNIV_SOLARIS, UNIV_AIX
Let us use the normal platform-specific preprocessor symbols
__linux__, __sun__, _AIX instead of some homebrew ones.

The preprocessor symbol UNIV_HPUX must have lost its meaning
by f6deb00a56 (note: the symbol
UNIV_HPUX10 is being checked for, but only UNIV_HPUX is defined).
2022-09-19 12:20:53 +03:00
Marko Mäkelä
fed0d85de7 MDEV-29559 Recovery of INSERT_HEAP_DYNAMIC into secondary index fails
log_phys_t::apply(): When parsing an INSERT_HEAP_DYNAMIC record,
allow ll==rlen to hold for the last part. A secondary index record
may inherit all preceding bytes from the infimum pseudo-record.

For INSERT_HEAP_REDUNDANT, some header bytes will always be present
because the header will never be copied from the page infimum.
We will tolerate ll==rlen also in that case to be consistent with
the parsing of INSERT_HEAP_DYNAMIC.
2022-09-19 11:46:25 +03:00
Marko Mäkelä
bbf81b51f2 Correct typos in a function comment
Thanks to Thirunarayanan Balathandayuthapani for spotting this.
2022-09-19 10:23:57 +03:00
Daniel Black
3c8674edcc Merge 10.4 into 10.5 2022-09-19 17:03:17 +10:00
Ian Gilfillan
01d78d31ca Update 10.5 HELP contents 2022-09-19 16:57:22 +10:00
Ian Gilfillan
ef784c4ea2 Update 10.4 HELP contents 2022-09-19 16:57:10 +10:00
Marko Mäkelä
593fdee397 MDEV-29555 ASAN heap-buffer-overflow in mariabackup.huge_lsn,strict_full_crc32
recv_scan_log(): Do not dereference the first byte of the log record
before recv_sys.parse_pmem() (or recv_sys_t::parse_mtr()) returns OK.

In the case of the failure that was analyzed, we had
recv_sys.offset == recv_sys.len and recv_sys_t::parse_mtr() would return
PREMATURE_EOF. This would lead us to reading more data and parsing again.

When a memory-mapped interface to the log is being used, that is,
log_sys.is_pmem() holds, recv_sys.offset cannot point past the
end of the memory-mapped log_sys.buf[]. This is guaranteed by
log_sys.calc_lsn_offset().

Thanks to Nayuta Yanagisawa for providing a core dump for analysis.
2022-09-16 14:10:45 +03:00
Daniel Black
5e270ca28d MDEV-16708: ps_missed_cmds test - HELP deconflict
To make it possible to update the HELP text of UPDATE without
changing this test every time, the test is changed to look
for a faked help topic. A non-existant help topic generates
different metadata and wasn't suitable as a test.

Requested by Ian Gilfillan.

Reviewed by Dmitry Shulga
2022-09-15 18:32:42 +10:00
Alexander Barkov
23a8654cdb A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collation
Recording test results according to MDEV-29446 changes:

  mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result
  mysql-test/suite/galera/r/galera_sync_wait_show.result
  mysql-test/suite/galera/r/lp1376747-4.result
  mysql-test/suite/s3/replication_partition.result
  mysql-test/suite/s3/replication_stmt.result
2022-09-15 12:20:50 +04:00
Vladislav Vaintroub
32bab2ce05 MDEV-29543 Windows: Unreadable dlerror() message on localized OS
Force using english for error messages (i.e ASCII) to avoid encoding
mixup.
2022-09-15 09:39:05 +02:00
Alexander Barkov
2fd4d25d8f A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collation
Recording test results according to MDEV-29446 changes:

  mysql-test/suite/galera/r/galera-features#117.result
  mysql-test/suite/galera/r/galera_can_run_toi.result
  mysql-test/suite/galera/r/wsrep_strict_ddl.result
  mysql-test/suite/s3/alter.result
  mysql-test/suite/s3/arguments.result
  mysql-test/suite/s3/basic.result
  mysql-test/suite/s3/encryption.result
  mysql-test/suite/s3/innodb.result
  mysql-test/suite/s3/mysqldump.result
  mysql-test/suite/s3/partition.result
  mysql-test/suite/s3/partition_move.result
  mysql-test/suite/s3/replication_delayed.result
  mysql-test/suite/s3/replication_mixed.result
2022-09-15 07:44:35 +04:00
Sergei Golubchik
35e18c240b race condition in the test
this test loads sql_errlog plugin. then in a second connection
it triggers an error, this locks the plugin in that thd.
then the plugin is uninstalled in the default connection.
but that doesn't unload the plugin, as it's still locked. it'll
auto-unload after the foo connection is closed. without an explicit
disconnect it is closed after mysqltest exits and the post-test check
might still see sql_errlog not fully unoaded.
2022-09-14 19:59:05 +02:00
Sergei Golubchik
beffef9f00 MDEV-22647 Assertion `!check_audit_mask(mysql_global_audit_mask, event_class_mask)'
check_audit_mask(mysql_global_audit_mask, event_class_mask) is tested in
mysql_audit_general_log() and then assert in mysql_audit_acquire_plugins()
verifies that the condition still holds.
But this code path is not protected by LOCK_audit_mask, so
mysql_global_audit_mask can change its value between the if() and the
assert. That is, the assert is invalid and will fire if the
audit plugin is unloaded concurrently with mysql_audit_general_log().

Nothing bad will happen in this case though, we'll just do a useless
loop over all remaining installed audit plugins.

That is, the fix is simply to remove the assert.
2022-09-14 19:15:44 +02:00
Alexander Barkov
b65ffe156a A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collation
Recording test results according to MDEV-29446 changes:

  mysql-test/suite/maria/max_length.result
2022-09-14 19:01:26 +04:00
Anel Husakovic
b7928f7566 Add missing comment and remove unnecessary initialization
- Commit c8948b0d0d introduced `get_one_variable()` - updating missing argument.
- Remove caller setting of empty string in `rpl_filter`, since underlying functions will do the same
  (commit 9584cbe7fc introduced).

Reviewed by: <brandon.nesterenko@mariadb.com>
2022-09-14 15:58:08 +02:00
Alexander Barkov
fe844c16b6 Merge remote-tracking branch 'origin/10.4' into 10.5 2022-09-14 16:24:51 +04:00