Commit graph

195906 commits

Author SHA1 Message Date
Marko Mäkelä
bdd80e3fb1 Merge 10.6 into 10.7 2022-08-24 09:22:34 +03:00
Thirunarayanan Balathandayuthapani
5b4c832c7e MDEV-29314 Assertion `n_fields > n_cols' failed in dict_index_t::init_change_cols
- Newly created InnoDB fulltext index does have only one column
and doesn't associate with primary key fields during DDL.
init_change_cols() has strict assertion that number of fields
should be greater than number of collation change columns.
2022-08-23 19:40:53 +05:30
Nayuta Yanagisawa
03726a36b8 Merge 10.5 into 10.6 2022-08-23 21:58:45 +09:00
Nayuta Yanagisawa
720fa05e5b Merge 10.4 into 10.5 2022-08-23 20:59:34 +09:00
Nayuta Yanagisawa
e404315258 Fix wrong diff introduced by merge commit
Many Spider tests were broken by the merge commit, 36d173e.
2022-08-23 19:59:30 +09:00
Alexander Barkov
0e8544cd73 MDEV-29355 Backport templatized INET6 implementation from 10.7 to 10.6 2022-08-23 14:36:08 +04:00
Thirunarayanan Balathandayuthapani
4feb9df105 MDEV-29282 atomic.rename_trigger fails occasionally
This reverts part of commit 212994f704
(MDEV-28974) and implements a better fix that works in that special case
while avoiding other failures.

fil_name_process(): Do not rename the tablespace in deferred_spaces;
it already contains the latest name for the space id.

deferred_spaces::create(): In mariadb-backup --prepare,
replace absolute data directory file path with short name
relative to the backup directory and store it as filename while
deferring tablespace file creation.
2022-08-23 08:47:59 +03:00
Marko Mäkelä
01f9c81237 MDEV-29336: Potential deadlock in btr_page_alloc_low() with the AHI
The index root page contains the fields BTR_SEG_TOP and BTR_SEG_LEAF
which keep track of allocated pages in the index tree. These fields
are normally protected by an Update latch, so that concurrent read
access to other parts of the page will be possible.

When the index root page is already exclusively latched in the
mini-transaction, we must not try to acquire a lower-grade Update latch.
In fact, when the root page is already X or U latched in the
mini-transaction, there is no point to acquire another latch.
Moreover, after a U latch was acquired on top of an X-latch,
mtr_t::defer_drop_ahi() would trigger an assertion failure or
lock corruption in block->page.lock.u_x_upgrade() because X locks
already exist on the block.

This problem may have been introduced in
commit 03ca6495df (MDEV-24142).

btr_page_alloc_low(), btr_page_free(): Initially buffer-fix the root page.
If it is already U or X latched, release the buffer-fix. Else, upgrade
the buffer-fix to a U latch.

mtr_t::u_lock_register(): Upgrade a buffer-fix to U latch.

mtr_t::have_u_or_x_latch(): Check if U or X latches are already
registered in the mini-transaction.
2022-08-23 08:47:49 +03:00
Marko Mäkelä
fbb2b1f55f Merge 10.5 into 10.6 2022-08-23 08:47:21 +03:00
Alexander Barkov
55c648a738 MDEV-27099 Subquery using the ALL keyword on INET6 columns produces a wrong result
This problem was earlier fixed by MDEV-27101.
Adding INET6 tests only.
2022-08-23 08:58:23 +04:00
Marko Mäkelä
3b656ac8c1 Merge 10.4 into 10.5 2022-08-22 19:49:56 +03:00
Marko Mäkelä
b68ae6dc1d Merge 10.3 into 10.4 2022-08-22 16:22:09 +03:00
Marko Mäkelä
d65a2b7bde Merge 10.5 into 10.6 2022-08-22 14:02:43 +03:00
Thirunarayanan Balathandayuthapani
c7f8cfc9e7 MDEV-27700 ASAN: Heap_use_after_free in btr_search_drop_page_hash_index()
Reason:
=======
Race condition between btr_search_drop_hash_index() and
btr_search_lazy_free(). One thread does resizing of buffer pool
and clears the ahi on all pages in the buffer pool, frees the
index and table while removing the last reference. At the same time,
other thread access index->heap in btr_search_drop_hash_index().

Solution:
=========
Acquire the respective ahi latch before checking index->freed()

btr_search_drop_page_hash_index(): Added new parameter to indicate
that drop ahi entries only if the index is marked as freed

btr_search_check_marked_free_index(): Acquire all ahi latches and
return true if the index was freed
2022-08-22 16:29:46 +05:30
Marko Mäkelä
1d90d6874d Merge 10.4 into 10.5 2022-08-22 13:38:40 +03:00
Alexander Barkov
316847eab7 MDEV-27101 Subquery using the ALL keyword on TIMESTAMP columns produces a wrong result
TIMESTAMP columns were compared as strings in ALL/ANY comparison,
which did not work well near DST time change.

Changing ALL/ANY comparison to use "Native" representation to compare
TIMESTAMP columns, like simple comparison does.
2022-08-22 14:27:22 +04:00
Marko Mäkelä
36d173e523 Merge 10.3 into 10.4 2022-08-22 12:34:42 +03:00
Marko Mäkelä
6005f3c548 MDEV-25257 follow-up: Fix a test
Ever since commit 09177eadc3
the test innodb.row_format_redundant cannot work when the
data file was created with innodb_checksum_algorithm=full_crc32.

Backport of 10.5 commit a9d0bb12e6
2022-08-22 12:33:46 +03:00
Marko Mäkelä
fd0cd4801a MDEV-13013 fixup: Adjust a test 2022-08-22 12:32:47 +03:00
Brad Smith
f02ca429f7 Revert aligned_alloc() addition from MDEV-28836
As pointed out with MDEV-29308 there are issues with the code as is.
MariaDB is built as C++11 / C99. aligned_alloc() is not guarenteed
to be exposed when building with any mode other than C++17 / C11.
The other *BSD's have their stdlib.h header to expose the function
with C+11 anyway, but the issue exists in the C99 code too, the
build just does not use -Werror. Linux globally defines _GNU_SOURCE
hiding the issue as well.
2022-08-22 09:10:40 +03:00
Thirunarayanan Balathandayuthapani
7624bf868e MDEV-29250 InnoDB: Failing assertion: table->get_ref_count() == 0
Reason:
======
 This issue is caused by race condition between fulltext DDL and
purge thread. DDL sets the signal to stop the purge thread to
process the new undo log records and wait for the ongoing
processed FTS table undo log records to finish.

But in dict_acquire_mdl_shared(),InnoDB release all innodb
table related locks before acquiring the mdl. At the same time,
DDL assumes that there are no purge threads working on fts table.

There is a possiblity that purge thread can skip processing the
valid undo log records if it checks purge_sys.must_wait_FTS() twice
in different places.

Solution:
==========

Add the purge_sys.must_wait_FTS() check in dict_acquire_mdl_shared()
to avoid the purge thread processing undo log records.

dict_open_table_on_id(): return -1 if the purge thread has to
wait

dict_acquire_mdl_shared(): Added 1 new parameters to indicate that
purge thread invoking the function, return -1  if the purge
thread has to wait.
2022-08-19 17:51:49 +05:30
Marko Mäkelä
75c416d362 MDEV-24626 fixup: mariabackup.compress_qpress 2022-08-19 09:26:13 +03:00
Marko Mäkelä
c2df3d30c0 MDEV-21452 fixup: Avoid an unnecessary mutex operation 2022-08-19 09:21:02 +03:00
Marko Mäkelä
a1055ab35d MDEV-29043 mariabackup --compress hangs
Even though commit b817afaa1c passed
the test mariabackup.compress_qpress, that test turned out to be
too small to reveal one more problem that had previously been prevented
by the existence of ctrl_mutex. I did not realize that there can be
multiple concurrent callers to compress_write(). One of them is the
log copying thread; further callers are data file copying threads
(default: --parallel=1).

By default, there is only one compression worker thread
(--compress-threads=1).

compress_write(): Fix a race condition between threads that would
use the same worker thread object. Make thd->data_avail contain the
thread identifier of the submitter, and add thd->avail_cond to
notify other compress_write() threads that are waiting for a slot.
2022-08-19 09:18:24 +03:00
Marko Mäkelä
ec37906646 MDEV-29321 Percona XtraDB 5.7 can't be upgrade to MariaDB 10.6 or above
In MySQL 5.7, rollback segments 1 to 32 are used for temporary tables,
which is an unnecessary file format change from MySQL 5.6.
This format change was avoided in MariaDB Server by
commit 124bae082b (MDEV-12289).

An upgrade from MySQL 5.7 would crash due to dereferencing a null pointer,
which is a regression due to
commit 0b47c126e3 (MDEV-13542).

trx_rseg_t::get(): Return nullptr if no tablespace exists. This is where
the upgrade would crash.

trx_rseg_mem_restore(): Return DB_TABLESPACE_NOT_FOUND if the
undo tablespace does not exist. This is likely dead code.
2022-08-18 16:02:13 +03:00
Thirunarayanan Balathandayuthapani
32167225c7 MDEV-13013 InnoDB unnecessarily extends data files
- While creating a new InnoDB segment, allocates the extent
before allocating the inode or page allocation even though
the pages are present in fragment segment. This patch does
reserve the extent when InnoDB ran out of fragment pages
in the tablespace.
2022-08-17 11:08:49 +05:30
Thirunarayanan Balathandayuthapani
af552f2903 Disabling atomic.rename_trigger test case because of frequent
failures
2022-08-16 21:33:45 +05:30
Nayuta Yanagisawa
c208006080 MDEV-29008 Server crash or assertion `field' failed in spider_db_open_item_ident / group by handler
ha_spider::field_exchange() returns NULL and that results in a crash
or a assertion failure in spider_db_open_item_ident().

In the first place, there seems to be no need to call field_exchange()
for printing an identity (column name with alias). Thus, we simply
remove the call.
2022-08-16 16:36:44 +09:00
Oleksandr Byelkin
dc11fd07fd Merge branch '10.7' into bb-10.7-release 2022-08-15 11:23:07 +02:00
Oleksandr Byelkin
39cafb666b Merge branch '10.6' into bb-10.6-release 2022-08-15 11:21:39 +02:00
Oleksandr Byelkin
5fc172fd43 Merge branch '10.5' into bb-10.5-release 2022-08-15 10:37:33 +02:00
Oleksandr Byelkin
3101751f50 Merge branch '10.4' into bb-10.4-release 2022-08-15 10:14:16 +02:00
Oleksandr Byelkin
8c21dc52ee Merge branch '10.3' into bb-10.3-release 2022-08-15 10:11:23 +02:00
Daniel Bartholomew
14a99383e0
bump the VERSION 2022-08-15 00:27:48 -04:00
Daniel Bartholomew
dacd424965
Merge branch 'bb-10.6-bumpversion' of github.com:MariaDB/server into bb-10.6-bumpversion 2022-08-14 23:57:56 -04:00
Daniel Bartholomew
58746728db
bump the VERSION 2022-08-14 23:57:08 -04:00
Daniel Bartholomew
e78c2b846a
bump the VERSION 2022-08-14 23:38:24 -04:00
Daniel Bartholomew
fd1e5f91d2
bump the VERSION 2022-08-14 22:53:37 -04:00
Daniel Bartholomew
a4a42f50f0
bump the VERSION 2022-08-14 22:19:37 -04:00
Daniel Bartholomew
6d90d2ba7f
bump the VERSION 2022-08-14 21:45:05 -04:00
qggcs
820175115e MDEV-29264: JSON function overflow error based on LONGTEXT field
Analysis: The JSON functions(JSON_ARRAY[OBJECT|ARRAY_APPEND|ARRAY_INSERT|INSERT|SET|REPLACE]) result is truncated when the function is called based on LONGTEXT field. The overflow occurs when computing the result length due to the LONGTEXT max length is same as uint32 max length. It lead to wrong result length.
Fix: Add static_cast<ulonglong> to avoid uint32 overflow and fix the arguments used.
2022-08-13 12:48:35 +05:30
Rucha Deodhar
d48428e99a MDEV-27151: JSON_VALUE() does not parse NULL properties properly
Analysis: JSON_VALUE() returns "null" string instead of NULL pointer.
Fix: When the type is JSON_VALUE_NULL (which is also a scalar) set
null_value to true and return 0 instead of returning string.
2022-08-11 15:01:15 +05:30
Oleksandr Byelkin
98d7ac1fbe Merge branch '10.6' into 10.7 2022-08-10 13:25:05 +02:00
Addison G
b8f6d315fe MDEV-29222 - Fix mysqld_safe script
The mysqld_safe script was using bad grep options.

The line that was fixed was likely meant to be 2 separate grep commands,
piped into each other, with each one removing any lines that matched.

The `-E` option was unneeded, as the command is not using regex.
2022-08-10 13:24:31 +02:00
Oleksandr Byelkin
65a963f755 Merge branch '10.6' into 10.7 2022-08-10 13:12:32 +02:00
Oleksandr Byelkin
c442e1ae21 Merge branch '10.5' into 10.6 2022-08-10 13:06:08 +02:00
Addison G
5d3bbc6da1 MDEV-29222 - Fix mysqld_safe script
The mysqld_safe script was using bad grep options.

The line that was fixed was likely meant to be 2 separate grep commands,
piped into each other, with each one removing any lines that matched.

The `-E` option was unneeded, as the command is not using regex.
2022-08-10 13:37:52 +03:00
Oleksandr Byelkin
1ac0bce36e Merge branch '10.4' into 10.5 2022-08-10 12:24:31 +02:00
Oleksandr Byelkin
65e8506ca9 Merge branch '10.3' into bb-10.4-release 2022-08-10 12:21:08 +02:00
Brad Smith
d7ba72ea9b Remove Darwin CMake file
The file is now empty and thus serves no purpose.
2022-08-10 12:41:46 +03:00