Commit graph

188397 commits

Author SHA1 Message Date
Daniele Sciascia
dc22acfdb6
MDEV-22616 CHECK TABLE fails with wsrep_trx_fragment_size > 0 (#1551)
Executing CHECK TABLE  with streaming replication enabled reports
error "Streaming replication not supported with
binlog_format=STATEMENT".
Administrative commands such as CHECK TABLE, are not replicated and
temporarily set binlog format to statement.
To avoid the problem, report the error only for active transactions
for which streaming replication is enabled.
2020-05-21 09:34:03 +03:00
Sujatha
ce1c6dab3a MDEV-22451: SIGSEGV in __memmove_avx_unaligned_erms/memcpy from _my_b_write on CREATE after RESET MASTER
Merge branch '10.3' into 10.4
2020-05-20 21:15:43 +05:30
Sujatha
c7cdd049b5 MDEV-22451: SIGSEGV in __memmove_avx_unaligned_erms/memcpy from _my_b_write on CREATE after RESET MASTER
Merge branch '10.2' into 10.3
2020-05-20 21:02:39 +05:30
Sujatha
450a5b33a2 MDEV-22451: SIGSEGV in __memmove_avx_unaligned_erms/memcpy from _my_b_write on CREATE after RESET MASTER
Merge branch '10.1' into 10.2
2020-05-20 20:49:04 +05:30
Marko Mäkelä
b8e694a314 Merge 10.3 into 10.4 2020-05-20 17:10:12 +03:00
Marko Mäkelä
ed41947b78 Merge 10.2 into 10.3 2020-05-20 17:07:09 +03:00
Marko Mäkelä
22a6fa572b MDEV-19114 post-push fix: SIGSEGV on INSERT
ins_node_create_entry_list(): Create dummy empty tuples for
corrupted or incomplete indexes, to avoid dereferencing a NULL
dict_field_t::col pointer in row_build_index_entry_low().

This issue was found by a crash in the test gcol.innodb_virtual_basic
when merging the fix to 10.5.
2020-05-20 16:35:48 +03:00
Sujatha
836d708997 MDEV-22451: SIGSEGV in __memmove_avx_unaligned_erms/memcpy from _my_b_write on CREATE after RESET MASTER
Analysis:
========
RESET MASTER TO # command deletes all binary log files listed in the index
file, resets the binary log index file to be empty, and creates a new binary
log with number #. When the user provided binary log number is greater than
the max allowed value '2147483647' server fails to generate a new binary log.
The RESET MASTER statement marks the binlog closure status as
'LOG_CLOSE_TO_BE_OPENED' and exits. Statements which follow RESET MASTER
try to write to binary log they find the log_state != LOG_CLOSED and
proceed to write to binary log cache and it results in crash.

Fix:
===
During MYSQL_BIN_LOG open, if generation of new binary log name fails then the
"log_state" needs to be marked as "LOG_CLOSED". With this further statements
will find binary log as closed and they will skip writing to the binary log.
2020-05-20 17:42:28 +05:30
Rasmus Johansson
96bc626b8f MDEV-22631 fix 2020-05-20 10:05:18 +00:00
Rasmus Johansson
21e71766f6 MDEV-22631 fix 2020-05-20 10:04:13 +00:00
Rasmus Johansson
ed29782a03 MDEV-22631 fix 2020-05-20 10:02:40 +00:00
Rasmus Johansson
a6b4d4beff MDEV-22631 fix 2020-05-20 09:59:49 +00:00
Marko Mäkelä
d8dc3c72b6 Merge 10.3 into 10.4 2020-05-20 12:25:23 +03:00
Marko Mäkelä
f4f0ef3e37 Merge 10.2 into 10.3 2020-05-20 11:41:51 +03:00
Marko Mäkelä
e380f44742 Merge 10.1 into 10.2 2020-05-20 11:13:40 +03:00
Thirunarayanan Balathandayuthapani
1893a1370d MDEV-22633 Assertion failed in prepare_inplace_alter_table_dict
prepare_inplace_alter_table_dict(): In the error handling, relax
a debug assertion for the case that we did not execute
dict_stats_wait_bg_to_stop_using_table() yet.
2020-05-20 11:13:02 +03:00
Alexander Barkov
d4f97e2086 MDEV-22391 Assertion `0' failed in Item_type_holder::val_str on utf16 charset table query
Problem:
When handling a query like this:
  VALUES ('') UNION SELECT _utf16 0x0020 COLLATE utf16_bin;
Type_handler_string_result::Item_hybrid_func_fix_attributes()
tried to apply character set conversion Item_type_holder,
which causes a crash on DBUG_ASSERT(0) inside Item_type_holder::val_str().

Fix:
Overriding Item_type_holder's methods to avoid this, as follows:

  bool const_item() const { return false; }
  bool is_expensive() { return true; }
2020-05-20 11:53:09 +04:00
Marko Mäkelä
6b2c8cac1b MDEV-22258 Limit innodb_encryption_threads to 255
For no good reason, innodb_encryption_threads was limited to
4,294,967,295. Expectedly, the server would crash if such an
insane value was specified. Let us limit the maximum to 255.

The encryption threads are not doing much useful work.
They are basically only dirtying pages by performing
dummy writes via the redo log. The encryption key rotation
or the in-place addition or removal of encryption
will take place in the page cleaner.

In a quick test on a 20-core CPU (40 threads in total),
the sweet spot on an otherwise idle server seemed to be
innodb_encryption_threads=16 for the test
encryption.encrypt_and_grep. The new limit 255 should be
more than enough for even bigger servers.
2020-05-20 10:33:53 +03:00
Yury Kurlykov
d2900d917f
MDEV-22629 Remove fts_indexes field from struct fts_update_t (#1537)
fts_indexes field in fts_update_t never used. So replace fts_update_t
with doc_id_t in the code
2020-05-20 12:40:07 +05:30
Marko Mäkelä
dd95935e5b MDEV-22456 post-fix: Remove unused variable 2020-05-20 10:06:20 +03:00
Jan Lindström
ad0f85bcd2 MDEV-18838 : galera.galera_toi_truncate: Test failure: mysqltest: query 'reap' succeeded - should have failed with errno 1213
Test cleanup.
2020-05-20 09:34:50 +03:00
Andrei Elkin
7a5ba59e5f MDEV-22472 rpl.rpl_fail_register failed in buildbot with wrong result
This is a new test from upstream that did not expect the correct value
of the command slot of the Dump thread when the latter gets killed.

The test is made to expect "Killed" string as the command
in show-processlist as it is supposed to when a thread gets killed.
2020-05-19 21:57:01 +03:00
Marko Mäkelä
2bf93a8fd6 Merge 10.3 into 10.4 2020-05-19 21:18:15 +03:00
Rasmus Johansson
6b5f7ddc78 MDEV-22636 XML output for mtr doesn't work with valgrind option 2020-05-19 15:28:12 +00:00
Rasmus Johansson
294ac1fbab MDEV-22636 XML output for mtr doesn't work with valgrind option 2020-05-19 15:27:22 +00:00
Rasmus Johansson
2c4a2f2007 MDEV-22636 XML output for mtr doesn't work with valgrind option 2020-05-19 15:24:39 +00:00
Rasmus Johansson
395ed66b3b MDEV-22636 XML output for mtr doesn't work with valgrind option 2020-05-19 15:23:29 +00:00
Marko Mäkelä
79ed33c184 Merge 10.2 into 10.3 2020-05-19 17:05:05 +03:00
Marko Mäkelä
a8f044e1a4 MDEV-22456: Fix cmake -DWITH_INNODB_AHI=OFF
dict_index_remove_from_cache_low(): Add a missing #ifdef around
dict_index_t::freed().
2020-05-19 16:02:13 +03:00
Marko Mäkelä
cb437417d2 MDEV-19114 gcol.innodb_virtual_debug: Assertion n_fields>0 failed
This is a regression due to MDEV-16376
commit 8dc70c862b.
To make dict_index_t::detach_columns() idempotent,
we cleared dict_index_t::n_fields. But, this could
cause trouble with purge after a secondary index
creation failed (not even involving virtual columns).

A better way is to clear the dict_field_t::col pointers
that point to virtual columns that are being freed
due to aborting index creation on an index that depends
on a virtual column.

Note: the v_cols[] of an existing dict_table_t object will
never be modified. If any virtual columns are added or removed,
ha_innobase::commit_inplace_alter_table() would invoke
dict_table_remove_from_cache() and reload the table to dict_sys.
Index creation is a special case where the dict_index_t points
to virtual columns that do not yet exist in dict_table_t.
2020-05-19 16:02:13 +03:00
Marko Mäkelä
2e9f4cdc44 MDEV-21936 Assertion !btr_search_own... in btr_search_drop_page_hash_index
This is a regression due to the cleanup
commit 12f804acfa.

row_sel_open_pcur(): Remove the unnecessary parameter.
It suffices for us to acquire the adaptive hash index latch
only when btr_search_guess_on_hash() is called by
btr_cur_search_to_nth_level_func(), in
btr_pcur_open_with_no_init().

This code seems to be a relic from the times when there was
only one btr_search_latch, which was held in shared mode
for longer periods of time. Another relic of that era was
removed in commit e5980bf1b1.
This clean-up was missed when the btr_search_latch was split in
mysql/mysql-server/commit@ab17ab91ce18a47bb6c5c49e4dc0505ad488a448
(MySQL 5.7.8).
2020-05-19 15:43:35 +03:00
Monty
fa0397849a Move c++ code from my_atomic.h to my_atomic_wrapper.h
This is because it breaks code that is using extern "C" when including
my_atomic, which is the case with ha_s3.cc
2020-05-19 14:07:34 +03:00
Rasmus Johansson
e9a33a5392 MDEV-22631 some test causes MTR interruption without generating summary and XML 2020-05-19 10:51:28 +00:00
Monty
f9144a42e7 Don't run main.sp2 in emebedded server 2020-05-19 12:54:42 +03:00
Alexander Barkov
996b9a9d04 MDEV-22591 Debug build crashes on EXECUTE IMMEDIATE '... WHERE ?' USING IGNORE
Removing a wrong DBUG_ASSERT:
When Item_param gets "unfixed" in cleanup(), its "fixed" gets assigned
to false, while item_item keeps the value. So the assert was wrong.

Perhaps, instead of removing the assert, it was possible to reset
item_type to NO_VALUE in cleanup. But this is not very important:
it's implemented in 10.4 in a better way:
Item_param::is_fixed() always returns true and it does not need to be "unfixed".
2020-05-19 13:34:39 +04:00
Alexander Barkov
f7079d295b MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT))
The fix for MDEV-21995 earlier fixed MDEV-22610. Adding tests only.
2020-05-19 12:40:59 +04:00
Vlad Lesin
0f9bfcc323 MDEV-22554: "mariabackup --prepare" exits with code 0 even though innodb
error is logged

The fix is to set flag in ib::error::~error() and check it in
mariabackup.

ib::error::error() is replaced with ib::warn::warn() in
AIO::linux_create_io_ctx() because of two reasons:

1) if we leave it as is, then mariabackup MTR tests will fail with --mem
option, because Linux AIO can not be used on tmpfs,

2) when Linux AIO can not be initialized, InnoDB falls back to simulated
AIO, so such sutiation is not fatal error, it should be treated as warning.
2020-05-19 11:25:56 +03:00
Alexander Barkov
810b7f8ecb Merge remote-tracking branch 'origin/10.3' into 10.4 2020-05-19 12:03:12 +04:00
Marko Mäkelä
a84060567c Merge 10.1 into 10.2 2020-05-19 10:42:59 +03:00
Marko Mäkelä
c93f8aca65 MDEV-22618 Assertion !dict_index_is_online_ddl ... in lock_table_locks_lookup
lock_table_locks_lookup(): Relax the assertion.
Locks must not exist while online secondary index creation is
in progress. However, if CREATE UNIQUE INDEX has not been committed
yet, but the index creation has been completed, concurrent DML
transactions may acquire record locks on the index. Furthermore,
such concurrent DML may cause duplicate key violation, causing
the DDL operation to be rolled back. After that, the online_status
may be ONLINE_INDEX_ABORTED or ONLINE_INDEX_ABORTED_DROPPED.

So, the debug assertion may only forbid the state ONLINE_INDEX_CREATION.
2020-05-19 10:42:56 +03:00
Alexander Barkov
06fb78c6ac MDEV-21995 Server crashes in Item_field::real_type_handler with table value constructor
1. Code simplification:

Item_default_value handled all these values:
a. DEFAULT(field)
b. DEFAULT
c. IGNORE
and had various conditions to distinguish (a) from (b) and from (c).

Introducing a new abstract class Item_contextually_typed_value_specification,
to handle (b) and (c), so the hierarchy now looks as follows:

Item
  Item_result_field
    Item_ident
      Item_field
        Item_default_value                      - DEFAULT(field)
  Item_contextually_typed_value_specification
    Item_default_specification                  - DEFAULT
    Item_ignore_specification                   - IGNORE

2. Introducing a new virtual method is_evaluable_expression() to
determine if an Item is:
- a normal expression, so its val_xxx()/get_date() methods can be called
- or a just an expression substitute, whose value methods cannot be called.

3. Disallowing Items that are not evalualble expressions in table value
   constructors.
2020-05-19 10:55:39 +04:00
Monty
141cf43e61 Fixed assert in Aria on SHOW PROCEDURE STATUS
MDEV-18457 Assertion `(bitmap->map +
           (bitmap->full_head_size/6*6)) <= full_head_end failed

The problem was that full_head_size was not calculated correctly
in the case when insert_order was inforced, which is the case
for SHOW commands.
2020-05-19 03:42:54 +03:00
Vladislav Vaintroub
4869e7f4a8 MDEV-22615 system_time_zone may be incorrectly reported as "unknown".
TIME_ZONE_ID_UNKNOWN return code from GetDynamicTimeZoneInformation()
does not mean failure.

It only means, daylight saving dates in the returned strct are not valid.
TIME_ZONE_ID_INVALID means failure, in this case  "unknown" should be returned
2020-05-18 16:39:38 +02:00
Andrei Elkin
44c8d84908 MDEV-22520 Assertion gathered_length == thd->lex->comment.length failed in binlog_defragment
The assert was caused by early cleanup of a user variable participant
in BINLOG @var,@var where it plays twice. That was unexpected by the base
code to clear its value prematurely.

Fixed with relocating the user var destruction after operations with
its value is over.
2020-05-18 15:14:16 +03:00
Marko Mäkelä
faf6d0ef3f Merge 10.3 into 10.4 2020-05-18 15:05:52 +03:00
Marko Mäkelä
386f168ab3 MDEV-22456 after-merge fix: introduce Atomic_relaxed
In the merge 9e6e43551f
we made Atomic_counter a more generic wrapper of std::atomic
so that dict_index_t would support the implicit assignment operator.

It is better to revert the changes to Atomic_counter and
instead introduce Atomic_relaxed as a generic wrapper to std::atomic.

Unlike Atomic_counter, we will not define operator++, operator+=
or similar, because we want to make the operations more explicit
in the users of Atomic_wrapper, because unlike loads and stores,
atomic read-modify-write operations always incur some overhead.
2020-05-18 15:02:55 +03:00
Jan Lindström
fde94b4cd6 MDEV-21483 : Galera MTR tests failed: galera.MW-328A galera.MW-328B
Enable tests with additional galera output to find out actual
reason for test failures.
2020-05-18 14:21:12 +03:00
Marko Mäkelä
5e12aca57f Merge 10.2 into 10.3 2020-05-18 14:10:11 +03:00
Marko Mäkelä
f0be95b5b0 Merge 10.2 into 10.3 2020-05-18 14:09:34 +03:00
Marko Mäkelä
5b6bcb59ac MDEV-22611 Assertion btr_search_enabled failed during buffer pool resizing
In commit ad6171b91c (MDEV-22456)
we removed the acquisition of the adaptive hash index latch
from the caller of btr_search_update_hash_ref().
The tests innodb.innodb_buffer_pool_resize_with_chunks
and innodb.innodb_buffer_pool_resize
would occasionally fail starting with 10.3,
due to MDEV-12288 causing more purge activity during the test.

btr_search_update_hash_ref(): After acquiring the adaptive hash index
latch, check that the adaptive hash index is still enabled on the page.
2020-05-18 14:04:31 +03:00