Commit graph

198567 commits

Author SHA1 Message Date
Monty
e39ed5d76f Updated sql-bench to run with PostgreSQL 14.9
- Updated capabilities for PostgreSQL in server.cfg
- Updated test-ATIS & test-table-elimination to work with PostgreSQL
- Updated test-transaction test to also work with non transactional tables

Other things:
- Added test of tables with many keys in test-insert
- Added 2 new GROUP BY .. ORDER BY test
2023-09-09 15:14:45 +03:00
Monty
69c420be3d Added support for --skip-secure-file-priv
This works the same as secure-file-priv="", but is more obvious way to
turn of secure-file-priv.
2023-09-09 15:14:44 +03:00
Sergei Petrunia
725bd56834 Merge 10.10 into 10.11 2023-08-17 13:44:05 +03:00
Sergei Petrunia
8aaacb5509 MDEV-31432 tmp_table field accessed after free
Before this patch, the code in Item_field::print() used
this convention (described in sql_explain.h:ExplainDataStructureLifetime):

- By default, the table that Item_field refers to is accessible.
- ANALYZE and SHOW {EXPLAIN|ANALYZE} may print Items after some
  temporary tables have been dropped. They use
  QT_DONT_ACCESS_TMP_TABLES flag. When it is ON, Item_field::print
  will not access the table it refers to, if it is a temp.table

The bug was that EXPLAIN statement also may compute subqueries (depending
on subquery context and @@expensive_subquery_limit setting). After the
computation, the subquery calls JOIN::cleanup(true) which drops some of
its temporary tables. Calling Item_field::print() that refer to such table
will cause an access to free'd memory.

In this patch, we take into account that query optimization can compute
a subquery and discard its temporary tables. Item_field::print() now
assumes that any temporary table might have already been dropped.
This means QT_DONT_ACCESS_TMP_TABLES flag is not needed - we imply it is
always present.

But we also make one exception: derived tables are not freed in
JOIN::cleanup() call. They are freed later in close_thread_tables(),
at the same time when regular tables are closed.
Because of that, Item_field::print may assume that temp.tables
representing derived tables are available.

Initial patch by: Rex Jonston
Reviewed by: Monty <monty@mariadb.org>
2023-08-16 17:26:37 +03:00
Marko Mäkelä
9cd2989589 Merge 10.6 into 10.10 2023-08-16 15:28:42 +03:00
Alexander Barkov
88dd50b80a After-merge cleanup for MDEV-27207 + MDEV-31719
Something went wrong during a merge (from 10.5 to 10.6)
of 68403eeda3
(fixing bugs MDEV-27207 and MDEV-31719).

Originally (in 10.5) the fix was done in_inet6::set() in
plugin/type_inet/sql_type_inet.cc.
In 10.6 this code resides in a different place:
in the method in_fbt::set() of a template class
in sql/sql_type_fixedbin.h.

During the merge:
- the fix did not properly migrate to in_fbt::set()
- the related MTR tests disappeared

This patch fixes in_fbt::set() properly and restores MTR tests.
2023-08-16 10:02:18 +04:00
Monty
ca5c122adc MDEV-9938 Prepared statement return wrong result (missing row)
The problem is that the first execution of the prepared statement makes
a permanent optimization of converting the LEFT JOIN to an INNER JOIN.

This is based on the assumption that all the user parameters (?) are
always constants and that parameters to Item_cond() will not change value
from true and false between different executions.

(The example was using IS NULL, which will change value if parameter
depending on if the parameter is NULL or not).

The fix is to change Item_cond::fix_fields() and
Item_cond::eval_not_null_tables() to not threat user parameters as
constants. This will ensure that we don't do the LEFT_JOIN -> INNER
JOIN conversion that causes problems.

There is also some things that needs to be improved regarding
calculations of not_null_tables_cache as we get a different value for
WHERE 1 or t1.a=1
compared to
WHERE t1.a= or 1

Changes done:
- Mark Item_param with the PARAM flag to be able to quickly check
  in Item_cond::eval_not_null_tables() if an item contains a
  prepared statement parameter (just like we check for stored procedure
  parameters).
- Fixed that Item_cond::not_null_tables_cache is not depending on
  order of arguments.
- Don't call item->eval_const_cond() for items that are NOT on the top
  level of the WHERE clause. This removed a lot of unnecessary
  warnings in the test suite!
- Do not reset not_null_tables_cache for not top level items.
- Simplified Item_cond::fix_fields by calling eval_not_null_tables()
  instead of having duplication of all the code in
  eval_not_null_tables().
- Return an error if Item_cond::fix_field() generates an error
  The old code did generate an error in some cases, but not in all
   cases.
  - Fixed all handling of the above error in make_cond_for_tables().
    The error handling by the callers did not exists before which
    could lead to asserts in many different places in the old code).
  - All changes in sql_select.cc are just checking the return value of
    fix_fields() and make_cond_for_tables() and returning an error
    value if fix_fields() returns true or make_cond_for_tables()
    returns NULL and is_error() is set.
- Mark Item_cond as const_item if all arguments returns true for
  can_eval_in_optimize().

Reviewer: Sergei Petrunia <sergey@mariadb.com>
2023-08-15 21:41:01 +03:00
Kristian Nielsen
f6dd130885 (Null) Merge 10.5 -> 10.6
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 18:11:35 +02:00
Kristian Nielsen
7c9837ce74 Merge 10.4 into 10.5
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 18:02:18 +02:00
Kristian Nielsen
805e0668c9 MDEV-31482: Lock wait timeout with INSERT-SELECT, autoinc, and statement-based replication
Remove the exception that InnoDB does not report auto-increment locks waits
to the parallel replication.

There was an assumption that these waits could not cause conflicts with
in-order parallel replication and thus need not be reported. However, this
assumption is wrong and it is possible to get conflicts that lead to hangs
for the duration of --innodb-lock-wait-timeout. This can be seen with three
transactions:

1. T1 is waiting for T3 on an autoinc lock
2. T2 is waiting for T1 to commit
3. T3 is waiting on a normal row lock held by T2

Here, T3 needs to be deadlock killed on the wait by T1.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 16:40:02 +02:00
Kristian Nielsen
18acbaf416 MDEV-31655: Parallel replication deadlock victim preference code errorneously removed
Restore code to make InnoDB choose the second transaction as a deadlock
victim if two transactions deadlock that need to commit in-order for
parallel replication. This code was erroneously removed when VATS was
implemented in InnoDB.

Also add a test case for InnoDB choosing the right deadlock victim.
Also fixes this bug, with testcase that reliably reproduces:

MDEV-28776: rpl.rpl_mark_optimize_tbl_ddl fails with timeout on sync_with_master

Reviewed-by: Marko Mäkelä <marko.makela@mariadb.com>
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 16:39:49 +02:00
Kristian Nielsen
900c4d6920 MDEV-31655: Parallel replication deadlock victim preference code errorneously removed
Restore code to make InnoDB choose the second transaction as a deadlock
victim if two transactions deadlock that need to commit in-order for
parallel replication. This code was erroneously removed when VATS was
implemented in InnoDB.

Also add a test case for InnoDB choosing the right deadlock victim.
Also fixes this bug, with testcase that reliably reproduces:

MDEV-28776: rpl.rpl_mark_optimize_tbl_ddl fails with timeout on sync_with_master

Note: This should be null-merged to 10.6, as a different fix is needed
there due to InnoDB locking code changes.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 16:35:30 +02:00
Kristian Nielsen
920789e9d4 MDEV-31482: Lock wait timeout with INSERT-SELECT, autoinc, and statement-based replication
Remove the exception that InnoDB does not report auto-increment locks waits
to the parallel replication.

There was an assumption that these waits could not cause conflicts with
in-order parallel replication and thus need not be reported. However, this
assumption is wrong and it is possible to get conflicts that lead to hangs
for the duration of --innodb-lock-wait-timeout. This can be seen with three
transactions:

1. T1 is waiting for T3 on an autoinc lock
2. T2 is waiting for T1 to commit
3. T3 is waiting on a normal row lock held by T2

Here, T3 needs to be deadlock killed on the wait by T1.

Note: This should be null-merged to 10.6, as a different fix is needed
there due to InnoDB lock code changes.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-15 16:34:09 +02:00
Marko Mäkelä
b4ace139a1 Remove the often-hanging test innodb.alter_rename_files
The test innodb.alter_rename_files rather frequently hangs in
checkpoint_set_now. The test was removed in MariaDB Server 10.5
commit 37e7bde12a when the code that
it aimed to cover was simplified. Starting with MariaDB Server 10.5
the page flushing and log checkpointing is much simpler, handled
by the single buf_flush_page_cleaner() thread.

Let us remove the test to avoid occasional failures. We are not going
to fix the cause of the failure in MariaDB Server 10.4.
2023-08-15 12:14:31 +03:00
Marko Mäkelä
acc90ce363 Merge 10.10 into 10.11 2023-08-15 11:24:41 +03:00
Marko Mäkelä
00d315a1b1 MariaDB 10.11.5 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmTaWdkACgkQ8WVvJMdM
 0djgRQ/+PxULklYgBnlw004qdxIzHdexs+HZkU63BxAFzUgEc/1As+vSxByG7b9p
 mD3Q43HE5NuxDV2bfEnyYSz+DIJemz/7AkCzBQg0l1Hx6q3j5fJ34dGT5mDWQOZ4
 sS92vIV1LGF0to09UYkambZLUTHbIjKsniIaDiwgQDDbNncMyGNRP6MyzB6x8YM2
 0NgQ4Jwg3QacneABsLy6UEGq8Wg1dTgNoH8w5YgvV3zFoWZPCFQJYMVEv4QUlMjd
 f4Pj0VaERwqTDvgd6MaFO88IdMo/7+alSQeIOJcgG2qsQXm1DbNmrXNpchOTLLdR
 ksUB5yjw8tDdPvKU3xDmry8IWDfUc2Sw+j5d8Qgwaxw63CJy+Bfp0IIdVhzSjBT4
 xmOuSPME2/Z7/yTVt23XCe4isiurg06WBeWe/bm3nr31W1XPC3a89SFy6zMjscKz
 +HtkzywSrh1AHW7ma3XrqCEtX/u4D+qxQEbK2QMVXt26Q+m4ZylXX4XAgu9dBon8
 UiAsgYWfapOHuoY2rz1yomx49EcuFZ6EHqrZzWlyBUIKAxasezAwAsJ/7fiTuoaw
 7eLqiNEGqh/I3eE3iFCebrW0W/TSeDFLx4CPkuxNRUaFKQSp3EtwAMTbIqH5bVNG
 1psFJEcJYG0KMSXXxtH5jlLO8bzGdlJ124ExBZ/MV62GxJQ8UBY=
 =kZoB
 -----END PGP SIGNATURE-----

Merge mariadb-10.11.5 into 10.11
2023-08-15 11:24:02 +03:00
Marko Mäkelä
17f5f1cba9 Merge 10.6 into 10.10 2023-08-15 11:22:36 +03:00
Marko Mäkelä
3fee1b4471 Merge 10.5 into 10.6 2023-08-15 11:21:34 +03:00
Marko Mäkelä
5bbe21182e MariaDB 10.10.6 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmTaWS8ACgkQ8WVvJMdM
 0dgXVA//byrDt4VR8aEtCqLQqgfItZndc+LhLoLyx8uKAQIB4CcN63LrMs9bYNk4
 tgXzDJBLKr5/oTxnYwhtEuIGn+qPGP0Xl5K696nyAj7A6MvPwqryO/RbM2YsPhzT
 6QORhTRZjOcxW9mIqPfizx/aw0cq30Vsrygv7h7XsyFrzr0emPqQvILoeIieeIO2
 p/QBOgFNGDfIDiaG6XewqUKvHMIQHUmsnORtb2vWte0178nkGUlbWeC/Uu05aH3i
 uj3466solYjVWOb6mSE+JwsTVJqL1xlgSpG6x/nnodWJ26W4/ep7Cbx5RdS/BR0D
 DOg3S/ncVoP8nYTATEwRL9pY9rRzr5QBMG4j+pRF/kLShPojkYxxChnIjR1LuWrm
 7e7CwUXLKhWQnIh1JWpnukMRcJf21vg4fvLQWkEF0ozSHUwqee+mcajgu3UDr0ZO
 jPIFlg0UJ/Wsko4rmzqKxq+cmOWmOxd4e3TRYTHNLEzKVigJaPealFbLDfOw94Tb
 cTh6Fxw2u7XmXUQ3+rj4TPmzf4X2EeDnOPxHfoyberbiT6tQM9stQY1GdXoJXnYA
 1c9HJekmKOGmx+eopbntnB2Tg0iHIOf4tl4NC3wEyGjWXZY5StdjleERApOSYboM
 FfuwpjuTsqOApVRrdoZVZnxLYiOwoUUdIV3rYjYw2YiYhU1FjPw=
 =5g1P
 -----END PGP SIGNATURE-----

Merge mariadb-10.10.6 into 10.10
2023-08-15 11:15:03 +03:00
Marko Mäkelä
599c4d9a40 Merge 10.4 into 10.5 2023-08-15 11:10:27 +03:00
Marko Mäkelä
6fdc684681 MariaDB 10.4.31 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmTaVsgACgkQ8WVvJMdM
 0dgYMw//WZH7t1W4bIxq38dP+07j5JPlh+VivkMozbM8BcD7b+VtX62YFqfE+GHs
 T0dRy2KZk3VwJvPR4FDtbnp30NADW1GI+rGLptZxEPpr57sUSWyQH7pcmUkmtwSs
 f2UJhA3yYdGiV7RMGJwhHRReMgVqsFRgjKGro1uFHyy2g+ffo3a05XFD6fsphGcO
 cbZtGJI5LpJ2q+fPIQq4QuicbcqRWnXcOkKUupz74YV7pvWNM52GbLGtSRbsaQ2d
 E/HS5Ip6klRY3zKxsLd7crEqyubyd3Q4S7yE1RZ2PzYGfZ+qfHEMH8sYnIt3D9uF
 X4f9XKTmgbxz8ElucRssNmayuGBlcX8W1WL2SNA9595Hf/79aYeOpmnE+fDkMdIJ
 RPYVYkUTN2KFmWbVcyMmXqe8Y7xZq5Mk2BlFYFAeZ5J4RcR0BE3bXLJN9XeeHgXH
 1f3VqaE+pgUf4DNHrr1kF+4e77g9whlAe5cv0cOlsSe2qOrnovSWvmVBjrX46CMe
 JmBl9RtHc5tNNlrPp9SZ0xjspsiWlBTDXh3khYgLz4wovB3uDR59CDdgOVNe2MfM
 vXoFpx3VFdL0Ht8NqUJVojKvbWY8kd4yC9mNjuhRQzuvlMyTJpZKJ3rBiRT9MvT8
 2JsVZ5MXygifiquH4xAE2d5UgR6V6t2CFw42xufnBTssBe1ZJm4=
 =cfUg
 -----END PGP SIGNATURE-----

Merge mariadb-10.4.31 into 10.4
2023-08-15 11:04:12 +03:00
Marko Mäkelä
2e78465d04 MariaDB 10.5.22 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmTaV9kACgkQ8WVvJMdM
 0djynBAAr0N4XsvmYYJs8s+juFVoFRYWJOtXsI0kic+eTbMge/go8Ya0B/st6ser
 6vA8FD7E0bSGhiZREEYdsvzpZuELv/pRUTFu9NCeFY/P6jwHr35/S1Ob9zCIlatj
 N4GWSKqEocefzySsX41V21sVU1qw/MpYVDYmQQ8p33IeWAmPOZDc2kg0VeS2+Sif
 pUTXBVrhU1o1YSdihHBAZ0JB3A812xRn+6DivK1zZqu2BgQVMF3/uGnidnoFba8H
 DZqT5S0pFgAe6ZNQrnToNSG6iQmaCQHnXHedS3dFtZd4eoZc/xiIKXaxzz6EdCIc
 c2BcC7v3ZVCP9zmc3Oug4n3neq68YQY4WBdt9EJcAYODD9WLB9dBJWZ5oIGd/Xyl
 D7a/cIP6RMLVGxPGHan3nK9PYwCfrx/EXaMPmO9Ema5FzCuPv84nslsTvWTF1e6J
 ev/euZmQHuFpnbS1+sklLnrxO5Z+ZwG+DAUwixIugyHAeFJJjL+b1PxODn++vzfp
 lmxXICEyewu5l1V0kxlR5rD2PlvsEyL49n+QePMwkdRpkqHRb7ZkF0Hj6YcgL2kN
 w5O2T6eL7LlF95GFQ9+2xYEofUJCr105WLLD/+Oc9DsAZ8qEpqs8y8rmGLXQCCbs
 Q1xN3wgFzU8jn6Qkr45n6CkA0jhewAeMAUu5czQ9L7IpbfkEuRY=
 =fo9X
 -----END PGP SIGNATURE-----

Merge mariadb-10.5.22 into 10.5
2023-08-15 11:03:47 +03:00
Marko Mäkelä
fc78b25337 MariaDB 10.6.15 release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmTaWBgACgkQ8WVvJMdM
 0djmdhAAg5mO0fFFSA2dQNdl0uZx+7QpA9PJFzJzSq4MXja/JY1lUomQ8mDoI8U1
 rbiSM/SDQf2YH/UZhMjuzwP5WLhXwOctLlORxWQiBfxfAHWOwFAGs4vHwrBj/THx
 z4Ex2d5dHW36yVblJaXsl8E8l9MEaPP2i5KN6l9aUMM6DGteckiIiWuwaz9oALWd
 6RWet7zKVK6abt6yo1zDbj9lXBzzjw4rC5LnJG1c10Y4FS9TR+EqU4jfmXMXRJMg
 IatwdtCafpYwmaXQja5nglF9ziby3Up2zfbnROzYjHnbKHLkPehiDQLSuDBk6opf
 EW1/JOr9Is0pRlL/d/8ls7R2s3g7q57TwEhL90WV3qzARhLf3B363IQMdx7iM46u
 kBWGeEvEC8XEAyAYJj2DlkwMimmHCPhBQpf5nzkMNp/WEkdFEDB5r40ZnJV0qS4L
 dMu8gZWf9gBNsLK2+ktV9otQ/EMtgafqHOdXJfyia1XQBCl3NSVvJkcw3X4TM2R7
 NClpy7dQY4ZxFykBahaLQJmu7wKh0naEz4jRy782FKcteqpNycASbgPmn3gXvofl
 wc3Sgd9oQR5i6uGYNJt3eEo/fv/tqt6kv1jL9+ZCs7CGlfbOc10lwpLna7CpjQD0
 u3xD5yBKgblbjB1L9zyQF++KKKLyHEdFDPjZa33hmcq9U9dKleE=
 =awyr
 -----END PGP SIGNATURE-----

Merge mariadb-10.6.15 into 10.6
2023-08-15 11:03:00 +03:00
Alexander Barkov
9c8ae6dca5 MDEV-24797 Column Compression - ERROR 1265 (01000): Data truncated for column
Fix issue was earlier fixed by MDEV-31724. Only adding MTR tests.
2023-08-15 09:36:38 +04:00
Alexander Barkov
1fa7c9a3cd MDEV-31724 Compressed varchar values lost on joins when sorting on columns from joined table(s)
Field_varstring::get_copy_func() did not take into account
that functions do_varstring1[_mb], do_varstring2[_mb] do not support
compressed data.

Changing the return value of Field_varstring::get_copy_func()
to `do_field_string` if there is a compresion and truncation
at the same time. This fixes the problem, so now it works as follows:
- val_str() uncompresses the data
- The prefix is then calculated on the uncompressed data

Additionally, introducing two new copying functions
- do_varstring1_no_truncation()
- do_varstring2_no_truncation()

Using new copying functions in cases when:
- a Field_varstring with length_bytes==1 is changing to a longer
    Field_varstring with length_bytes==1
- a Field_varstring with length_bytes==2 is changing to a longer
    Field_varstring with length_bytes==2

In these cases we don't care neither of compression nor
of multi-byte prefixes: the entire data gets fully copied
from the source column to the target column as is.

This is a kind of new optimization, but this also was needed
to preserve existing MTR test results.
2023-08-15 07:00:17 +04:00
Daniel Bartholomew
b96172555c
bump the VERSION 2023-08-14 13:48:55 -04:00
Daniel Bartholomew
19a2456f07
bump the VERSION 2023-08-14 13:48:05 -04:00
Daniel Bartholomew
e0398c5b8c
bump the VERSION 2023-08-14 13:47:13 -04:00
Daniel Bartholomew
d84df2b878
bump the VERSION 2023-08-14 13:46:16 -04:00
Daniel Bartholomew
dd19ba188c
bump the VERSION 2023-08-14 13:43:36 -04:00
Marko Mäkelä
e9723c2cbb MDEV-31473 Wrong information about innodb_checksum_algorithm in information_schema.SYSTEM_VARIABLES
MYSQL_SYSVAR_ENUM(checksum_algorithm): Correct the documentation string.
Fixes up commit 7a4fbb55b0 (MDEV-25105).
2023-08-14 13:36:17 +03:00
Daniel Black
649fdd9d0b deb autobake - add trixie 2023-08-14 17:11:38 +10:00
Oleksandr Byelkin
7875294b6b fix of 32bit results after merge 2023-08-11 08:35:40 +02:00
Julius Goryavsky
646eb7be49 galera: wsrep-lib submodule update 2023-08-11 07:13:35 +02:00
Oleksandr Byelkin
587d0b944f Merge branch '10.10' into 10.11 2023-08-10 21:21:22 +02:00
Oleksandr Byelkin
cce155cc90 Merge branch '10.9' into 10.10 2023-08-10 21:20:38 +02:00
Oleksandr Byelkin
3e0009dc3a Merge branch '10.6' into 10.9 2023-08-10 21:19:03 +02:00
Oleksandr Byelkin
0d16eb35bc Merge branch '10.5' into 10.6 2023-08-10 21:18:25 +02:00
Oleksandr Byelkin
7e650253dc Merge branch '10.4' into 10.5 2023-08-10 21:17:44 +02:00
Monty
2aea938749 MDEV-31893 Valgrind reports issues in main.join_cache_notasan
This is also related to
MDEV-31348 Assertion `last_key_entry >= end_pos' failed in virtual bool
           JOIN_CACHE_HASHED::put_record()

Valgrind exposed a problem with the join_cache for hash joins:
=25636== Conditional jump or move depends on uninitialised value(s)
==25636== at 0xA8FF4E: JOIN_CACHE_HASHED::init_hash_table()
          (sql_join_cache.cc:2901)

The reason for this was that avg_record_length contained a random value
if one had used SET optimizer_switch='optimize_join_buffer_size=off'.

This causes either 'random size' memory to be allocated (up to
join_buffer_size) which can increase memory usage or, if avg_record_length
is less than the row size, memory overwrites in thd->mem_root, which is
bad.

Fixed by setting avg_record_length in JOIN_CACHE_HASHED::init()
before it's used.

There is no test case for MDEV-31893 as valgrind of join_cache_notasan
checks that.
I added a test case for MDEV-31348.
2023-08-10 20:57:42 +02:00
Kristian Nielsen
b2e312b055 MDEV-23021: rpl.rpl_parallel_optimistic_until fails in Buildbot
The test case accessed slave-relay-bin.000003 without waiting for the IO
thread to write it first. If the IO thread was slow, this could fail.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-10 19:52:25 +02:00
Kristian Nielsen
5055490c17 MDEV-381: fdatasync() does not correctly flush growing binlog file
Revert the old work-around for buggy fdatasync() on Linux ext3. This bug was
fixed in Linux > 10 years ago back to kernel version at least 3.0.

Reviewed-by: Marko Mäkelä <marko.makela@mariadb.com>
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2023-08-10 19:52:04 +02:00
Monty
e9333ff03c MDEV-31893 Valgrind reports issues in main.join_cache_notasan
This is also related to
MDEV-31348 Assertion `last_key_entry >= end_pos' failed in virtual bool
           JOIN_CACHE_HASHED::put_record()

Valgrind exposed a problem with the join_cache for hash joins:
=25636== Conditional jump or move depends on uninitialised value(s)
==25636== at 0xA8FF4E: JOIN_CACHE_HASHED::init_hash_table()
          (sql_join_cache.cc:2901)

The reason for this was that avg_record_length contained a random value
if one had used SET optimizer_switch='optimize_join_buffer_size=off'.

This causes either 'random size' memory to be allocated (up to
join_buffer_size) which can increase memory usage or, if avg_record_length
is less than the row size, memory overwrites in thd->mem_root, which is
bad.

Fixed by setting avg_record_length in JOIN_CACHE_HASHED::init()
before it's used.

There is no test case for MDEV-31893 as valgrind of join_cache_notasan
checks that.
I added a test case for MDEV-31348.
2023-08-10 17:35:37 +03:00
Oleksandr Byelkin
0edb80f632 Merge branch '10.10' into 10.11 2023-08-09 21:25:47 +02:00
Oleksandr Byelkin
4e2c67a617 Merge branch '10.9' into 10.10 2023-08-09 21:24:57 +02:00
Oleksandr Byelkin
f692b2b6bb Merge branch '10.6' into 10.9
# Conflicts:
#	mysql-test/main/sp.result
#	mysql-test/main/sp.test
2023-08-09 21:22:49 +02:00
Sergei Petrunia
8d210fc2aa MDEV-31877: ASAN errors in Exec_time_tracker::get_cycles with innodb slow log verbosity
Remove redundant delete_explain_query() calls in

sp_instr_set::exec_core(), sp_instr_set_row_field::exec_core(),
sp_instr_set_row_field_by_name::exec_core().

These calls are made before the SP instruction's tables are
"closed" by close_thread_tables() call.

When we call close_thread_tables() after that, we no longer
can collect engine's counter variables, as they use the data
structures that are located in the Explain Data Structures.

Also, these delete_explain_query() calls are redundant, as
sp_lex_keeper::reset_lex_and_exec_core() has another
delete_explain_query() call, which is located in the right
location after the close_thread_tables() call.
2023-08-09 15:42:31 +02:00
Jan Lindström
0be4781428 MDEV-31737 : Node never returns from Donor/Desynced to Synced when wsrep_mode = BF_ABORT_MARIABACKUP
Problem was incorrect condition when node should have
resumed and resync at backup_end. Simplified condition
to fix the problem and added missing test case for
this wsrep_mode = BF_ABORT_MARIABACKUP.

Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
2023-08-09 03:14:35 +02:00
Andrew Hutchings
161ce045a7 Revert "use environment file in systemd units for _WSREP_START_POSITION"
This reverts commit 6c40590405.
2023-08-08 15:46:39 +01:00
Andrew Hutchings
48e6918c94 Revert "update galera_new_cluster to use environment file"
This reverts commit b54e4bf00b.
2023-08-08 15:46:39 +01:00