1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-09 08:01:34 +03:00
Commit Graph

189727 Commits

Author SHA1 Message Date
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
Alexander Barkov
49b29e35b2 Merge remote-tracking branch 'origin/10.4' into 10.5 2020-05-19 12:36:58 +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
Daniel Black
3ea05d0842 largepages: osx compile warning fix
my_is_2pow is only used on linux.

fixes compile warning:

mysys/my_largepage.c:48:23: warning: unused function 'my_is_2pow' [-Wunused-function]

static inline my_bool my_is_2pow(size_t n) { return !((n) & ((n) - 1)); }

                      ^

1 warning generated.
2020-05-18 19:43:50 +04: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
Marko Mäkelä
23047d3ed4 Merge 10.4 into 10.5 2020-05-18 17:30:02 +03:00
Vladislav Vaintroub
f86d97c3fe Compiling - improve multithreaded build
In multithreaded build (at least confirmed with Windows ninja and msbuild),
at the end of "sql" target compilation, only 2 processors are used,
compiling either sql_yacc.cc or sql_yacc_ora.cc.
Thus, link of dependent executables or libraries is delayed while build is
underusing the CPU.

Rearrange the source list to improve  parallelism.
2020-05-18 13:00:49 +00:00
Vladislav Vaintroub
8eed9a4648 MDEV-22613 Windows - reduce package size
Liposuction of about 20% package size is achieved by using
linker /OPT:REF,ICF and compile option /Gw
2020-05-18 13:00:49 +00:00
Vladislav Vaintroub
21321fcbbd Windows : small cmake cleanup
Use STRING(APPEND VAR...) rather than SET(VAR "${VAR} ..."), it is shorter
2020-05-18 13:00:49 +00:00
Vladislav Vaintroub
1f952df44a MDEV-22612 Fix -DWITH_ASAN=1 on Windows. 2020-05-18 13:00:49 +00:00
Vladislav Vaintroub
9f8e555895 Fix clang-cl warning 2020-05-18 13:00:49 +00: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
Julius Goryavsky
e0ddb077d9 MDEV-22554: galera_sst_mariabackup fails with "Failed to start mysqld.2"
The problem is caused by the operation of netcat streamer and does
not appear on systems where socat is installed. We need to add the
"-N" option for netcat to call shutdown() on the socket when receiving
EOF from STDIN.
2020-05-18 12:17:57 +02:00
Julius Goryavsky
f9d8571f38 MDEV-22554: galera_sst_mariabackup fails with "Failed to start mysqld.2"
The problem is caused by the operation of netcat streamer and does
not appear on systems where socat is installed. We need to add the
"-N" option for netcat to call shutdown() on the socket when receiving
EOF from STDIN.
2020-05-18 12:16:14 +02:00
Julius Goryavsky
ea912d1605 MDEV-22554: galera_sst_mariabackup fails with "Failed to start mysqld.2"
The problem is caused by the operation of netcat streamer and does
not appear on systems where socat is installed. We need to add the
"-N" option for netcat to call shutdown() on the socket when receiving
EOF from STDIN.
2020-05-18 12:14:50 +02:00
Julius Goryavsky
9f294644c4 MDEV-22554: galera_sst_mariabackup fails with "Failed to start mysqld.2"
The problem is caused by the operation of netcat streamer and does
not appear on systems where socat is installed. We need to add the
"-N" option for netcat to call shutdown() on the socket when receiving
EOF from STDIN.
2020-05-18 12:11:59 +02:00
Marko Mäkelä
03aaa7f7a1 Merge 10.2 into 10.3 2020-05-18 10:47:11 +03:00
Marko Mäkelä
d0e3b0eea6 Merge 10.1 into 10.2 2020-05-18 09:43:58 +03:00
Daniel Black
7baa40dffa MDEV-21976: mtr main.udf - broaden localhost (#1543)
Localhost, depending on the platform can return any
127.0.0.1/8 address.
2020-05-18 09:37:51 +03:00
Otto Kekäläinen
c995090a53 Travis-CI: Remove builds that always fail to make CI useful again
Also clean away dead code that is not used and will never have any use
on the 10.2 branch.
2020-05-17 15:52:35 +03:00
Otto Kekäläinen
8d056affd8 Travis-CI: Shorten deb build log to keep it under 4 MB
There is a 4 MB hard limit on Travis-CI and build output needs to be less
than that. Silencing the 'make install' step gets rid of a lot of
"Installing.." and "Missing.." and removing all mysql-test files will
make the dh_missing warnings much shorter.

Cherry-picked from 41952c85f1.
2020-05-17 15:46:34 +03:00
Otto Kekäläinen
9ddeccc299 Travis-CI: Add missing build dependency dh-exec
Backported from 30b44aaec7.
2020-05-17 15:46:34 +03:00
Varun Gupta
0a5668f512 MDEV-22556: Incorrect result for window function when using encrypt-tmp-files=ON
The issue here is that end_of_file for encrypted temporary IO_CACHE (used by filesort) is updated
using lseek.
Encryption adds storage overhead and hides it from the caller by recalculating offsets and lengths.
Two different IO_CACHE cannot possibly modify the same file
because the encryption key is randomly generated and stored in the IO_CACHE.
So when the tempfiles are encrypted DO NOT use lseek to change end_of_file.

Further observations about updating end_of_file using lseek
1) The end_of_file update is only used for binlog index files
2) The whole point is to update file length when the file was modified via a different file descriptor.
3) The temporary IO_CACHE files can never be modified via a different file descriptor.
4) For encrypted temporary IO_CACHE, end_of_file should not be updated with lseek
2020-05-17 15:26:18 +05:30
Thirunarayanan Balathandayuthapani
4f26aea51b MDEV-21269 Parallel merging of fts index rebuild fails
Problem:
=======
  - During alter rebuild, document read from old table is tokenzied
parallelly by innodb_ft_sort_pll_degree threads and stores it
in respective merge files. While doing the parallel merge, InnoDB
wrongly skips the root level selection of merging buffer records.
So it leads to insertion of merge records in non-ascending order.

Solution:
==========
  Build selection tree for the root level also. So that root of
selection tree can always contain sorted buffer.
2020-05-17 11:43:25 +05:30
Otto Kekäläinen
5d85bc08c6 MDEV-21976: Re-disable main.udf, reverts mistake in merge b30a013142
This test was disabled in a135f0ab88, but
accidentally reverted during the merge in
0186b0a077...b30a013142

Because it was a 3-way merge, the removal is not directly visible.
It can be verified manually though:

  Line not changed:
  git diff a135f0ab88d6..0186b0a07760 mysql-test/unstable-tests

  Line removed:
  git diff a135f0ab88d6..b30a01314217 mysql-test/unstable-tests


This commit fixes the Travis-CI build and makes the main 10.5 git branch
green again on Travis-CI (and whatever else build environment that also
is failing due to this test).

Related: MDEV-22592
2020-05-16 11:48:26 +03:00
Alexander Barkov
54c169a986 Merge remote-tracking branch 'origin/10.2' into 10.3 2020-05-16 12:28:03 +04:00
Otto Kekäläinen
91446c822f Deb: Create empty migrated-from-my.cnf-settings.conf for Buildbot tests
The buildbot.askmonty.org has explicit tests that check that this file
exists, thus to get tests pass, an empty placeholder must be created.
Remove this once CI has been updated not to expect this file.
2020-05-16 10:42:35 +03:00
Otto Kekäläinen
dab5698b3c Deb: Stop using mariadb-service-convert
We can't expect that users want to always convert their mysqld_safe
settings on an upgrade. In its current form it will always run, and that
seems unnecessary on every single installation.

Also the script is buggy, leaks mysqld_safe output into the written file
and since it gets syntax errors the whole mariadb.service will fail to
work.
2020-05-16 10:42:35 +03:00
Otto Kekäläinen
69964c4425 Deb: Add manually dh_systemd_start snippets
These do now show up automatically due to init and systemd customizations,
so the handiest fix is to add them manually. This has been the praxis
in downstream MariaDB packaging for a couple years now, and works fine.

- Ensure service is loaded and started after installation,
  (fixes service start issues in Debian/Ubuntu upgrades where
  otherwise service mysql status stayed stopped)

- Ensure service stopped before removal/purge
  (fixes unstopped processes detected by piuparts)

- Ensure systemd daemon is reloaded after removal/purge when service
  has been removed
2020-05-16 10:42:35 +03:00
Otto Kekäläinen
764dd39ca7 Deb: Add support for legacy init systems again
Partially reverts commit a4cc6fb91f.

While all current versions of Linux have systemd, support for traditional
init.d is still needed e.g. on Linux subsystem on Windows, kFreeBSD and
special variants of Debian/Ubuntu that for other reasons don't have
systemd.

Thus, re-introduce the init file that was remove, but this time with
then name 'mariadb'.

Supporting traditional sysv init in paraller with systemd is easy, since
Debian has facilities for it.

Also simplify and update salsa-ci.yml install/upgrade testing works
for all previous MariaDB and MySQL releases without any excess quirks.

Note that in fresh installs the salsa-ci.yml needs to run command
'service mariadb status' to control the service, while on upgrades
it is enough to run 'service mysql status', since the init.d/mysql
file is left behind from previous install, along with some other
config files such as /etc/default/mysql and /etc/mysql/* stuff.
2020-05-16 10:42:35 +03:00
Alexander Barkov
bf8ae81269 Merge remote-tracking branch 'origin/10.1' into 10.2
Also, adding 10.2 related changes for MDEV-22579
2020-05-16 10:52:08 +04:00
Marko Mäkelä
66f1e288a1 Merge 10.3 into 10.4 2020-05-16 07:54:09 +03:00
Marko Mäkelä
9e6e43551f Merge 10.3 into 10.4
We will expose some more std::atomic internals in Atomic_counter,
so that dict_index_t::lock will support the default assignment operator.
2020-05-16 07:39:15 +03:00
Marko Mäkelä
38d62189a8 Merge 10.2 into 10.3 2020-05-16 06:37:24 +03:00
Marko Mäkelä
4f29d776c7 Merge 10.3 into 10.4 2020-05-16 06:27:55 +03:00
Marko Mäkelä
85651269b6 MDEV-18100: Clean up test 2020-05-16 06:24:09 +03:00
Marko Mäkelä
3f12a5968a MDEV-13626: Make test more robust
In commit b1742a5c95 we forgot
FLUSH TABLES, potentially causing errors for MyISAM system tables.
2020-05-15 22:54:05 +03:00
Marko Mäkelä
fc0960aa96 Merge 10.1 into 10.2 2020-05-15 22:43:33 +03:00