Commit graph

179846 commits

Author SHA1 Message Date
Jan Lindström
6449f0559b MDEV-13549: Galera test failures
Fix test case MW-44 by disabling Galera replication of MyISAM
tables (mysql.general_log especially) to avoid MDL lock
wait later.
2018-04-05 17:15:24 +03:00
Jan Lindström
33b103b4ca MDEV-13549: Galera test failures
Test did not reset modified variables correctly.
2018-04-05 17:15:24 +03:00
Jan Lindström
b1bf571e3d MDEV-13549: Galera test failures
galera_wsrep_desync_wsrep_on test does work on 10.1
2018-04-05 17:15:24 +03:00
Jan Lindström
a41bd33d3b MDEV-13549: Galera test failures
Fix test failure on galera_gcs_fragment. Test requires Galera debug
library with debug_sync functionality.
2018-04-05 17:15:23 +03:00
Jan Lindström
e2e1483dd2
Merge pull request #675 from codership/MDEV-13549-fixes-for-MW-284
MDEV-13549 Fix and re-enable MTR test galera.MW-284
2018-04-05 17:13:53 +03:00
Sergey Vojtovich
5ccf3f96ac Fix misuse of MY_CHECK_CXX_COMPILER_FLAG
- compile_flags already include from top CMakeLists.txt
- MY_CHECK_CXX_COMPILER_FLAG() accepts only one parameter
- output variable of MY_CHECK_CXX_COMPILER_FLAG() is have_CXX__Wa__nH
- same check for mariabackup

Based on contribution by satanson (PR#466).
2018-04-05 17:45:36 +04:00
Daniele Sciascia
45eca6178e MDEV-13549 Fix and re-enable MTR test galera.MW-284
The following changes are committed:

* `RESET MASTER` at the end of the test. This was necessary to allow the test
  to run on repeated runs.

* `--source include/galera_wait_ready.inc` after setting `gmcast.isolate=0` to
  get back to a primary component.

* Fix for assertion in `Protocol::end_statement()`. The assertion is due to
  the fact that function `do_command()` calls `thd->protocol->end_statement()`,
  without setting an error, when it is detected that galera is not ready yet.
  Following line somehow disappeared in a past merge:
  ```
  my_message(ER_UNKNOWN_COM_ERROR,
             "WSREP has not yet prepared node for application use", MYF(0));
  ```
2018-04-05 14:43:11 +02:00
Marko Mäkelä
4fde1361a6 MDEV-15553 Assertion failed in dict_table_get_col_name
dict_foreign_qualify_index(): Avoid a redundant and harmful
computation of col_name of a virtual column. This fixes the
assertion failure.

dict_foreign_push_index_error(): Do not call dict_table_get_col_name()
on a virtual column. (It is unclear if this condition is actually
reachable.)
2018-04-05 15:01:17 +03:00
Ian Gilfillan
8901155780 Update contributors 2018-04-05 14:23:18 +04:00
Jan Lindström
87d763015a MDEV-13549: Galera test failures
Fix test failure on galera_toi_dll_fk_insert. DEFAULT value seems
to be 3 but test expects it to be 1.
2018-04-05 10:31:42 +03:00
Jan Lindström
2ad51c3153
Merge pull request #686 from codership/MDEV-13549-fixes-for-mysql-wsrep#90
MDEV-13549 Fix and re-enable MTR test galera.mysql-wsrep#90
2018-04-05 08:59:28 +03:00
Jan Lindström
4f3d2e60ad
Merge pull request #690 from codership/MDEV-13549-fixes-for-galera_gra_log
MDEV-13549 Fix and re-enable MTR test galera.galera_gra_log
2018-04-04 15:26:05 +03:00
Vicențiu Ciorbaru
6a72b9096a Merge branch '5.5' into 10.0 2018-04-03 18:08:30 +03:00
Daniele Sciascia
eeb684221d MDEV-13549 Fix and re-enable MTR test galera.galera_gra_log
Test galera checks that a `GRA_x_x.log` file is created whenever
wsrep applier fails to apply some replication event. The file
contains the corresponding binlog event that failed to apply.
The test creates a new file by concatenating a pre-recorded
file containing the binlog header (see `std-data/binlog-header.log`)
and the `GRA_x_x.log` file. The test then checks that the resulting
file, containing the binlog header and the event that failed to
apply, is correctly read by `mysqlbinlog` program.
The test fails in MariaDB because the GRA_x_x.log file created
by MariaDB already contains the binlog header (see MDEV-7867).
This patch fixes/simplifies test `galera.galera_gra_log` so that
it doesn't concatenate `std-data/binlog-header.log` with the
`GRA_x_x.log` file. File `std-data/binlog-header.log` is deleted
altoghether, because not used by any other test.
2018-04-03 16:30:58 +02:00
Michael Gmelin
ed33296246 Fix LibreSSL X509 (SSL) certificate hostname checking.
(Currently) LibreSSL doesn't calculate the string length of the hostname
that's passed to X509_check_host automatically in case namelen/chklen is 0.
This causes server certificate validation to fail when building MariaDB with
LibreSSL.

The proposed fix makes MariaDB determine the string length passed to
X509_check_host. As there are no ill side-effects (OpenSSL's X509_check_host
also simply calls strlen if namelen == 0, see also X509_check_host(3)), this
wasn't wrapped in any #ifdef like constructs.

Please see here for a proposed patch to modify LibreSSL's behavior:
https://github.com/libressl-portable/openbsd/pull/87
2018-04-03 16:20:04 +02:00
Sergei Golubchik
f5369faf5b don't disable SSL when connecting via libmysqld 2018-04-03 16:19:10 +02:00
Sergei Golubchik
df6197c8b9 compiler warning
warning: format '%p' expects argument of type 'void *', but argument 4 has type 'long int'
2018-04-03 16:19:10 +02:00
Marko Mäkelä
bc2501453c Remove an unused variable 2018-04-03 16:58:35 +03:00
Marko Mäkelä
3c21eccb8c MDEV-15764 InnoDB may write uninitialized garbage to redo log
log_write_up_to(): Erase the end of the current log block.
Simplify the computation of pad_size.

log_buffer_switch(): Evaluate a condition only once.
2018-04-03 15:58:13 +03:00
Alexander Barkov
606e21867c MDEV-15630 uuid() function evaluates at wrong time in query 2018-04-03 16:28:52 +04:00
Thirunarayanan Balathandayuthapani
d9c5a46678 MDEV-15737 assertion in mariabackup.exe!recv_calc_lsn_on_data_add()
- recovered_lsn shouldn't be initialized during xtrabackup_copy_logfile().
If partial redo log read during the end of xtrabackup_copy_logfile() then
recovered_lsn will be different from scanned_lsn. Re-initialization of
recovered_lsn could lead to partial read again. It is a regression of
MDEV-14545
2018-04-03 16:43:36 +05:30
Daniel Black
8ffbb825e6 increase upper value of max_prepared_stmt_count to UINT32_MAX
The upper 1M limit for max_prepared_stmt_count was set over 10 years
ago. It doesn't suite current hardware and a sysbench oltp_read_write
test with 512 threads will hit this limit.
2018-04-03 10:37:20 +04:00
Jan Lindström
7ffa82b03c MDEV-14616: WSREP has not yet prepared node for application use error
MariaDB adjustments.

mysqltest.cc : Allow 12 error codes at --error

wait_until_connected_again.inc: Replace numeric error codes with symbols

mysqltest.test: Add error codes to test that tests too many errorcodes
2018-04-03 08:10:21 +03:00
Daniele Sciascia
992370693f MW-405 Remove wait_until_connected_again.inc from kill_galera.inc
kill_galera.inc can no longer rely on wait_until_connected_again.inc.
This is because wait_until_connected_again now tries to make sure
that the server it is connected eventually transition to ready
state. Whereas some tests may need to kill galera while the server
is in a non-primary view.
2018-04-03 08:10:21 +03:00
Daniele Sciascia
54652161a2 MW-405 Adjust galera_pc_weight to new wait_until_connected_again
Test galera_3nodes.galera_pc_weight started to fail because it
expects to use wait_until_connected_again while remaining in
non-primary view. Hopefully this is the only test which makes
this assumption, and fortunately those wait_until_connected_again
seem unnecessary, so this patch removes them.
2018-04-03 08:10:21 +03:00
Daniele Sciascia
fc26fd1c47 MW-405 Remove redundant conditions
Remove clause on `thd->variables.wsrep_on` in the following code:

if (WSREP(thd))
{
...
        if (thd->variables.wsrep_on &&
            ...

In the above snippet, `WSREP(thd)` already ensures thd->variables.wsrep_on
2018-04-03 08:10:21 +03:00
Daniele Sciascia
d970f805e6 MW-405 Make sure wsrep is ready in wait_until_connected_again.inc
wait_until_connected_again issues 'SHOW STATUS' query repeatedly
until mysqld replies without errors.
However, SHOW STATUS is treated specially by wsrep in that it is
allowed to proceed even if wsrep is not yet in ready state. As a
consequence, after returning from wait_until_connected_again,
wsrep may not be ready yet and subsequent queries may fail with
error "1047 WSREP has not yet prepared node for application use".
To avoid those errors, the patch includes wait_wsrep_ready.inc at
the end of the wait_until_connected_again.
2018-04-03 08:10:21 +03:00
Galina Shalygina
6223f1dd98 MDEV-15579 Crash in Item_field::used_tables() called by
Item::derived_field_transformer_for_having

The crash occurred due to an inappropriate handling of multiple equalities
when pushing conditions into materialized views/derived tables. If equalities
extracted from a multiple equality can be pushed into a materialized
view/derived table they should be plainly conjuncted with other pushed
predicates rather than form a separate AND sub-formula.
2018-04-03 00:17:45 +02:00
Varun Gupta
10f6b7001b MDEV-9744: session optimizer_use_condition_selectivity=5 causing SQL Error (1918):
Encountered illegal value '' when converting to DECIMAL

The issue was that EITS data was allocated but then not read for some reason (one being to avoid a deadlock),
then the optimizer was using these bzero'ed buffers as EITS statistics.
This should not be allowed, we should use statistcs for a table only when we have successfully loaded/read
the stats from the statistical tables.
2018-04-02 13:14:30 +03:00
Vladislav Vaintroub
27c24808f7 MDEV-15636 mariabackup --lock-ddl-per-table hangs if ALTER table is running
concurrently.

There is a deadlock between

C1 mariabackup's connection that holds MDL locks
C2 Online ALTER TABLE that wants to have MDL exclusively
   and tries to upgrade its mdl lock.
C3 another mariabackup's connection that does FLUSH TABLES (or FTWRL)

C3 waits waits for C2,  which waits for C1, which waits for C3,
thus the deadlock.


MDL locks cannot be released until FLUSH  succeeds, because
otherwise it would allow ALTER to sneak in, causing backup to abort and
breaking lock-ddl-per-table's promise.

The fix here workarounds the deadlock, by killing connections in
"Waiting for metadata lock" status (i.e ALTER). This killing continues
until FTWRL succeeds.

Killing connections is skipped in case --no-locks parameter
was  passed to backup, because there won't be a FLUSH.

For the reference,in Percona's xtrabackup --lock-ddl-per-connection
silently implies --no-lock ie FLUSH is always skipped there.

A rather large part of fix is introducing DBUG capability to start
a query  the new connection at the right moment of backup
compensating somewhat for mariabackup' lack of send_query or DBUG_SYNC.
2018-04-01 14:26:06 +00:00
Vladislav Vaintroub
a1d68faa38 CMake : Move INNODB_DISALLOW_WRITES from top-level CMakeLists.txt to innodb 2018-04-01 14:26:06 +00:00
Marko Mäkelä
55f4e4800b MDEV-15325 fixup: Disable test for --embedded 2018-03-29 22:00:07 +03:00
Daniel Black
402c7584a8 MDEV-13785: move defination HAVE_LARGE_PAGES -> HAVE_LINUX_LARGE_PAGES
HAVE_LARGE_PAGES was always Linux but now there is
HAVE_SOLARIS_LARGE_PAGES in the code base. Innodb was using HAVE_LINUX_LARGE_PAGES
so keep this consistent everywhere.

Test plan:

$ grep Hugepagesize: /proc/meminfo
Hugepagesize:       2048 kB

$ sudo sysctl vm.nr_hugepages=1024
vm.nr_hugepages = 1024
$ sudo sysctl  kernel.shmmax=$(( 2 * 1024 *1024 * 1024 ))
kernel.shmmax = 2147483648

No errors in ouput:
$ sql/mysqld --skip-networking --datadir=/tmp/datadir --log-bin=/tmp/datadir/mysqlbin --socket /tmp/s.sock --lc-messages-dir=${PWD}/sql/share --verbose --large-pages=1
2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld (mysqld 10.2.14-MariaDB-log) starting as process 25406 ...
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Uses event mutexes
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Compressed tables use zlib 1.2.11
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using Linux native AIO
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Number of pools: 1
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using SSE2 crc32 instructions
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Completed initialization of buffer pool
2018-03-23 12:51:18 139696883590912 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Highest supported file format is Barracuda.
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 128 out of 128 rollback segments are active.
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Creating shared tablespace for temporary tables
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 5.7.21 started; log sequence number 1620099
2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Loading buffer pool(s) from /tmp/datadir/ib_buffer_pool
2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Buffer pool(s) load completed at 180323 12:51:18
2018-03-23 12:51:18 139697428129984 [Note] Plugin 'FEEDBACK' is disabled.
2018-03-23 12:51:18 139697428129984 [Note] Reading of all Master_info entries succeded
2018-03-23 12:51:18 139697428129984 [Note] Added new Master_info '' to hash table
2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld: ready for connections.
Version: '10.2.14-MariaDB-log'  socket: '/tmp/s.sock'  port: 0  Source distribution

$ grep -i huge /proc/25406/smaps | grep -v ' 0 kB'
Private_Hugetlb:    8192 kB
Private_Hugetlb:    2048 kB
$ grep huge /proc/25406/numa_maps
7f0d74400000 default file=/SYSV00000000\040(deleted) huge
7f0dbd200000 default file=/SYSV00000000\040(deleted) huge dirty=4 N0=4 kernelpagesize_kB=2048
7f0dc5600000 default file=/SYSV00000000\040(deleted) huge
7f0dd1200000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048

$ grep Huge  /proc/meminfo
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:     940
HugePages_Free:      935
HugePages_Rsvd:      177
HugePages_Surp:        0
Hugepagesize:       2048 kB

Ran again with --memlock
(note needs ulimit -l > size)

$ grep Huge  /proc/meminfo
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:     940
HugePages_Free:      758
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

$ grep huge /proc/26020/numa_maps
7fe870400000 default file=/SYSV00000000\040(deleted) huge dirty=62 N0=62 kernelpagesize_kB=2048
7fe8b3a00000 default file=/SYSV00000000\040(deleted) huge dirty=66 N0=66 kernelpagesize_kB=2048
7fe8bd600000 default file=/SYSV00000000\040(deleted) huge dirty=53 N0=53 kernelpagesize_kB=2048
7fe8c8400000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048

$ grep -i huge /proc/26020/smaps | grep -v ' 0 kB'
Private_Hugetlb:  126976 kB
Private_Hugetlb:  135168 kB
Private_Hugetlb:  108544 kB
Private_Hugetlb:    2048 kB
2018-03-29 18:55:18 +04:00
Marko Mäkelä
014dfe473a MDEV-15719: Adjust a test case 2018-03-29 16:58:59 +03:00
Marko Mäkelä
3eb73bf630 Remove unnecessary SysTablespace references 2018-03-29 16:54:05 +03:00
Marko Mäkelä
622d21e2b8 row_drop_table_for_mysql(): Use a constant string
It does not hurt to delete non-existing records from SYS_TABLESPACES
and SYS_DATAFILES. Because MariaDB does not support CREATE TABLESPACE,
only the system tablespace (space_id=0) can contain multiple tables.
But, there are no entries for the system tablespace in these tables
(which actually are stored inside the system tablespace).
2018-03-29 16:54:05 +03:00
Daniele Sciascia
390e5ab794 MDEV-13549 Fix and re-enable MTR test galera.mysql-wsrep#90
Test was missing DEBUG_SYNC cleanup `SET DEBUG_SYNC ='RESET'`.
2018-03-29 15:50:06 +02:00
Sergei Petrunia
b922741074 MDEV-15472: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failure
MariaDB differs from the upstream for "DDL-like" command. For these,
it sets binlog_format=STATEMENT for the duration of the statement.
This doesn't play well with MyRocks, which tries to prevent DML
commands with binlog_format!=ROW.

Also, if Locked_tables_list::reopen_tables() returned an error, then
close_cached_tables should propagate the error condition and not silently
consume it (it's difficult to have test coverage for this because this
error condition is rare)
2018-03-29 14:43:08 +03:00
Marko Mäkelä
adaee46a90 MDEV-15682 mariabackup.unsupported_redo fails in buildbot with wrong result code
Skip the test mariabackup.unsupported_redo if a checkpoint occurred
before mariabackup --backup completed. Remove the slow shutdowns
and restarts which were attempting to prevent the checkpoints from
occurring.
2018-03-29 13:22:59 +03:00
Marko Mäkelä
6cccef21a6 MDEV-15720 ib_buffer_pool unnecessarily includes the temporary tablespace
The purpose of the InnoDB buffer pool dump is to allow InnoDB to be
restarted with the same persistent data pages in the buffer pool.

The InnoDB temporary tablespace that was introduced in MariaDB 10.2.2
is always reinitialized on restart. Therefore, it does not make sense
to attempt to dump or restore any pages of the temporary tablespace.
2018-03-29 13:22:16 +03:00
Marko Mäkelä
4d9969c216 MDEV-15719 ALTER TABLE…ALGORITHM=INPLACE is unnecessarily refused due to innodb_force_recovery
ha_innobase::check_if_supported_inplace_alter(): Only check for
high_level_read_only. Do not unnecessarily refuse
ALTER TABLE...ALGORITHM=INPLACE if innodb_force_recovery was
specified as 1, 2, or 3.

innobase_start_or_create_for_mysql(): Block all writes from SQL
if the system tablespace was initialized with 'newraw'.
2018-03-29 13:20:59 +03:00
Sergei Petrunia
0d2fffb612 MDEV-15686: Loading MyRocks plugin back after it has been unloaded causes a crash
Adjust the testcase to handle all possible outcomes.
2018-03-29 11:08:32 +03:00
Jan Lindström
d21adb53a5
Merge pull request #676 from codership/MDEV-13549-fixes-for-galera_gtid_slave
MDEV-13549 Fix and re-enable MTR test galera.galera_gtid_slave
2018-03-29 08:07:47 +03:00
Marko Mäkelä
d18a66147c recv_validate_tablespace(): Fix -Wmissing-fallthrough 2018-03-28 20:40:09 +03:00
Marko Mäkelä
5beddfa08c fil_node_open_file(): Add a missing space to message 2018-03-28 20:39:57 +03:00
Jan Lindström
e550063ad9
Merge pull request #674 from codership/MDEV-13549-fixes-for-galera_as_master
MDEV-13549 Fix and re-enable MTR test galera.galera_as_master
2018-03-28 15:44:47 +03:00
Sergei Petrunia
011586c04d MDEV-15686: Loading MyRocks plugin back after it has been unloaded causes a crash
- Disallow loading of MyRocks (or any auxilary) plugins after it has been
  unloaded.
- Do it carefully - Plugin's system variables may be accesssed (e.g. default
  value is set) after the first rocksdb_done_func() call but before
  the secon rocksdb_init_func() call.
2018-03-28 14:30:37 +03:00
Sergei Petrunia
907aae2502 MDEV-15708: rocksdb.mariadb_plugin fails on winx64, Cannot enable tc-log at run-time
Ignore the warning.
On Windows, Galera is not available so the server starts in non-XA mode
when both MyRocks and InnoDB are disabled.
2018-03-28 14:28:58 +03:00
Jan Lindström
3b119d9d30 MDEV-11531: encryption.innodb_lotoftables failed in buildbot
Test changes only.
2018-03-28 13:14:24 +03:00
Daniele Sciascia
e376122460 MDEV-13549 Fix and re-enable MTR test galera.galera_gtid_slave
This patch makes two changes:

* It replaces `--sleep 1` with appropriate wait_conditions, and
  removes another `--sleep 1` which is no longer necessary, after
  MDEV-14144 has been fixed.

* It moves the `RESET MASTER` from node_1 at the very end, when it
  it sure that the other nodes have applied the the final cleanup
  `DROP TABLE t1,t2.`
  This solves the problem with the `DROP TABLE` not being replicated
  to the asynchronous slaves, which would make the test fail with:
  `Timeout in wait_condition.inc for SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';`
2018-03-28 11:46:23 +02:00