Commit graph

191147 commits

Author SHA1 Message Date
Marko Mäkelä
0eabc285a3 Merge 10.3 into 10.4 (MDEV-27913) 2022-02-25 10:55:57 +02:00
Marko Mäkelä
7ab3db142b MDEV-27913 fixup: sys_vars.sysvars_innodb result 2022-02-25 10:30:04 +02:00
Thirunarayanan Balathandayuthapani
a76731e1a1 MDEV-27913 innodb_ft_cache_size max possible value (80000000) is too small for practical purposes
- Make innodb_ft_cache_size & innodb_ft_total_cache_size are dynamic
variable and increase the maximum value of innodb_ft_cache_size to
512MB for 32-bit system and 1 TB for 64-bit system and set
innodb_ft_total_cache_size maximum value to 1 TB for 64-bit system.

- Print warning if the fts cache exceeds the innodb_ft_cache_size
and also unlock the cache if fts cache memory reduces less than
innodb_ft_cache_size.
2022-02-24 22:41:23 +05:30
Marko Mäkelä
46764652df MDEV-27798 SIGSEGV in dict_index_t::reconstruct_fields()
When recovery is rolling back an incomplete instant DROP COLUMN
operation, it may access non-existing fields. Let us avoid
invoking std::find_if() outside the valid bounds of the array.

This bug was reproduced with the Random Query Generator, using a
combination of instant DROP, ADD...FIRST, CHANGE (renaming a column).
Unfortunately, we were unable to create an mtr test case for
reproducing this, despite spending considerable effort on it.
2022-02-23 13:31:14 +02:00
Marko Mäkelä
0b849a441a WSREP: Fix GCC 12.0.1 -Wuninitialized
GCC 12 complains if a reference to an uninitialized object is
being passed to a constructor. The mysql_mutex_t, mysql_cond_t
would be initialized in the constructor body, which is executed
after the initializer list. There is no problem passing a pointer
instead of a reference. The wrapper classes do not dereference
the pointers in the constructor or destructor, so there does not
appear to be any correctness issue.
2022-02-23 07:18:00 +02:00
Sergei Golubchik
b5fe7ab841 MDEV-27826 Mariabackup is linked against libsql_builtins.so dynamically
build sql_builtins always statically
2022-02-22 20:53:23 +01:00
Vlad Lesin
f6f055a191 Merge 10.3 into 10.4 2022-02-21 14:10:27 +03:00
Vlad Lesin
a6f258e47f MDEV-20605 Awaken transaction can miss inserted by other transaction records due to wrong persistent cursor restoration
Backported from 10.5 20e9e804c1 and
5948d7602e.

sel_restore_position_for_mysql() moves forward persistent cursor
position after btr_pcur_restore_position() call if cursor relative position
is BTR_PCUR_ON and the cursor points to the record with NOT the same field
values as in a stored record(and some other not important for this case
conditions).

It was done because btr_pcur_restore_position() sets
page_cur_mode_t mode  to PAGE_CUR_LE for cursor->rel_pos ==  BTR_PCUR_ON
before opening cursor. So we are searching for the record less or equal
to stored one. And if the found record is not equal to stored one, then
it is less and we need to move cursor forward.

But there can be a situation when the stored record was purged, but the
new one with the same key but different value was inserted while
row_search_mvcc() was suspended. In this case, when the thread is
awaken, it will invoke sel_restore_position_for_mysql(), which, in turns,
invoke btr_pcur_restore_position(), which will return false because found
record don't match stored record, and
sel_restore_position_for_mysql() will move forward cursor position.

The above can lead to the case when awaken row_search_mvcc() do not see
records inserted by other transactions while it slept. The mtr test case
shows the example how it can be.

The fix is to return special value from persistent cursor restoring
function which would notify its caller that uniq fields of restored
record and stored record are the same, and in this case
sel_restore_position_for_mysql() don't move cursor forward.

Delete-marked records are correctly processed in row_search_mvcc().
Non-unique secondary indexes are "uniquified" by adding the PK, the
index->n_uniq should then be index->n_fields. So there is no need in
additional checks in the fix.

If transaction's readview can't see the changes made in secondary index
record, it requests clustered index record in row_search_mvcc() to check
its transaction id and get the correspondent record version. After this
row_search_mvcc() commits mtr to preserve clustered index latching
order, and starts mtr. Between those mtr commit and start secondary
index pages are unlatched, and purge has the ability to remove stored in
the cursor record, what causes rows duplication in result set for
non-locking reads, as cursor position is restored to the previously
visited record.

To solve this the changes are just switched off for non-locking reads,
it's quite simple solution, besides the changes don't make sense for
non-locking reads.

The more complex and effective from performance perspective solution is
to create mtr savepoint before clustered record requesting and rolling
back to that savepoint after that. See MDEV-27557.

One more solution is to have per-record transaction id for secondary
indexes. See MDEV-17598.

If any of those is implemented, just remove select_lock_type argument in
sel_restore_position_for_mysql().
2022-02-21 12:49:54 +03:00
Marko Mäkelä
b9ee26e9f4 MDEV-27550: Disable galera.MW-328D
(cherry picked from commit 66465914c1)
2022-02-21 12:49:54 +03:00
Vlad Lesin
5f001bd7b8 MDEV-27025 insert-intention lock conflicts with waiting ORDINARY lock
The code was backported from 10.5 be8113861c
commit. See that commit message for details.
2022-02-21 12:49:54 +03:00
Nayuta Yanagisawa
66f55a018b MDEV-27730 Add PLUGIN_VAR_DEPRECATED flag to plugin variables
The sys_var class has the deprecation_substitute member to mark the
deprecated variables. As it's set, the server produces warnings when
these variables are used. However, the plugin has no means to utilize
that functionality.

So, the PLUGIN_VAR_DEPRECATED flag is introduced to set the
deprecation_substitute with the empty string. A non-empty string can
make the warning more informative, but there's no nice way seen to
specify it, and not that needed at the moment.
2022-02-18 13:10:20 +09:00
Vladislav Vaintroub
fa557986ac MDEV-24175 Windows - fix detection of whether file is on SSD
Fix detection. SSD is when storage does *not* incur a seek penalty.
2022-02-17 22:55:08 +01:00
Marko Mäkelä
6f4740fde7 MDEV-27723 innodb.instant_alter,8k.rdiff does not apply on FreeBSD
The .rdiff files were not correctly adjusted in
commit 8f4a3bf07c (MDEV-25057).
2022-02-17 11:49:13 +02:00
Marko Mäkelä
f921db7aa5 Merge 10.3 into 10.4 2022-02-17 11:33:08 +02:00
Marko Mäkelä
5b237e5965 Merge 10.2 into 10.3 2022-02-17 10:53:58 +02:00
Marko Mäkelä
73c391afc5 MDEV-27583 InnoDB uses different constants for FK cascade error message in SQL vs error log
convert_error_code_to_mysql(): Use the correct limit FK_MAX_CASCADE_DEL
in the error message. The DICT_FK_MAX_RECURSIVE_LOAD applies to
the number of foreign key constraints in table definitions,
not to the number of rows that are visited while processing
a foreign key constraint.
2022-02-17 10:48:24 +02:00
Marko Mäkelä
da64e503fb MDEV-27722 innodb_fts.innodb-fts-ddl fails with a wrong message on FreeBSD
On FreeBSD, the error message would say "Resource deadlock avoided".
Let us simply replace the error message string in the test.
2022-02-17 10:26:06 +02:00
Alexey Yurchenko
b8bb185500 Removed dead code. 2022-02-17 10:03:51 +02:00
Jonathan Sabbe
9f429a2dd1 fix: Fix 'unknown type usermodehelper_t' issue after upgrading to MariaDB 10.4.24 2022-02-17 15:30:58 +11:00
forkfun
e195685ce6 MDEV-27548 session_tracker_last_gtid.test fails with --repeat, added cleanup after the test 2022-02-16 16:54:36 +01:00
Monty
0a92ef458b MDEV-17223 Assertion `thd->killed != 0' failed in ha_maria::enable_indexes
MDEV-22500 Assertion `thd->killed != 0' failed in ha_maria::enable_indexes

For MDEV-17223 the issue was an assert that didn't take into account that
we could get duplicate key errors when enablling unique indexes.
Fixed by not retrying repair in case of duplicate key error for this
case, which avoids the assert.

For MDEV-22500 I removed the assert, as it's not critical (just a way to
find potential wrong code) and we will anyway get things logged in the
error log if this happens. This case cannot triggered an assert in 10.3
but I verified that it would trigger in 10.5 and that this patch fixes
it.
2022-02-16 17:16:10 +02:00
Marko Mäkelä
cf574cf53b MDEV-27634 innodb_zip tests failing on s390x
Some GNU/Linux distributions ship a zlib that is modified to use
the s390x DFLTCC instruction. That modification would essentially
redefine compressBound(sourceLen) as (sourceLen * 16 + 2308) / 8 + 6.

Let us relax the tests for InnoDB ROW_FORMAT=COMPRESSED to cope with
such a weaker compression guarantee.

create_table_info_t::row_size_is_acceptable(): Remove a bogus debug-only
assertion that would fail to hold for the test innodb_zip.bug36169.
The function page_zip_empty_size() may indeed return 0.
2022-02-16 17:03:02 +02:00
Lena Startseva
6c3f1f661c MDEV-27691: make working view-protocol
Added ability to disable/enable (--disable_view_protocol/--enable_view_protocol) view-protocol in tests.
When the  option "--disable_view_protocol" is used  util connections are closed.
Added new test for checking view-protocol
2022-02-16 13:06:23 +07:00
Brandon Nesterenko
cdf19cd618 MDEV-16091: Seconds_Behind_Master spikes to millions of seconds
The rpl.rpl_seconds_behind_master_spike test would sometimes
timeout or take a very long time to complete. This happened
because an MTR DEBUG_SYNC signal would be lost due to a
subsequent call to RESET. I.e., the slave SQL thread would
be paused due to the WAIT_FOR signal being lost, resulting in
either a failed test if the `select master_pos_wait` timeout
occurs first, or a very long run-time if the DBUG_SYNC timeout
occurs first.

The fix ensures that the MTR signal is processed by the slave
SQL thread before issuing the call to RESET

Reviewed By:
============
Andrei Elkin <andrei.elkin@mariadb.com>
2022-02-15 08:00:28 -07:00
Ustun Ozgur
b557f26309 Fix typo in mysqadmin manpage 2022-02-15 12:05:41 +11:00
Marko Mäkelä
c9bc10e6e8 Merge 10.3 into 10.4 2022-02-14 08:56:50 +02:00
Marko Mäkelä
4964f1819e MariaDB 10.4.24 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmIIEboACgkQ8WVvJMdM
 0dgMGQ//QjEd0R3droKQH1WGzHqphSX14AZh2raDxdFz5M6sEs+3ZR489lCu4cXk
 kF1GnfkJpQFT1jXglsWF9O75lfw4RmlUsMj4XYtLLLgBoSwGrVeRIeqwDnRUt2ii
 0YlZ3pGJ0+OT0dZHRvRkV/EUAvAm2nR84UqBZGKm1dl1nnHt1YVSjrxbGx6juWwl
 uoD2Y9HDVZ18z/zz1hbsQ6m82nQrQYGwah3Dqxtj+yVcVXJDdseDJf4X4lELf74w
 WUZmEn88bxJwNTiYc37iMySaQ11q0g3JZ6o+zbkFgDV5QIUvtYZQ1YrRX4RBiQuX
 pM9RlSpgERs8lin+xUdkmh3oMkztycdOeC90Ybt1aui/b881eh+GztKKwqSBpo0/
 1mE8D5TRDUCxKVMeTyt8S3tQJP2wDM8ARre98ATDN24fYx+RZxh9rb+fkQRlC+iA
 SkzxNXnuNo6G6r/YdqBLtRuYSWZFqWQnc65MRdNrQiG9FnCvsLJHXzbRppMHxYoy
 A5LYXh425gZVrMRPsswK+DC/+qxWN1Uwb2Ze42XvNApozGtmRtZckqYcsBI42g08
 e5p62T+WOo1POn7Q0wwkv5dNJyQXd/H1bKS3/aj1sMwZoZj9JawRAevSIfFUSZkD
 DwA14S8Sdh+ej82rMu03cLSTiBUxHCH4AUvvmP2dXKqbTQVez+0=
 =aAbi
 -----END PGP SIGNATURE-----

Merge mariadb-10.4.24 into 10.4
2022-02-14 08:56:32 +02:00
Marko Mäkelä
e928fdbff1 Merge 10.2 into 10.3 2022-02-14 08:49:11 +02:00
Marko Mäkelä
a6ef239b9e MariaDB 10.3.34 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmIIFeIACgkQ8WVvJMdM
 0divQxAAzNA4EsoHo4nYyUqGiz+5VWzyVaiNpAD4GRIzv1UxaGTZpLEu5jz6tmnr
 CIeltG0/QW3870oTtWs38TUgc6Yzcn1wWAYHzdErBdoP8QEBR4b4jnEIuB2DF94M
 mGExiZDnIvmdGelfOolCz9/WKzFNJm8hCK1T+wZ6YKPGsw0YDypcYcEgCLAqvV35
 pAn6AzbBJny0a6qTbjUp0XzOcBbxssHX/PBYMwdM6xq+26ndJNLZm16VUKvKFYU4
 tsFFVNSFboxSPzUyc4c/SrGtW2LFi3TZfuqy51c0PXEiQ007tYE726m9w5oiykXz
 BPRVsvO2dax6AsXdX/jVPXafUVAzqn2Xu6bl4URkcT78rR3xJOsxalim7FnQFEoV
 KjaGZ3WCSPqcTw5vaTIy5CVF4CfSdAmOBFHUSXebsOkGhP8AFsiO65U9/FRxxwGP
 Xm3BRyUcCJvNMVKQVlvJ0Siy8Ir4swgC5ZgVwPkvaAEnq3jK0p1D1YRAXumKPtSV
 Ame7T8Gt3iNdqSCDTR5BQbTfAaNfqJvWuBAl7J28u89mJnTC+9YgO/Oks/l9WLdy
 Aoh20dLc5ycT//vWVrJhZp1l0tS5qGUojcxx6WW4dktboXn+UKXmwqBOsrL3Urj9
 X77L0Z4y23259IV5kUWJm7uQ2ReHy6tX03+ILM6Lww/W7GH+L3o=
 =AmK6
 -----END PGP SIGNATURE-----

Merge mariadb-10.3.34 into 10.3
2022-02-14 08:48:48 +02:00
Daniel Bartholomew
e777645d48
bump the VERSION 2022-02-12 15:43:53 -05:00
Daniel Bartholomew
e50421be21
bump the VERSION 2022-02-12 15:18:56 -05:00
Daniel Bartholomew
b55b808b83
bump the VERSION 2022-02-12 15:00:45 -05:00
Marko Mäkelä
1a7573d5a5 Disable innodb_gis.rtree_compress2 2022-02-11 12:58:42 +02:00
Vlad Lesin
3b10e8f80c MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
row_sel_sec_rec_is_for_clust_rec() treats empty BLOB prefix field in
secondary index as a field equal to any external BLOB field in clustered
index. Row_sel_get_clust_rec_for_mysql::operator() doesn't zerro out
clustered record pointer in row_search_mvcc(), and row_search_mvcc()
thinks that delete-marked secondary index record has visible for
"CHECK TABLE"'s read view old-versioned clustered index record, and
row_scan_index_for_mysql() counts it as a row.

The fix is to execute row_sel_sec_rec_is_for_blob() in
row_sel_sec_rec_is_for_clust_rec() if clustered field contains BLOB's
reference.
2022-02-11 12:26:27 +03:00
Sergei Golubchik
b4477ae73c Merge branch '10.3' into 10.4 2022-02-10 20:39:13 +01:00
Sergei Golubchik
a36fc80aeb Merge branch '10.2' into 10.3 2022-02-10 20:23:56 +01:00
Sergei Petrunia
3a52569499 MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294
The asserion failure was caused by this query

  select /*id=1*/ from t1
  where
   col= ( select /*id=2*/ from ... where corr_cond1
          union
          select /*id=4*/ from ... where corr_cond2)

Here,
- select with id=2 was correlated due to corr_cond1.
- select with id=4 was initially correlated due to corr_cond2, but then
  the optimizer optimized away the correlation, making the select with id=4
  uncorrelated.

However, since select with id=2 remained correlated, the execution had to
re-compute the whole UNION. When it tried to execute select with id=4, it
hit an assertion  (join buffer already free'd).

This is because select with id=4 has freed its execution structures after
it has been executed once. The select is uncorrelated, so it did not expect
it would need to be executed for the second time.

Fixed this by adding this logic in
st_select_lex::optimize_unflattened_subqueries():

  If a member of a UNION is correlated, mark all its members as
  correlated, so that they are prepared to be executed multiple times.
2022-02-10 20:35:32 +03:00
Sergei Golubchik
9e2c26b0f6 MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra
don't let Aria create a table that it cannot open
2022-02-10 15:48:06 +01:00
Sergei Golubchik
1b8bb44106 MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra
use the correct check. before invoking handler methods we
need to know that the table was opened, not only created.
2022-02-10 15:48:06 +01:00
Oleksandr Byelkin
0168d1eda3 MDEV-25766 Unused CTE lead to a crash in find_field_in_tables/find_order_in_list
Do not assume that subquery Item always present.
2022-02-10 14:36:25 +01:00
Monty
ad1fb06982 MDEV-27789 mysql_upgrade / mariadb-upgrade in 10.6.6 is putting password in host argument
Removed all dependencies of command line arguments based on positions in
an array (this kind of code should never have been written).
Instead use option names, which are stable.

Reviewer: Sergei Golubchik
2022-02-10 12:29:37 +02:00
Oleksandr Byelkin
8a7776a83d Merge branch '10.4' into bb-10.4-release 2022-02-09 08:53:02 +01:00
Oleksandr Byelkin
e352444558 Merge branch '10.3' into bb-10.3-release 2022-02-09 08:49:00 +01:00
Oleksandr Byelkin
941bc70536 Merge branch '10.2' into bb-10.2-release 2022-02-09 08:44:48 +01:00
Daniel Bartholomew
2f07b21cf3
bump the VERSION 2022-02-08 17:10:48 -05:00
Daniel Bartholomew
30cc63fa1a
bump the VERSION 2022-02-08 16:47:37 -05:00
Daniel Bartholomew
c0a44ff7f1
bump the VERSION 2022-02-08 16:28:44 -05:00
Vladislav Vaintroub
ae33a006f7 MDEV-27738 Windows : mysql-test-run --extern does not work
Use portable quoting in mtr_add_arg.
2022-02-08 10:14:50 +01:00
Teemu Ollakka
21413aee0a MDEV-27737 Wsrep SST scripts not working on FreeBSD
- Changed SST scripts to use /usr/bin/env bash instead of
  /bin/bash for better portability.
- Fixed use of mktemp on non-Linux platforms to produce
  temporary file instead of directory.

Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
2022-02-08 08:02:01 +02:00
Sergei Petrunia
5c89386fdb MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode
(Backport Varun Gupta's patch + edit the commit comment)

Name resolution code produced errors for valid queries with window
functions (but not for queries which used aggregate functions as
window functions).

Name resolution code worked incorrectly, because window function
objects had is_window_func_sum_expr()=false. This was so, because
mark_as_window_func_sum_expr() was only called for aggregate functions
used as window functions.

The fix is to call it for any window function.
2022-02-07 21:43:42 +03:00