Commit graph

198037 commits

Author SHA1 Message Date
Marko Mäkelä
2b61ff8f22 Merge 11.0 into 11.1 2023-03-29 17:23:21 +03:00
Marko Mäkelä
5e01255732 Merge 10.11 into 11.0 2023-03-29 17:20:42 +03:00
Marko Mäkelä
d84a282629 Merge 10.10 into 10.11 2023-03-29 16:53:37 +03:00
Marko Mäkelä
191821f7df Merge 10.9 into 10.10 2023-03-29 15:29:02 +03:00
Marko Mäkelä
55e78ebf41 Merge 10.8 into 10.9 2023-03-29 15:28:13 +03:00
Marko Mäkelä
dd2fe81122 Merge 10.6 into 10.8 2023-03-29 15:16:42 +03:00
Marko Mäkelä
0760ad3336 Merge 10.5 into 10.6 2023-03-28 15:25:52 +03:00
Marko Mäkelä
402f36dd65 MDEV-30936 fixup
fil_space_t::~fil_space_t(): Invoke ut_free(name) because
doing so in the callers would trip MSAN_OPTIONS=poison_in_dtor=1
2023-03-28 15:10:32 +03:00
Marko Mäkelä
dfa90257f6 MDEV-30936 clang 15.0.7 -fsanitize=memory fails massively
handle_slave_io(), handle_slave_sql(), os_thread_exit():
Remove a redundant pthread_exit(nullptr) call, because it
would cause SIGSEGV.

mysql_print_status(): Add MEM_MAKE_DEFINED() to work around
some missing instrumentation around mallinfo2().

que_graph_free_stat_list(): Invoke que_node_get_next(node) before
que_graph_free_recursive(node). That is the logical and
MSAN_OPTIONS=poison_in_dtor=1 compatible way of freeing memory.

ins_node_t::~ins_node_t(): Invoke mem_heap_free(entry_sys_heap).

que_graph_free_recursive(): Rely on ins_node_t::~ins_node_t().

fts_t::~fts_t(): Invoke mem_heap_free(fts_heap).

fts_free(): Replace with direct calls to fts_t::~fts_t().

The failures in free_root() due to MSAN_OPTIONS=poison_in_dtor=1
will be covered in MDEV-30942.
2023-03-28 11:44:24 +03:00
Shivam Choudhary
6c3b1dced4 Fixed some typos in optimizer_costs.txt 2023-03-28 18:41:09 +11:00
Yuchen Pei
7bd225e129
MDEV-30920 Remove need_lock and table from spider_close_sys_table()
They became obsolete after commit cfd145faed:

commit cfd145faed
Author: Nayuta Yanagisawa <nayuta.yanagisawa@hey.com>
Date:   Fri Jan 28 01:03:06 2022 +0900

    MDEV-27641 Spider: remove #if MYSQL_VERSION_ID < ${VERSION}
2023-03-28 16:31:53 +11:00
Sergei Golubchik
c2b6916393 MDEV-19629 post-merge fixes
* it isn't "pfs" function, don't call it Item_func_pfs,
  don't use item_pfsfunc.*
* tests don't depend on performance schema, put in the main suite
* inherit from Item_str_ascii_func
* use connection collation, not utf8mb3_general_ci
* set result length in fix_length_and_dec
* do not set maybe_null
* use my_snprintf() where possible
* don't set m_value.ptr on every invocation
* update sys schema to use the format_pico_time()
* len must be size_t (compilation error on Windows)
* the correct function name for double->double is fabs()
* drop volatile hack
2023-03-27 21:27:27 +02:00
Ahmed Ibrahim
d9808f79de MDEV-19629: format_pico_time implementation 2023-03-27 16:34:29 +02:00
Marko Mäkelä
5a1f7522a5 Fix ColumnStore again
This fixes up commit e371b1e264
that accidentally reverted d77aaa6994.
2023-03-27 13:43:18 +03:00
Marko Mäkelä
f6c5e917e0 Merge 11.0 into 11.1 2023-03-27 12:53:57 +03:00
Tuukka Pasanen
31487f4b2b MDEV-30837: Remove usage of AWK in autobake-debs.sh
AWK is used in autobake-debs.sh for printing information
about created DEB packages.

This can be rewrite with bash inner commands read and echo.
2023-03-27 16:28:48 +11:00
Tuukka Pasanen
fe32a4a5bb MDEV-30837: Remove usage of AWK from Debian init and postinst scripts
AWK in used in Debian SysV-init and postinst scripts to determine
is there enough space starting MariaDB database or create new
database to target destination.

These AWK scripts can be rewrited to use pure SH or help
using Coreutils which is mandatory for usage of MariaDB currently.

Reasoning behind this is to get rid of one very less used dependency
2023-03-27 16:28:48 +11:00
Andrei
216d99bb39 MDEV-26071: rpl.rpl_perfschema_applier_status_by_worker failed in bb …
…with: Test assertion failed

Problem:
=======
Assertion text: 'Value returned by SSS and PS table for Last_Error_Number
should be same.'
Assertion condition: '"1146" = "0"'
Assertion condition, interpolated: '"1146" = "0"'
Assertion result: '0'

Analysis:
========
In parallel replication when slave is started the worker pool gets
activated and it gets cleared when slave stops. Each time the worker pool
gets activated a backup worker pool also gets created to store worker
specific perforance schema information in case of errors. On error, all
relevant information is copied from rpl_parallel_thread to rli and it gets
cleared from thread.  Then server waits for all workers to complete their
work, during this stage performance schema table specific worker info is
stored into the backup pool and finally the actual pool gets cleared. If
users query the performance schema table to know the status of workers the
information from backup pool will be used. The test simulates
ER_NO_SUCH_TABLE error and verifies the worker information in pfs table.
Test works fine if execution occurs in following order.

Step 1. Error occurred 'worker information is copied to backup pool'.
Step 2. handle_slave_sql invokes 'rpl_parallel_resize_pool_if_no_slaves' to
deactivate worker pool, it marks the pool->count=0
Step 3. PFS table is queried, since actual pool is deactivated backup pool
information is read.

If the Step 3 happens prior to Step2 the pool is yet to be deactivated and
the actual pool is read, which doesn't have any error details as they were
cleared. Hence test ocasionally fails.

Fix:
===
Upon error mark the back pool as being active so that if PFS table is
quried since the backup pool is flagged as valid its information will be
read, in case it is not flagged regular pool will be read.

This work is one of the last pieces created by the late Sujatha Sivakumar.
2023-03-24 15:56:24 +02:00
Marko Mäkelä
e371b1e264 MDEV-28883 fixup: clang -Winconsistent-missing-override 2023-03-24 15:12:08 +02:00
Thirunarayanan Balathandayuthapani
e06c6046d2 MDEV-29545 InnoDB: Can't find record during replace stmt
Problem:
========
- InnoDB replace statement returns can't find record as result during
bulk insert operation. InnoDB returns DB_END_OF_INDEX blindly when
bulk transaction is visible to current transaction even though
the search tuple is inserted as a part of current replace statement.

Solution:
=========
row_search_mvcc(): InnoDB should allow the transaction to read
all the rows when innodb intends to do any locking on the
record even though bulk insert transaction changes are
visible to the current transaction
2023-03-24 15:20:21 +05:30
Marko Mäkelä
07460c31e3 MDEV-30900 Crash on macOS due to zero-initialized buf_dblwr.write_cond
buf_dblwr_t::init(), buf_dblwr_t::close(): Cover also write_cond,
which was added in commit a55b951e60
without explicit initialization. On GNU/Linux, PTHREAD_COND_INITIALIZER
is a zero-initializer. That is why the default zero initialization
happened to work on that platform.
2023-03-24 07:59:27 +02:00
Tuukka Pasanen
a79abb6517 MDEV-30778: Remove Awk from mysql_install_db
Commit reduces need of AWK-command at least
for Debian mariadb-server-compat package.

Commit removes need of AWK-command from
scripts/mysql_install_db.sh script.

AWK command is replace by purely Posix sh compiliant version.
2023-03-24 12:54:21 +11:00
Otto Kekalainen
50c8ef01fc Fix trivial spelling errors
- agressively -> aggressively
- exising -> existing
- occured -> occurred
- releated -> related
- seperated -> separated
- sucess -> success
- use use -> use

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.
2023-03-24 12:54:05 +11:00
Daniel Black
15ca6c5a2f rpl_reporting: sprintf -> snprintf
This was failing to compile with AppleClang 14.0.0.14000029.

Thanks to Arunesh Choudhary for noticing.
2023-03-24 12:04:16 +11:00
Aleksey Midenkov
a8b616d1e9 MDEV-30421 rpl_parallel_*.test cleanup
Moved rpl_parallel_*.inc to rpl_parallel_*.test
2023-03-23 22:31:55 +03:00
Marko Mäkelä
9aa098c46b Merge 11.0 into 11.1 2023-03-23 12:38:46 +02:00
Marko Mäkelä
92772485b7 MDEV-30911 Multi-batch recovery of ROW_FORMAT=COMPRESSED table hangs
In commit d6aed21621 a condition at
the start of buf_read_ahead_random() was refactored. Only the caller
buf_read_recv_pages() was adjusted for this. We must in fact adjust
every caller and make sure that spare blocks will be allocated
while crash recovery is in progress. This is the simplest fix;
ideally recovery would operate on the compressed page frame.

The observed recovery hang occurred because pages 0 and 3 of a
tablespace were being read due to buf_page_get_gen() calls by
trx_resurrect_table_locks() before the log records for these pages
had been applied. In buf_page_t::read_complete() we would skip
the call to recv_recover_page() because no uncompressed page frame
had been allocated for the block.
2023-03-23 12:21:48 +02:00
Nayuta Yanagisawa
22392b36ee
MDEV-28522 Delete constant SPIDER_SQL_TYPE_*_HS
The HandlerSocket support of Spider has been deleted by MDEV-26858.
Thus, the constants, SPIDER_SQL_TYPE_*_HS, are no longer necessary.
2023-03-23 10:07:52 +11:00
Marko Mäkelä
1efdf67e60 Merge 10.5 into 10.6 2023-03-22 15:54:45 +02:00
Marko Mäkelä
701399ad37 MDEV-30882 Crash on ROLLBACK in a ROW_FORMAT=COMPRESSED table
btr_cur_upd_rec_in_place(): Avoid calling page_zip_write_rec() if we
are not modifying any fields that are stored in compressed format.

btr_cur_update_in_place_zip_check(): New function to check if a
ROW_FORMAT=COMPRESSED record can actually be updated in place.

btr_cur_pessimistic_update(): If the BTR_KEEP_POS_FLAG is not set
(we are in a ROLLBACK and cannot write any BLOBs), ignore the potential
overflow and let page_zip_reorganize() or page_zip_compress() handle it.
This avoids a failure when an attempted UPDATE of an NULL column to 0 is
rolled back. During the ROLLBACK, we would try to move a non-updated
long column to off-page storage in order to avoid a compression failure
of the ROW_FORMAT=COMPRESSED page.

page_zip_write_trx_id_and_roll_ptr(): Remove an assertion that would fail
in row_upd_rec_in_place() because the uncompressed page would already
have been modified there.

This is a 10.5 version of commit ff3d4395d8
(different because of commit 08ba388713).
2023-03-22 15:19:52 +02:00
Tingyao Nian
dccbb5a6db [MDEV-30824] Fix binlog to use 'String' for setting 'character_set_client'
Commit a923d6f49c disabled numeric setting
of character_set_* variables with non-default values:

  MariaDB [(none)]> set character_set_client=224;
  ERROR 1115 (42000): Unknown character set: '224'

However the corresponding binlog functionality still write numeric
values for log event, and this will break binlog replay if the value is
not default. Now make the server use 'String' type for
'character_set_client' when generating binlog events

Before:

  /*!\C utf8mb4 *//*!*/;
  SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=33/*!*/;

After:

  /*!\C utf8mb4 *//*!*/;
  SET @@session.character_set_client=utf8mb4,@@session.collation_connection=33,@@session.collation_server=8/*!*/;

Note: prior to the previous commit, setting with '224' or '45' or
'utf8mb4' have the same effect, as they all set the parameter to
'utf8mb4'.

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.
2023-03-21 17:19:44 +04:00
Marko Mäkelä
535a38c455 MDEV-30400 fixup: Fix the UNIV_ZIP_DEBUG build 2023-03-20 14:28:03 +02:00
Sergei Petrunia
f6cb93ba8d Fix the testcase for MDEV-30693 2023-03-20 14:08:54 +03:00
Marko Mäkelä
bdcb2ae509 Merge 11.0 into 11.1 2023-03-20 10:39:40 +02:00
Marko Mäkelä
221b5d77ef Merge 10.11 into 11.0 2023-03-20 10:39:15 +02:00
Marko Mäkelä
faeca0008b Merge 10.10 into 10.11 2023-03-20 10:38:44 +02:00
Marko Mäkelä
78d0d74eb7 Merge 10.9 into 10.10 2023-03-20 10:38:15 +02:00
Marko Mäkelä
eec1d6ce3d Merge 10.8 into 10.9 2023-03-20 10:37:05 +02:00
Marko Mäkelä
e4b83f0feb Merge 10.6 into 10.8 2023-03-20 10:33:04 +02:00
Marko Mäkelä
32a53a66df MDEV-26827 fixup: Remove a bogus assertion
We can have dirty_blocks=0 when buf_flush_page_cleaner() is being woken up
to write out or evict pages from the buf_pool.LRU list.
2023-03-20 10:32:35 +02:00
Monty
7b032b01cd Fixed newly introduced bug in scripts/mysql_install_db
In some cases, the errors would not be written to the log.
This was however not critical as in most cases mysql_install_db
should not normally write anything to the log.
2023-03-19 21:41:17 +02:00
Marko Mäkelä
6e58d5ab6a Merge 11.0 into 11.1 2023-03-17 15:04:38 +02:00
Marko Mäkelä
4c355d4e81 Merge 10.11 into 11.0 2023-03-17 15:03:17 +02:00
Marko Mäkelä
7343a2ceb6 Merge 10.10 into 10.11 2023-03-17 14:23:03 +02:00
Marko Mäkelä
df08731b58 Merge 10.9 into 10.10 2023-03-17 14:22:35 +02:00
Marko Mäkelä
1147e32688 Merge 10.8 into 10.9 2023-03-17 14:22:10 +02:00
Marko Mäkelä
fa56adff75 Merge 10.6 into 10.8 2023-03-17 14:19:17 +02:00
Thirunarayanan Balathandayuthapani
e8e0559ed2 MDEV-30870 Undo tablespace name displays wrongly for I_S queries
- INNODB_SYS_TABLESPACES in information schema should display
innodb_undo001, innodb_undo002 etc as tablespace name for undo
tablespaces
2023-03-17 17:17:35 +05:30
Thirunarayanan Balathandayuthapani
18e4978edc MDEV-29975 InnoDB fails to release savepoint during bulk insert
- InnoDB does rollback the whole transaction and discards the
savepoint when there is a failure happens during bulk
insert operation. When server request to release the savepoint,
InnoDB should return DB_SUCCESS when it deals with bulk
insert operation
2023-03-17 16:41:27 +05:30
Marko Mäkelä
c50f849d64 Merge 10.10 into 10.11 2023-03-17 07:00:03 +02:00