Commit graph

196193 commits

Author SHA1 Message Date
Alexander Barkov
289105e282 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/MDEV-25494.result
  mysql-test/suite/galera/r/galera_ctas.result
  mysql-test/suite/galera/r/galera_schema.result
  mysql-test/suite/galera_3nodes/r/galera_wsrep_schema.result
  mysql-test/suite/galera_sr/r/galera_sr_create_drop.result
2022-09-14 08:00:56 +04:00
Sergei Golubchik
5af7149ff5 mysql_release: treat alma|rocky as centos|rhel 2022-09-13 16:29:25 +02:00
Marko Mäkelä
18795f5512 Merge 10.3 into 10.4 2022-09-13 16:36:38 +03:00
Marko Mäkelä
68ce0231ad MDEV-23801 Assertion failed in btr_pcur_store_position()
btr_lift_page_up(): If the leaf page only contains a hidden metadata
record for MDEV-11369 instant ADD COLUMN, convert the table to the
canonical format like we are supposed to do whenever the table
becomes empty.
2022-09-13 15:46:40 +03:00
Alexander Barkov
4c14243373 A cleanup for MDEV-29446 Change SHOW CREATE TABLE to display default collation
Recording test results according to MDEV-29446 changes:

storage/rocksdb/mysql-test/rocksdb/r/use_direct_io_for_flush_and_compaction.result
2022-09-13 12:44:23 +04:00
Sergei Golubchik
83175219c3 MDEV-29522 RocksDB RPM doesn't get built on Rocky Linux and Alma
use correct python on rocky8 and alma8
2022-09-13 08:56:18 +02:00
Marko Mäkelä
fc794fd8ff MDEV-29520 heap-use-after-poison in row_merge_spatial_rows()
row_merge_read_clustered_index(): Do not call mem_heap_empty(row_heap)
before row_merge_spatial_rows() has been able to read the data.
2022-09-13 08:58:34 +03:00
Marko Mäkelä
f3785f099c Merge 10.6 into 10.7 2022-09-13 08:48:40 +03:00
Marko Mäkelä
fd0bdd3180 Merge 10.5 into 10.6 2022-09-13 08:40:05 +03:00
Alexander Barkov
f1544424de MDEV-29446 Change SHOW CREATE TABLE to display default collation 2022-09-12 22:10:39 +04:00
Marko Mäkelä
0ccb95c2a9 Merge 10.5 into 10.6 2022-09-12 15:01:55 +03:00
Vladislav Vaintroub
fb70bb44d0 MDEV-29513 avoid useless os_thread_sleep() during srv_purge_shutdown()
use waitable_task.wait() function to wait for the end of previous purge
2022-09-12 12:24:26 +02:00
Marko Mäkelä
667df98c3e MDEV-29507 InnoDB: Failing assertion: table->n_rec_locks == 0
lock_place_prdt_page_lock(): Do not place locks on temporary tables.
Temporary tables can only be accessed from one connection, so
it does not make any sense to acquire any transactional locks on them.
2022-09-12 09:27:46 +03:00
Andrei
bc12478a9a MDEV-24660 MYSQL_BIN_LOG::cleanup(): Assertion `b->xid_count == 0'
The shutdown time assert was caused by untimely deactivation of
the binlog background thread and related structs destruction.
It could specifically occur when a transaction is replication unsafe
and has to be completed with a ROLLBACK event in binlog.

This gets fixed with the binlog background thread stop relocation
to a point and user transactions have been completed.
A test case is added to binlog.binlog_checkpoint which
also receives as a bonus a minor correction to reactivate a MDEV-4322 test
case that originally required a shutdown phase (that ceased to do).
2022-09-09 19:22:41 +03:00
Nayuta Yanagisawa
3133435134 Merge 10.6 into 10.7 2022-09-08 21:54:45 +09:00
Nayuta Yanagisawa
70021737f5 MDEV-27172 fixup: spider/bugfix.mdev_27172 failed with --ps-protocol 2022-09-08 21:06:55 +09:00
Marko Mäkelä
d2e649aec2 MDEV-29440 InnoDB instant ALTER TABLE recovery must use READ UNCOMMITTED
In commit 8f8ba75855 (MDEV-27234)
the data dictionary recovery was changed to use READ COMMITTED
so that table-rebuild operations (OPTIMIZE TABLE, TRUNCATE TABLE,
some forms of ALTER TABLE) would be recovered correctly.

However, for operations that avoid a table rebuild thanks to
being able to instantly ADD, DROP or reorder columns, recovery
must use the READ UNCOMMITTED isolation level so that changes to
the hidden metadata record can be rolled back.

We will detect instant operations by detecting uncommitted changes
to SYS_COLUMNS in case there is no uncommitted change of SYS_TABLES.ID
for the table. In any table-rebuilding DDL operation, the SYS_TABLES.ID
(and likely also the table name) will be updated.

As part of rolling back the instant ALTER TABLE operation, after the
operation on the hidden metadata record has been rolled back, a rollback
of an INSERT into SYS_COLUMNS in row_undo_ins_remove_clust_rec() will
invoke trx_t::evict_table() to discard the READ UNCOMMITTED definition
of the table. After that, subsequent recovery steps will load and use
the correct table definition.

Reviewed by: Thirunarayanan Balathandayuthapani
Tested by: Matthias Leich
2022-09-08 14:57:50 +03:00
Vlad Lesin
43745b7e17 MDEV-29433 innodb.lock_delete_updated is unstable
Use suspend thread syncpoint instead of include/wait_condition.inc to
make sure DELETE created waiting lock before the next UPDATE begins
locking.

This is backport of commit 0fa4dd0747
from 10.6.
2022-09-08 13:36:30 +03:00
Vlad Lesin
0fa4dd0747 MDEV-29433 innodb.lock_delete_updated is unstable
Use suspend thread syncpoint instead of include/wait_condition.inc to
make sure DELETE created waiting lock before the next UPDATE begins
locking.
2022-09-08 11:48:13 +03:00
Andrei
5563202089 MDEV-29322 ASAN heap-use-after-free in Query_log_event::do_apply_event
The ASAN report was made in the parallel slave execution of a query
event and implicitly involved (so also parallelly run) Format-Description
event.
The Query actually had unexpected impossible dependency on a preceding
"old" FD whose instance got destructed, to cause the ASAN error.

The case is fixed with storing the FD's value into Query-log-event
at its instantiating on slave. The stored value is from the very
FD of the Query's original binlog so remains to be correct
at the query event applying.

The branch C. of a new rpl_parallel_29322.test also demonstrates
(may need few --repeat though) the bug in its simple form of the same
server version binlog.
2022-09-07 20:35:43 +03:00
Vladislav Vaintroub
bd7ff02a6a Fix CMake 3.24 warning by setting a policy 2022-09-07 16:41:21 +02:00
Vladislav Vaintroub
7d63f21693 Merge branch '10.5' into 10.6
# Conflicts:
#	sql/sql_connect.cc
#	sql/threadpool_common.cc
2022-09-07 16:39:30 +02:00
Vladislav Vaintroub
80cf7a4c43 Merge branch '10.4' into 10.5
# Conflicts:
#	sql/sql_connect.cc
2022-09-07 15:28:58 +02:00
Tuukka Pasanen
04899d6d91
MDEV-28605: Change wrong plugin config installation location ()
Preset include directory for configuration files below MariaDB 10.5 is
/etc/mysql/conf.d

Change installation location wrong plugin installation location from
/etc/mysql/mariadb.d to default include directory /etc/mysql/conf.d.
Change makes gssapi-server, oqgraph, rocksdb and tokudb plugins
loading work after installation

NOTE TO MERGERS: This commit should be upstream to MariaDB 10.4 only!
Merging to MariaDB 10.5 and above leads to major problems.
2022-09-07 14:05:09 +01:00
Vladislav Vaintroub
9a8faeea14 MDEV-18353 - minor cleanup
Do not repeat yourself.

Instead of having the same DBUG_EXECUTE_IF code in threadpool and
thread-per-connection, add this code to setup_connection_thread_globals()
which is executed in all scheduling modes.
2022-09-07 13:49:49 +02:00
Daniel Black
dd092bc6eb
Deb: add kinetic to autobake () 2022-09-07 10:58:55 +01:00
Marko Mäkelä
bacaf2d4f4 MDEV-29342 Assertion failure in file que0que.cc line 728
Additional fixes for 10.6:

fts_sync_commit(): Release cache->lock also on rollback.

fts_sync_write_words(): Avoid a crash if an error occurs,
by stopping at the first error.

fts_add_doc_by_id(): Sync the doc id only after adding the doc id
to the cache.
2022-09-07 12:57:53 +03:00
Marko Mäkelä
1872a142b5 MDEV-10003 main.range_innodb retuns a wrong number of rows in EXPLAIN
Let us specify STATS_AUTO_RECALC=0 for the failing section of the test.
It is possible that this test started failing sporadically ever since
commit 9608773f75 was applied and
tests no longer globally disable the InnoDB persistent statistics.
2022-09-07 11:58:04 +03:00
Marko Mäkelä
0c0b697ae3 Merge 10.6 into 10.7 2022-09-07 08:56:06 +03:00
Marko Mäkelä
1985204044 Merge 10.5 into 10.6 2022-09-07 08:47:20 +03:00
Marko Mäkelä
38d36b59f9 Merge 10.4 into 10.5 2022-09-07 08:26:21 +03:00
Marko Mäkelä
c7ba237793 Merge 10.3 into 10.4 2022-09-07 08:08:59 +03:00
Marko Mäkelä
38dda1f026 MDEV-29475 trx_undo_rseg_free() does not write redo log
trx_undo_rseg_free(): Revert an inadvertent change that was done
as part of the merge a42c80bd48
2022-09-06 15:11:24 +03:00
Thirunarayanan Balathandayuthapani
ac49b7a845 MDEV-29342 Assertion failure in file que0que.cc line 728
- During shutdown, InnoDB fts fails to update synced doc id
when there is only one doc id about to sync. While starting
the server, InnoDB fetches the already synced doc id from
config table. In the subsequent sync operation, InnoDB fails
with DB_DUPLICATE_KEY error.
2022-09-06 17:23:31 +05:30
Marko Mäkelä
4318391346 Merge 10.5 into 10.6 2022-09-06 12:28:39 +03:00
Marko Mäkelä
c0470caf5a MDEV-29471 Buffer overflow in page_cur_insert_rec_low()
In commit 244fdc435d (MDEV-29438)
we made sure that if the preceding record is the page infimum record,
no more than 8 bytes will be read from it. But, if the data payload of
the being-inserted record is less than 8 bytes (this can happen in
secondary indexes), we must not compare all 8 bytes.

This was caught by a failure of the test gcol.innodb_virtual_basic
under MemorySanitizer and some builds with AddressSanitizer.
2022-09-06 11:33:52 +03:00
Marko Mäkelä
027a9963b0 MDEV-13542 fixup: Allow purge to run in a test 2022-09-06 09:52:08 +03:00
Thirunarayanan Balathandayuthapani
19de8b7013 MDEV-28240 InnoDB Temporary Tablespace (ibtmp1) is continously growing
- This is caused by commit 1bd681c8b3c5213ce1f7976940a7dc38b48a0d39(MDEV-25506)
InnoDB removes the index from the table object before freeing the
leaf and non-leaf segments.
2022-09-06 09:48:16 +05:30
Daniel Black
fd8dbe0d2c MDEV-29443: prevent uring access to galera sst /notify scripts
The resources like uring in MariaDB aren't intended for spawned
processes so we restrict access using the io_uring_ring_dontfork
liburing library call.
2022-09-06 08:03:49 +10:00
Jan Lindström
5fdbb3a72e Merge 10.6 into 10.7 2022-09-05 14:55:47 +03:00
Jan Lindström
9fefd440b5 Merge 10.5 into 10.6 2022-09-05 14:05:30 +03:00
Jan Lindström
ba987a46c9 Merge 10.4 into 10.5 2022-09-05 13:28:56 +03:00
Marko Mäkelä
3c7887a85f Merge 10.5 into 10.6 2022-09-05 10:09:03 +03:00
Marko Mäkelä
244fdc435d MDEV-29438 Recovery or backup of instant ALTER TABLE is incorrect
This bug was found in MariaDB Server 10.6 thanks to the
OPT_PAGE_CHECKSUM record that was implemented
in commit 4179f93d28 for catching
this type of recovery failures.

page_cur_insert_rec_low(): If the previous record is the page infimum,
correctly limit the end of the record. We do not want to copy data from
the header of the page supremum. This omission caused the incorrect
recovery of DB_TRX_ID in an instant ALTER TABLE metadata record, because
part of the DB_TRX_ID was incorrectly copied from the n_owned of the
page supremum, which in recovery would be updated after the copying,
but in normal operation would already have been updated at the time the
common prefix was being determined.

log_phys_t::apply(): If a data page is found to be corrupted, do not
flag the log corrupted but instead return a new status APPLIED_CORRUPTED
so that the caller may discard all log for this page. We do not want
the recovery of unrelated pages to fail in recv_recover_page().

No test case is included, because the known test case would only work
in 10.6, and even after this fix, it would trigger another bug in
instant ALTER TABLE crash recovery.
2022-09-05 09:54:47 +03:00
Andrei
f501f815bc MDEV-28827 Minor unsafe statement warning message improvement
The replication unsafe warning's pattern gets corrected in the
punctuation part.
2022-09-03 13:04:44 +03:00
Brandon Nesterenko
47812017c6 MDEV-28530: Revoking privileges from a non-existing user on a master breaks replication on the slave in the presence of replication filters
Problem:
========
Replication can break while applying a query log event if its
respective command errors on the primary, but is ignored by the
replication filter within Grant_tables on the replica. The bug
reported by MDEV-28530 shows this with REVOKE ALL PRIVILEGES using a
non-existent user. The primary will binlog the REVOKE command with
an error code, and the replica will think the command executed with
success because the replication filter will ignore the command while
accessing the Grant_tables classes. When the replica performs an
error check, it sees the difference between the error codes, and
replication breaks.

Solution:
========
If the replication filter check done by Grant_tables logic ignores
the tables, reset thd->slave_expected_error to 0 so that
Query_log_event::do_apply_event() can be made aware that the
underlying query was ignored when it compares errors.

Note that this bug also effects DROP USER if not all users exist
in the provided list, and the patch fixes and tests this case.

Reviewed By:
============
andrei.elkin@mariadb.com
2022-09-03 13:04:44 +03:00
anson1014
84813c396a
Remove unused French translations in Connect engine ()
These files are currently not being used nor compiled in MariaDB. The
use of large lists of 'case' statements in these source files are also
not a great way to represent translated strings. This git history can
be referred to when a better translation interface can be implemented
in the future.

Therefore, these files can be removed to cleanup the MariaDB codebase.

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.
2022-09-02 10:40:33 +01:00
Thirunarayanan Balathandayuthapani
e27c3d5230 MDEV-29425 Buffer overflow in dict_index_t::col_info::add()
- During rollback of DDL, InnoDB should copy the collation
changed column into the index heap
2022-09-01 16:07:40 +05:30
Nayuta Yanagisawa
e4cffc92c7 MDEV-27172 Prefix indices on Spider tables may lead to wrong query results
Spider converts HA_READ_KEY_EXACT to the equality (=) in the
function spider_db_append_key_where_internal() but the conversion
is not necessarily correct for tables with prefix indices.

We fix the bug by converting HA_READ_KEY_EXACT to 'LIKE "foo%"' when
a target key is a prefix key. The fix is partly inspired by FEDERATED.
See ha_federated::create_where_from_key() for more details.
2022-09-01 18:32:40 +09:00
Marko Mäkelä
40aa94df35 MDEV-29435 CHECK TABLE forgets to release latches after reporting failure
btr_validate_level(): Invoke mtr.commit() after a failure.
This omission was introduced in
commit 0b47c126e3 (MDEV-13542).
2022-09-01 10:40:27 +03:00