Commit graph

178389 commits

Author SHA1 Message Date
Sergei Golubchik
678fb208e4 Merge branch 'connect/10.2' into 10.2 2017-08-16 18:16:50 +02:00
Sergei Golubchik
58b56f14a0 cleanup: remove ha_innopart.cc
we'll copy it from 5.7 when we'll need it
2017-08-16 18:14:26 +02:00
Sergei Petrunia
b3a4bc481b MDEV-13513: rocksdb.drop_table fails in buidbot with assertion failure
Apply this patch from upstream:

commit 2c8deddfb67f1cd41ea3d1ac95aa1aa9327e3406
Author: Yoshinori Matsunobu <yoshinorim@users.noreply.github.com>
Date:   Tue Aug 15 16:21:58 2017 -0700

    Set exclusive_manual_compaction = false on manual compactions

    Summary:
    Combining exclusive manual compaction and
    non-exclusive manual compaction may hit rocksdb assertion errors.
    This diff makes all MyRocks internal manual compactions non exclusive.
    Closes https://github.com/facebook/mysql-5.6/pull/682

    Differential Revision: D5633619

    Pulled By: yoshinorim

    fbshipit-source-id: a90786d
2017-08-16 14:36:03 +03:00
Jan Lindström
0a479f7860 More test failure fixes. 2017-08-16 13:10:01 +03:00
Jan Lindström
7ce37d9757 Move galera_ist_progress and galera_ist_restart_joiner tests under big_test.
This is because they could cause out of storage if run on /dev/shm.
2017-08-16 10:14:19 +03:00
Jan Lindström
81fd8ff676 Fix test failures. 2017-08-16 07:49:19 +03:00
Igor Babaev
a28152aafc Fixed the bug mdev-13346.
The bug was caused by a defect of the patch for the bug 11081.
The patch was actually a port of the fix this bug from the mysql
code line. Later a correction of this fix was added to the
mysql code. Here's the comment this correction was provided with:

  Bug#16499751: Opening cursor on SELECT in stored procedure causes segfault
  This is a regression from the fix of bug#14740889.
  The fix started using another set of expressions as the source for
  the temporary table used for the materialized cursor. However,
  JOIN::make_tmp_tables_info() calls setup_copy_fields() which creates
  an Item_copy wrapper object on top of the function being selected.
  The Item_copy objects were not properly handled by create_tmp_table -
  they were simply ignored. This patch creates temporary table fields
  based on the underlying item of the Item_copy objects.

The test case for the bug 13346 was taken from mdev-13380.
2017-08-15 16:20:48 -07:00
Sergei Petrunia
c354cb66b0 MDEV-13515: rocksdb.use_direct_reads_writes fails in buildbot with not found pattern
The test mis-used MTR's "restart the server if it crashed or exited"
feature to try starting MyRocks plugin with invalid arguments.

Changed the test to use the --default-storage-engine=myisam which
allows the server to start when MyRocks fails to start.

This removes the need to "start the server with the arguments which
will caused it to fail to start", and so removes the race conditions
with MTR server restart code and  mysqld.*.expect file.
2017-08-15 16:42:11 +03:00
Jan Lindström
5017c261d4 Fix test failure on test MW-86 and remove MW-360 test.
Merged from mysql-wsrep-bugs following:

GCF-1058 MTR test galera.MW-86 fails on repeated runs
Wait for the sync point sync.wsrep_apply_cb to be reached before
executing the test and clearing the debug flag sync.wsrep_apply_cb.

The race scenario:

Intended behavior:
node2: set sync.wsrep_apply_cb in order to start waiting in the background INSERT
node1: INSERT start
node2 (background): INSERT start
node1: INSERT end
node2: send signal to background INSERT: "stop waiting and continue executing"
node2: clear sync.wsrep_apply_cb as no longer needed
node2 (background): consume the signal
node2 (background): INSERT end
node2: DROP TABLE
node2: check no pending signals are left - ok

What happens occasionally (unexpected):
node2: set sync.wsrep_apply_cb in order to start waiting in the background INSERT
node1: INSERT start
node2 (background): INSERT start
node1: INSERT end
// The background INSERT still has _not_ reached the place where it starts
// waiting for the signal:
// DBUG_EXECUTE_IF("sync.wsrep_apply_cb", "now wait_for...");
node2: send signal to background INSERT: "stop waiting and continue executing"
node2: clear sync.wsrep_apply_cb as no longer needed
// The background INSERT reaches DBUG_EXECUTE_IF("sync.wsrep_apply_cb", ...)
// but sync.wsrep_apply_cb has already been cleared and the "wait" code is not
// executed. The signal remains unconsumed.
node2 (background): INSERT end
node2: DROP TABLE
node2: check no pending signals are left - failure, signal.wsrep_apply_cb is
pending (not consumed)

Remove MW-360 test case as it is not intended for MariaDB (uses
MySQL GTID).
2017-08-15 13:57:15 +03:00
Marko Mäkelä
5d1c0d0086 MDEV-13331 FK DELETE CASCADE does not honor innodb_lock_wait_timeout
row_ins_check_foreign_constraint(): On timeout,
return DB_LOCK_WAIT_TIMEOUT instead of DB_LOCK_WAIT,
so that the lock wait will be properly terminated.
Also, replace some redundant assignments.

It looks like this bug was introduced in MySQL 5.7.8 by:

    commit a97f6b91227c7e0fc3151cfe5421891e79c12d19
    Author: Annamalai Gurusami <annamalai.gurusami@oracle.com>
    Date:   Tue Jun 9 16:02:31 2015 +0530

        Bug #20953265 INNODB: FAILING ASSERTION: RESULT != FTS_INVALID
2017-08-15 10:51:43 +03:00
Marko Mäkelä
2f342c4507 MDEV-13498 DELETE with CASCADE constraints takes long time / MDEV-13246
MDEV-13498 is a performance regression that was introduced in MariaDB 10.2.2
by commit fec844aca8
which introduced some Galera-specific conditions that were being
evaluated even if the write-set replication was not enabled.

MDEV-13246 Stale rows despite ON DELETE CASCADE constraint
is a correctness regression that was introduced by the same commit.

Especially the subcondition
	!(parent && que_node_get_type(parent) == QUE_NODE_UPDATE)
which is equivalent to
	!parent || que_node_get_type(parent) != QUE_NODE_UPDATE
makes little sense. If parent==NULL, the evaluation would proceed to the
std::find() expression, which would dereference parent. Because no SIGSEGV
was observed related to this, we can conclude that parent!=NULL always
holds. But then, the condition would be equivalent to
	que_node_get_type(parent) != QUE_NODE_UPDATE
which would not make sense either, because the std::find() expression
is actually assuming the opposite when casting parent to upd_node_t*.

It looks like this condition never worked properly, or that
it was never properly tested, or both.

wsrep_must_process_fk(): Helper function to check if FOREIGN KEY
constraints need to be processed. Only evaluate the costly std::find()
expression when write-set replication is enabled.

Also, rely on operator<<(std::ostream&, const id_name_t&) and
operator<<(std::ostream&, const table_name_t&) for pretty-printing
index and table names.

row_upd_sec_index_entry(): Add !wsrep_thd_is_BF() to the condition.
This is applying part of "Galera MW-369 FK fixes"
f37b79c6da
that is described by the following part of the commit comment:
    additionally: skipping wsrep_row_upd_check_foreign_constraint if thd has
    BF, essentially is applier or replaying
    This FK check would be needed only for populating parent row FK keys
    in write set, so no use for appliers
2017-08-15 10:51:43 +03:00
Marko Mäkelä
b4f6b678a6 MDEV-13520 InnoDB attempts UPDATE with DB_TRX_ID=0 if innodb_force_recovery=3
trx_set_rw_mode(): Check the flag high_level_read_only instead
of testing srv_force_recovery (innodb_force_recovery) directly.
There is no need to prevent the creation of read-write transactions
if innodb_force_recovery=3 is used. Yes, in that mode any recovered
incomplete transactions will not be rolled back, but these transactions
will continue to hold locks on the records that they have modified.
If the new read-write transactions hit conflicts with already existing
(possibly recovered) transactions, the lock wait timeout mechanism
will work just fine.
2017-08-15 10:51:42 +03:00
Marko Mäkelä
a5e4365eb9 Fix a test result 2017-08-15 10:51:42 +03:00
Sergei Golubchik
48fe832650 Merge branch '10.0' into 10.1 2017-08-15 09:50:31 +02:00
Sergei Golubchik
c724fcd7a0 MDEV-13525 mtr and mysql-test-run symlinks are not installed anymore
Install mtr and mysql-test-run symlinks in case of the out-of-source
build. This was broken in c872b10022
2017-08-15 09:47:03 +02:00
Sergey Vojtovich
3e20a42bfb MDEV-8579 - Some sysvars in I_S are missing any meaningful help (comment) text
Follow-up to original patch: fixing test cases.
2017-08-15 10:13:57 +04:00
=Ian Gilfillan
f066c89a97 MDEV-8579 Expand system variable documentation 2017-08-15 10:13:57 +04:00
Elena Stepanova
88879b37fc Changes to RocksDB tests after the engine merge 2017-08-14 23:39:35 +03:00
Sergei Petrunia
d24f76e1a8 MDEV-13522: rocksdb.rocksdb_parts failed in buildbot
Make test result stable
2017-08-14 23:12:35 +03:00
Sergei Golubchik
fa7016cec1 un-disable a bunch of funcs_1 tests 2017-08-14 19:45:59 +02:00
Sergei Golubchik
b2af0ddcf9 enable innodb tests for virtual indexed columns (sic!)
collateral changes:
* remove a test from innodb_virtual_basic that is already present in
  gcol_keys_innodb
* set thd->abort_on_warning for inplace alter, just like it's set
  for copy_data_between_tables - to have warnings converted into
  errors identically in all alter algorithms
* don't ignore errors in TABLE::update_virtual_field
2017-08-14 19:45:59 +02:00
Sergei Golubchik
399e14f066 MDEV-13435 Crash when selecting virtual columns generated using JSON functions
don't allocate memory on thd->mem_root in every fix_fields(),
do it once and reuse.
2017-08-14 19:45:59 +02:00
Sergei Golubchik
d924e0b993 MDEV-13375 back_log ignored
doing SYSVAR_AUTOSIZE() because of back_log > max_connections
enabled "autosized" flag, and that made IS_SYSVAR_AUTOSIZE()
true, which triggered the second SYSVAR_AUTOSIZE.

Remove back_log <= max_connections limit, back_log
doesn't *always* have to be smaller than max_connections.
2017-08-14 19:45:59 +02:00
Sergei Golubchik
d07daa3125 MDEV-13313 JSON type alias is insufficiently compatible
make JSON an alias for LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

(same collation that item_jsonfunc.cc is using internally)
2017-08-14 19:45:59 +02:00
Sergei Golubchik
04b288ae47 MDEV-11114 Cannot drop column referenced by CHECK constraint
SQL Standard behavior for DROP COLUMN xxx RESTRICT:
* If a constraint (UNIQUE or CHECK) uses only the dropped column,
  it's automatically dropped too. If it uses many columns - an error.
2017-08-14 19:45:59 +02:00
Sergei Golubchik
28ddc9b3bb small cleanup 2017-08-14 19:45:59 +02:00
Sergei Golubchik
87f39bf824 MDEV-8659 Conflicting declaration is accepted: INT SIGNED ZEROFILL
don't allow arbitrary combinations of SIGNED/UNSIGNED/ZEROFILL
2017-08-14 19:45:59 +02:00
Sergei Golubchik
40eff5e097 cleanup: include/restart_mysqld.inc
let include/restart_mysqld.inc use include/start_mysqld.inc
and include/shutdown_mysqld.inc. Instead of copying their content.
2017-08-14 19:45:59 +02:00
Sergei Golubchik
1b993721ff MDEV-13472 rpl.rpl_semi_sync_wait_point crashes because of thd_destructor_proxy
InnoDB: in slow shutodwn mode do not stop purge threads
as long as some connection threads are running
2017-08-14 19:45:59 +02:00
Sergei Golubchik
023131e395 InnoDB: restore thd->proc_info in innobase_reset_background_thd() 2017-08-14 19:45:59 +02:00
Sergei Golubchik
dd67456af3 InnoDB: disallow fast_shutdown=0 when purge threads have exited 2017-08-14 19:45:58 +02:00
Sergei Golubchik
fc279d7ea2 InnoDB: test case to exploit a purge thread shutdown race condition
execute queries after purge thread has exited, but the connection
thread hasn't

before c720e68f53 it used to crash
2017-08-14 19:45:58 +02:00
Sergei Golubchik
34319403a5 fix a comment 2017-08-14 19:45:58 +02:00
Sergei Golubchik
3ec96c1824 MDEV-13370 Ambiguous behaviour regarding installation of header files
install all server includes under /usr/include/mysql/server/
and C/C includes under /usr/include/mysql/
2017-08-14 19:45:58 +02:00
Sergei Golubchik
c872b10022 don't install same files twice
CMakeLists.txt - merge mistake, apparently

include/CMakeLists.txt - install from CMAKE_CURRENT_BINARY_DIR.
  Only install from CMAKE_CURRENT_SOURCE_DIR, if it's different
  from CMAKE_CURRENT_BINARY_DIR

mysql-test/CMakeLists.txt - INSTALL_MYSQL_TEST() macro installs
  everything, no need to install mtr separately once again

mysql-test/lib/My/SafeProcess/CMakeLists.txt
  MYSQL_ADD_EXECUTABLE includes INSTALL

sql-bench/CMakeLists.txt
  list files explicitly. don't install garbage, don't process 'foo'
  and 'foo.sh' separately, it's only one file to install, not two.
2017-08-14 19:45:58 +02:00
Sergei Golubchik
c9db190fed cmake: update submodules automatically during the build 2017-08-14 19:45:58 +02:00
Sergei Golubchik
bfa9990e33 cleanup: simplify the assignment 2017-08-14 19:45:58 +02:00
Vladislav Vaintroub
0188819229 MDEV-13514 fix compilation for aws_key_management plugin 2017-08-14 17:22:18 +00:00
Sergei Golubchik
7581fb23e2 compilation fix for SLES 11 SP4
also fix innodb
2017-08-14 18:37:53 +02:00
Teemu Ollakka
b5323054af MW-383 Bumped wsrep patch version 2017-08-14 14:41:50 +03:00
Teemu Ollakka
dd72d66c45 MW-373 Wait for wsrep_ready at startup when provider is loaded
Conflicts:
	mysql-test/include/kill_and_restart_mysqld.inc
2017-08-14 14:41:12 +03:00
sjaakola
224ae5770f Refs: MW-363 * enabling binlog file copying even for binlog files with basename "0" * mtr suite uses binlog files with names: 0.000001, 0.000002.. and so on 2017-08-14 14:41:05 +03:00
sjaakola
7ee47ef456 MW-378 enabling build with WITH_WSREP=OFF only one fix here, enables build of mysqld however, building embedded server fails in linking phase 2017-08-14 14:40:25 +03:00
sjaakola
318af3f3b8 MW-369 FK fixes
Skipping wsrep extra FK checking for applier and replayer threads
2017-08-14 14:35:44 +03:00
Sergei Petrunia
cfa18cb5cf MyRocks: Fix merge typo in server stderr message 2017-08-14 14:30:22 +03:00
sjaakola
f3c5928cff MW-369 FK fixes
Skipping wsrep extra FK checking for applier and replayer threads
2017-08-14 13:48:25 +03:00
Teemu Ollakka
d43a12bf2f MW-369 Removing obsoleted tests 2017-08-14 13:48:14 +03:00
sjaakola
7a1a5e473e Refs: MW-369 * fixed sync point usage in MW-369.inc, which made it impossible to run this test with --repeat option * moved all MW-369*.test tests into MW-369.test file, each as one separate test phase * added two more test phases, in MW-369.test file * tests MW-369A, MW-369B and MW-369C are obsolete after this commit 2017-08-14 13:45:45 +03:00
Teemu Ollakka
0d5c605b60 MW-369 Fixed test MW-369D, recorded MW-369C, MW-369D 2017-08-14 13:41:29 +03:00
sjaakola
396770fb67 Refs: MW-369 * changed parent row key type to S(hared), when FK child table is being updated or deleted 2017-08-14 13:40:37 +03:00