summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2016-11-16 19:51:22 +0300
committerSergei Petrunia <psergey@askmonty.org>2016-11-16 19:51:22 +0300
commitdace5f9a2f717a627340502ed4fa5e0226de71c6 (patch)
tree707a724129d381824f26ad55a5b83fe4a3ff7b33 /mysql-test
parent951ca5dd04182c49841fe32c4efb41794af71a70 (diff)
parentded4cd12c308eccb2fbe2e24953f81131649e477 (diff)
downloadmariadb-git-dace5f9a2f717a627340502ed4fa5e0226de71c6.tar.gz
Merge branch '10.2' of github.com:MariaDB/server into 10.2
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/include/binlog_start_pos.inc10
-rw-r--r--mysql-test/include/mtr_warnings.sql8
-rw-r--r--mysql-test/include/show_binlog_events2.inc2
-rw-r--r--mysql-test/lib/v1/mtr_report.pl3
-rw-r--r--mysql-test/r/cte_recursive.result491
-rw-r--r--mysql-test/r/ctype_ldml.result1708
-rw-r--r--mysql-test/r/derived_cond_pushdown.result84
-rw-r--r--mysql-test/r/dyncol.result32
-rw-r--r--mysql-test/r/flush2.result4
-rw-r--r--mysql-test/r/func_json.result93
-rw-r--r--mysql-test/r/innodb_mysql_lock.result2
-rw-r--r--mysql-test/r/lock_sync.result120
-rw-r--r--mysql-test/r/lock_tables_lost_commit.result1
-rw-r--r--mysql-test/r/mdl_sync.result250
-rw-r--r--mysql-test/r/mysqlbinlog_row_compressed.result453
-rw-r--r--mysql-test/r/mysqlbinlog_row_minimal.result158
-rw-r--r--mysql-test/r/mysqlbinlog_stmt_compressed.result207
-rw-r--r--mysql-test/r/mysqld--help.result6
-rw-r--r--mysql-test/r/partition_debug_sync.result26
-rw-r--r--mysql-test/r/partition_explicit_prune.result12
-rw-r--r--mysql-test/r/truncate_coverage.result42
-rw-r--r--mysql-test/std_data/ldml/Index.xml39
-rw-r--r--mysql-test/suite/binlog/r/binlog_variables_log_bin.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_variables_log_bin_index.result4
-rw-r--r--mysql-test/suite/galera/disabled.def6
-rw-r--r--mysql-test/suite/galera/include/auto_increment_offset_restore.inc6
-rw-r--r--mysql-test/suite/galera/include/auto_increment_offset_save.inc8
-rw-r--r--mysql-test/suite/galera/r/GAL-382.result1
-rw-r--r--mysql-test/suite/galera/r/MW-252.result3
-rw-r--r--mysql-test/suite/galera/r/MW-258.result9
-rw-r--r--mysql-test/suite/galera/r/MW-259.result7
-rw-r--r--mysql-test/suite/galera/r/MW-44.result4
-rw-r--r--mysql-test/suite/galera/r/enforce_storage_engine2.result26
-rw-r--r--mysql-test/suite/galera/r/galera#414.result6
-rw-r--r--mysql-test/suite/galera/r/galera_as_slave_autoinc.result8
-rw-r--r--mysql-test/suite/galera/r/galera_autoinc_sst_xtrabackup.result11
-rw-r--r--mysql-test/suite/galera/r/galera_binlog_checksum.result16
-rw-r--r--mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result1
-rw-r--r--mysql-test/suite/galera/r/galera_fulltext.result10
-rw-r--r--mysql-test/suite/galera/r/galera_gcs_max_packet_size.result1
-rw-r--r--mysql-test/suite/galera/r/galera_ist_recv_bind.result8
-rw-r--r--mysql-test/suite/galera/r/galera_ist_rsync.result35
-rw-r--r--mysql-test/suite/galera/r/galera_kill_ddl.result3
-rw-r--r--mysql-test/suite/galera/r/galera_kill_largechanges.result6
-rw-r--r--mysql-test/suite/galera/r/galera_many_columns.result8
-rw-r--r--mysql-test/suite/galera/r/galera_many_rows.result8
-rw-r--r--mysql-test/suite/galera/r/galera_many_tables_nopk.result6
-rw-r--r--mysql-test/suite/galera/r/galera_many_tables_pk.result8
-rw-r--r--mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result9
-rw-r--r--mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result5
-rw-r--r--mysql-test/suite/galera/r/galera_pc_ignore_sb.result2
-rw-r--r--mysql-test/suite/galera/r/galera_restart_nochanges.result3
-rw-r--r--mysql-test/suite/galera/r/galera_roles.result2
-rw-r--r--mysql-test/suite/galera/r/galera_rsu_add_pk.result3
-rw-r--r--mysql-test/suite/galera/r/galera_rsu_drop_pk.result6
-rw-r--r--mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result5
-rw-r--r--mysql-test/suite/galera/r/galera_split_brain.result6
-rw-r--r--mysql-test/suite/galera/r/galera_sst_rsync.result35
-rw-r--r--mysql-test/suite/galera/r/galera_sync_wait_show.result4
-rw-r--r--mysql-test/suite/galera/r/galera_toi_ddl_error.result2
-rw-r--r--mysql-test/suite/galera/r/galera_var_desync_on.result1
-rw-r--r--mysql-test/suite/galera/r/galera_var_dirty_reads.result2
-rw-r--r--mysql-test/suite/galera/r/galera_var_load_data_splitting.result3
-rw-r--r--mysql-test/suite/galera/r/galera_wan_restart_ist.result35
-rw-r--r--mysql-test/suite/galera/r/galera_wan_restart_sst.result29
-rw-r--r--mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result5
-rw-r--r--mysql-test/suite/galera/r/mdev_10518.result9
-rw-r--r--mysql-test/suite/galera/r/mysql-wsrep#31.result5
-rw-r--r--mysql-test/suite/galera/t/enforce_storage_engine2.opt2
-rw-r--r--mysql-test/suite/galera/t/enforce_storage_engine2.test20
-rw-r--r--mysql-test/suite/galera/t/galera_binlog_checksum.test21
-rw-r--r--mysql-test/suite/galera/t/galera_sync_wait_show.test1
-rw-r--r--mysql-test/suite/galera/t/galera_wan_restart_ist.test17
-rw-r--r--mysql-test/suite/galera_3nodes/disabled.def2
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_certification_ccc.result11
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_certification_double_failure.result4
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_parallel_apply_3nodes.result6
-rw-r--r--mysql-test/suite/handler/aria.result27
-rw-r--r--mysql-test/suite/handler/handler.inc21
-rw-r--r--mysql-test/suite/handler/heap.result27
-rw-r--r--mysql-test/suite/handler/innodb.result26
-rw-r--r--mysql-test/suite/handler/interface.result18
-rw-r--r--mysql-test/suite/handler/interface.test26
-rw-r--r--mysql-test/suite/handler/myisam.result27
-rw-r--r--mysql-test/suite/innodb/disabled.def3
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_tables.result26
-rw-r--r--mysql-test/suite/innodb/r/innodb_ctype_ldml.result6
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_tables.test14
-rw-r--r--mysql-test/suite/innodb/t/innodb_trx_weight.opt1
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_compress.result76
-rw-r--r--mysql-test/suite/rpl/r/rpl_checksum.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result1
-rw-r--r--mysql-test/suite/rpl/t/rpl_binlog_compress.test61
-rw-r--r--mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test1
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb.result14
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result28
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff216
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result28
-rw-r--r--mysql-test/t/cte_recursive.test122
-rw-r--r--mysql-test/t/ctype_ldml.test103
-rw-r--r--mysql-test/t/derived_cond_pushdown.test37
-rw-r--r--mysql-test/t/dyncol.test16
-rw-r--r--mysql-test/t/func_json.test43
-rw-r--r--mysql-test/t/innodb_mysql_lock.test10
-rw-r--r--mysql-test/t/lock_sync.test165
-rw-r--r--mysql-test/t/mdl_sync.test221
-rw-r--r--mysql-test/t/mysqlbinlog_row_compressed.test68
-rw-r--r--mysql-test/t/mysqlbinlog_stmt_compressed.test59
-rw-r--r--mysql-test/t/partition_debug_sync.test40
-rw-r--r--mysql-test/t/truncate_coverage.test80
110 files changed, 4585 insertions, 1247 deletions
diff --git a/mysql-test/include/binlog_start_pos.inc b/mysql-test/include/binlog_start_pos.inc
index a187e18b3a4..942a124d639 100644
--- a/mysql-test/include/binlog_start_pos.inc
+++ b/mysql-test/include/binlog_start_pos.inc
@@ -10,19 +10,19 @@
#
# Format_description_log_event length =
# 19 /* event common header */ +
-# 58 /* misc stuff in the Format description header */ +
+# 57 /* misc stuff in the Format description header */ +
# number of events +
# 1 /* Checksum algorithm */ +
# 4 /* CRC32 length */
#
-# With current number of events = 164,
+# With current number of events = 171,
#
-# binlog_start_pos = 4 + 19 + 57 + 163 + 1 + 4 = 249.
+# binlog_start_pos = 4 + 19 + 57 + 171 + 1 + 4 = 256.
#
##############################################################################
-let $binlog_start_pos=249;
+let $binlog_start_pos=256;
--disable_query_log
-SET @binlog_start_pos=249;
+SET @binlog_start_pos=256;
--enable_query_log
diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql
index 278add92ba5..635dfd9b8c3 100644
--- a/mysql-test/include/mtr_warnings.sql
+++ b/mysql-test/include/mtr_warnings.sql
@@ -206,14 +206,6 @@ INSERT INTO global_suppressions VALUES
("==[0-9]*== Warning: invalid file descriptor -1 in syscall read()"),
/*
- BUG#42147 - Concurrent DML and LOCK TABLE ... READ for InnoDB
- table cause warnings in errlog
- Note: This is a temporary suppression until Bug#42147 can be
- fixed properly. See bug page for more information.
- */
- ("Found lock of type 6 that is write and read locked"),
-
- /*
Transient network failures that cause warnings on reconnect.
BUG#47743 and BUG#47983.
*/
diff --git a/mysql-test/include/show_binlog_events2.inc b/mysql-test/include/show_binlog_events2.inc
index eefefe4bfbe..84c62cced66 100644
--- a/mysql-test/include/show_binlog_events2.inc
+++ b/mysql-test/include/show_binlog_events2.inc
@@ -4,7 +4,7 @@ if ($binlog_start)
}
if (!$binlog_start)
{
- --let $_binlog_start=249
+ --let $_binlog_start=256
}
if ($binlog_file)
{
diff --git a/mysql-test/lib/v1/mtr_report.pl b/mysql-test/lib/v1/mtr_report.pl
index 738236a731e..0af70d96647 100644
--- a/mysql-test/lib/v1/mtr_report.pl
+++ b/mysql-test/lib/v1/mtr_report.pl
@@ -361,9 +361,6 @@ sub mtr_report_stats ($) {
/Slave: Can't DROP 'c7'.* 1091/ or
/Slave: Key column 'c6'.* 1072/ or
- # Warnings generated until bug#42147 is properly resolved
- /Found lock of type 6 that is write and read locked/ or
-
# rpl_idempotency.test produces warnings for the slave.
($testname eq 'rpl.rpl_idempotency' and
(/Slave: Can\'t find record in \'t1\' error.* 1032/ or
diff --git a/mysql-test/r/cte_recursive.result b/mysql-test/r/cte_recursive.result
index f22370870c2..4504de38358 100644
--- a/mysql-test/r/cte_recursive.result
+++ b/mysql-test/r/cte_recursive.result
@@ -1836,3 +1836,494 @@ id select_type table type possible_keys key key_len ref rows Extra
4 RECURSIVE UNION t2 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL
drop table t1,t2;
+#
+# MDEV-11278: non-mergeable view in the spec of recursive CTE
+#
+create table t1 (a int);
+insert into t1 values
+(0), (1), (2), (3), (4);
+create table t2 (a int);
+insert into t2 values
+(1), (2), (3), (4), (5);
+create view v1 as
+select a from t2 where a < 3
+union
+select a from t2 where a > 4;
+with recursive
+t1 as
+(
+select a from v1 where a=1
+union
+select v1.a from t1,v1 where t1.a+1=v1.a
+)
+select * from t1;
+a
+1
+2
+drop view v1;
+drop table t1,t2;
+#
+# MDEV-11259: recursive CTE with concatenation operation
+#
+DROP TABLE IF EXISTS edges;
+Warnings:
+Note 1051 Unknown table 'test.edges'
+CREATE TABLE edges(
+a int(10) unsigned NOT NULL,
+b int(10) unsigned NOT NULL,
+PRIMARY KEY (a,b),
+KEY b(b)
+);
+INSERT INTO edges
+VALUES (1,3),(2,1),(2,4),(3,4),(3,5),(3,6),(4,7),(5,1),(5,6),(6,1);
+DROP TABLE IF EXISTS edges2;
+Warnings:
+Note 1051 Unknown table 'test.edges2'
+CREATE VIEW edges2 (a, b) AS
+SELECT a, b FROM edges UNION ALL SELECT b, a FROM edges;
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+concat(a, '.', b, '.') AS path_string
+FROM edges
+UNION ALL
+SELECT tc.a, e.b, tc.distance + 1,
+concat(tc.path_string, e.b, '.') AS path_string
+FROM edges AS e
+JOIN transitive_closure AS tc
+ON e.a = tc.b
+WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT * FROM transitive_closure
+ORDER BY a, b, distance;
+a b distance path_string
+1 3 1 1.3.
+1 4 2 1.3.4.
+1 5 2 1.3.5.
+1 6 2 1.3.6.
+1 6 3 1.3.5.6.
+1 7 3 1.3.4.7.
+2 1 1 2.1.
+2 3 2 2.1.3.
+2 4 1 2.4.
+2 4 3 2.1.3.4.
+2 5 3 2.1.3.5.
+2 6 3 2.1.3.6.
+2 6 4 2.1.3.5.6.
+2 7 2 2.4.7.
+2 7 4 2.1.3.4.7.
+3 1 2 3.5.1.
+3 1 2 3.6.1.
+3 1 3 3.5.6.1.
+3 4 1 3.4.
+3 5 1 3.5.
+3 6 1 3.6.
+3 6 2 3.5.6.
+3 7 2 3.4.7.
+4 7 1 4.7.
+5 1 1 5.1.
+5 1 2 5.6.1.
+5 3 2 5.1.3.
+5 3 3 5.6.1.3.
+5 4 3 5.1.3.4.
+5 4 4 5.6.1.3.4.
+5 6 1 5.6.
+5 6 3 5.1.3.6.
+5 7 4 5.1.3.4.7.
+5 7 5 5.6.1.3.4.7.
+6 1 1 6.1.
+6 3 2 6.1.3.
+6 4 3 6.1.3.4.
+6 5 3 6.1.3.5.
+6 7 4 6.1.3.4.7.
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+concat(a, '.', b, '.') AS path_string
+FROM edges
+WHERE a = 1 -- source
+UNION ALL
+SELECT tc.a, e.b, tc.distance + 1,
+concat(tc.path_string, e.b, '.') AS path_string
+FROM edges AS e
+JOIN transitive_closure AS tc ON e.a = tc.b
+WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT * FROM transitive_closure
+WHERE b = 6 -- destination
+ORDER BY a, b, distance;
+a b distance path_string
+1 6 2 1.3.6.
+1 6 3 1.3.5.6.
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+concat(a, '.', b, '.') AS path_string
+FROM edges2
+UNION ALL
+SELECT tc.a, e.b, tc.distance + 1,
+concat(tc.path_string, e.b, '.') AS path_string
+FROM edges2 AS e
+JOIN transitive_closure AS tc ON e.a = tc.b
+WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT * FROM transitive_closure
+ORDER BY a, b, distance;
+a b distance path_string
+1 2 1 1.2.
+1 2 3 1.3.4.2.
+1 2 4 1.5.3.4.2.
+1 2 4 1.6.3.4.2.
+1 2 5 1.5.6.3.4.2.
+1 2 5 1.6.5.3.4.2.
+1 3 1 1.3.
+1 3 2 1.5.3.
+1 3 2 1.6.3.
+1 3 3 1.2.4.3.
+1 3 3 1.5.6.3.
+1 3 3 1.6.5.3.
+1 4 2 1.2.4.
+1 4 2 1.3.4.
+1 4 3 1.5.3.4.
+1 4 3 1.6.3.4.
+1 4 4 1.5.6.3.4.
+1 4 4 1.6.5.3.4.
+1 5 1 1.5.
+1 5 2 1.3.5.
+1 5 2 1.6.5.
+1 5 3 1.3.6.5.
+1 5 3 1.6.3.5.
+1 5 4 1.2.4.3.5.
+1 5 5 1.2.4.3.6.5.
+1 6 1 1.6.
+1 6 2 1.3.6.
+1 6 2 1.5.6.
+1 6 3 1.3.5.6.
+1 6 3 1.5.3.6.
+1 6 4 1.2.4.3.6.
+1 6 5 1.2.4.3.5.6.
+1 7 3 1.2.4.7.
+1 7 3 1.3.4.7.
+1 7 4 1.5.3.4.7.
+1 7 4 1.6.3.4.7.
+1 7 5 1.5.6.3.4.7.
+1 7 5 1.6.5.3.4.7.
+2 1 1 2.1.
+2 1 3 2.4.3.1.
+2 1 4 2.4.3.5.1.
+2 1 4 2.4.3.6.1.
+2 1 5 2.4.3.5.6.1.
+2 1 5 2.4.3.6.5.1.
+2 3 2 2.1.3.
+2 3 2 2.4.3.
+2 3 3 2.1.5.3.
+2 3 3 2.1.6.3.
+2 3 4 2.1.5.6.3.
+2 3 4 2.1.6.5.3.
+2 4 1 2.4.
+2 4 3 2.1.3.4.
+2 4 4 2.1.5.3.4.
+2 4 4 2.1.6.3.4.
+2 4 5 2.1.5.6.3.4.
+2 4 5 2.1.6.5.3.4.
+2 5 2 2.1.5.
+2 5 3 2.1.3.5.
+2 5 3 2.1.6.5.
+2 5 3 2.4.3.5.
+2 5 4 2.1.3.6.5.
+2 5 4 2.1.6.3.5.
+2 5 4 2.4.3.1.5.
+2 5 4 2.4.3.6.5.
+2 5 5 2.4.3.1.6.5.
+2 5 5 2.4.3.6.1.5.
+2 6 2 2.1.6.
+2 6 3 2.1.3.6.
+2 6 3 2.1.5.6.
+2 6 3 2.4.3.6.
+2 6 4 2.1.3.5.6.
+2 6 4 2.1.5.3.6.
+2 6 4 2.4.3.1.6.
+2 6 4 2.4.3.5.6.
+2 6 5 2.4.3.1.5.6.
+2 6 5 2.4.3.5.1.6.
+2 7 2 2.4.7.
+2 7 4 2.1.3.4.7.
+2 7 5 2.1.5.3.4.7.
+2 7 5 2.1.6.3.4.7.
+2 7 6 2.1.5.6.3.4.7.
+2 7 6 2.1.6.5.3.4.7.
+3 1 1 3.1.
+3 1 2 3.5.1.
+3 1 2 3.6.1.
+3 1 3 3.4.2.1.
+3 1 3 3.5.6.1.
+3 1 3 3.6.5.1.
+3 2 2 3.1.2.
+3 2 2 3.4.2.
+3 2 3 3.5.1.2.
+3 2 3 3.6.1.2.
+3 2 4 3.5.6.1.2.
+3 2 4 3.6.5.1.2.
+3 4 1 3.4.
+3 4 3 3.1.2.4.
+3 4 4 3.5.1.2.4.
+3 4 4 3.6.1.2.4.
+3 4 5 3.5.6.1.2.4.
+3 4 5 3.6.5.1.2.4.
+3 5 1 3.5.
+3 5 2 3.1.5.
+3 5 2 3.6.5.
+3 5 3 3.1.6.5.
+3 5 3 3.6.1.5.
+3 5 4 3.4.2.1.5.
+3 5 5 3.4.2.1.6.5.
+3 6 1 3.6.
+3 6 2 3.1.6.
+3 6 2 3.5.6.
+3 6 3 3.1.5.6.
+3 6 3 3.5.1.6.
+3 6 4 3.4.2.1.6.
+3 6 5 3.4.2.1.5.6.
+3 7 2 3.4.7.
+3 7 4 3.1.2.4.7.
+3 7 5 3.5.1.2.4.7.
+3 7 5 3.6.1.2.4.7.
+3 7 6 3.5.6.1.2.4.7.
+3 7 6 3.6.5.1.2.4.7.
+4 1 2 4.2.1.
+4 1 2 4.3.1.
+4 1 3 4.3.5.1.
+4 1 3 4.3.6.1.
+4 1 4 4.3.5.6.1.
+4 1 4 4.3.6.5.1.
+4 2 1 4.2.
+4 2 3 4.3.1.2.
+4 2 4 4.3.5.1.2.
+4 2 4 4.3.6.1.2.
+4 2 5 4.3.5.6.1.2.
+4 2 5 4.3.6.5.1.2.
+4 3 1 4.3.
+4 3 3 4.2.1.3.
+4 3 4 4.2.1.5.3.
+4 3 4 4.2.1.6.3.
+4 3 5 4.2.1.5.6.3.
+4 3 5 4.2.1.6.5.3.
+4 5 2 4.3.5.
+4 5 3 4.2.1.5.
+4 5 3 4.3.1.5.
+4 5 3 4.3.6.5.
+4 5 4 4.2.1.3.5.
+4 5 4 4.2.1.6.5.
+4 5 4 4.3.1.6.5.
+4 5 4 4.3.6.1.5.
+4 5 5 4.2.1.3.6.5.
+4 5 5 4.2.1.6.3.5.
+4 6 2 4.3.6.
+4 6 3 4.2.1.6.
+4 6 3 4.3.1.6.
+4 6 3 4.3.5.6.
+4 6 4 4.2.1.3.6.
+4 6 4 4.2.1.5.6.
+4 6 4 4.3.1.5.6.
+4 6 4 4.3.5.1.6.
+4 6 5 4.2.1.3.5.6.
+4 6 5 4.2.1.5.3.6.
+4 7 1 4.7.
+5 1 1 5.1.
+5 1 2 5.3.1.
+5 1 2 5.6.1.
+5 1 3 5.3.6.1.
+5 1 3 5.6.3.1.
+5 1 4 5.3.4.2.1.
+5 1 5 5.6.3.4.2.1.
+5 2 2 5.1.2.
+5 2 3 5.3.1.2.
+5 2 3 5.3.4.2.
+5 2 3 5.6.1.2.
+5 2 4 5.1.3.4.2.
+5 2 4 5.3.6.1.2.
+5 2 4 5.6.3.1.2.
+5 2 4 5.6.3.4.2.
+5 2 5 5.1.6.3.4.2.
+5 2 5 5.6.1.3.4.2.
+5 3 1 5.3.
+5 3 2 5.1.3.
+5 3 2 5.6.3.
+5 3 3 5.1.6.3.
+5 3 3 5.6.1.3.
+5 3 4 5.1.2.4.3.
+5 3 5 5.6.1.2.4.3.
+5 4 2 5.3.4.
+5 4 3 5.1.2.4.
+5 4 3 5.1.3.4.
+5 4 3 5.6.3.4.
+5 4 4 5.1.6.3.4.
+5 4 4 5.3.1.2.4.
+5 4 4 5.6.1.2.4.
+5 4 4 5.6.1.3.4.
+5 4 5 5.3.6.1.2.4.
+5 4 5 5.6.3.1.2.4.
+5 6 1 5.6.
+5 6 2 5.1.6.
+5 6 2 5.3.6.
+5 6 3 5.1.3.6.
+5 6 3 5.3.1.6.
+5 6 5 5.1.2.4.3.6.
+5 6 5 5.3.4.2.1.6.
+5 7 3 5.3.4.7.
+5 7 4 5.1.2.4.7.
+5 7 4 5.1.3.4.7.
+5 7 4 5.6.3.4.7.
+5 7 5 5.1.6.3.4.7.
+5 7 5 5.3.1.2.4.7.
+5 7 5 5.6.1.2.4.7.
+5 7 5 5.6.1.3.4.7.
+5 7 6 5.3.6.1.2.4.7.
+5 7 6 5.6.3.1.2.4.7.
+6 1 1 6.1.
+6 1 2 6.3.1.
+6 1 2 6.5.1.
+6 1 3 6.3.5.1.
+6 1 3 6.5.3.1.
+6 1 4 6.3.4.2.1.
+6 1 5 6.5.3.4.2.1.
+6 2 2 6.1.2.
+6 2 3 6.3.1.2.
+6 2 3 6.3.4.2.
+6 2 3 6.5.1.2.
+6 2 4 6.1.3.4.2.
+6 2 4 6.3.5.1.2.
+6 2 4 6.5.3.1.2.
+6 2 4 6.5.3.4.2.
+6 2 5 6.1.5.3.4.2.
+6 2 5 6.5.1.3.4.2.
+6 3 1 6.3.
+6 3 2 6.1.3.
+6 3 2 6.5.3.
+6 3 3 6.1.5.3.
+6 3 3 6.5.1.3.
+6 3 4 6.1.2.4.3.
+6 3 5 6.5.1.2.4.3.
+6 4 2 6.3.4.
+6 4 3 6.1.2.4.
+6 4 3 6.1.3.4.
+6 4 3 6.5.3.4.
+6 4 4 6.1.5.3.4.
+6 4 4 6.3.1.2.4.
+6 4 4 6.5.1.2.4.
+6 4 4 6.5.1.3.4.
+6 4 5 6.3.5.1.2.4.
+6 4 5 6.5.3.1.2.4.
+6 5 1 6.5.
+6 5 2 6.1.5.
+6 5 2 6.3.5.
+6 5 3 6.1.3.5.
+6 5 3 6.3.1.5.
+6 5 5 6.1.2.4.3.5.
+6 5 5 6.3.4.2.1.5.
+6 7 3 6.3.4.7.
+6 7 4 6.1.2.4.7.
+6 7 4 6.1.3.4.7.
+6 7 4 6.5.3.4.7.
+6 7 5 6.1.5.3.4.7.
+6 7 5 6.3.1.2.4.7.
+6 7 5 6.5.1.2.4.7.
+6 7 5 6.5.1.3.4.7.
+6 7 6 6.3.5.1.2.4.7.
+6 7 6 6.5.3.1.2.4.7.
+7 1 3 7.4.2.1.
+7 1 3 7.4.3.1.
+7 1 4 7.4.3.5.1.
+7 1 4 7.4.3.6.1.
+7 1 5 7.4.3.5.6.1.
+7 1 5 7.4.3.6.5.1.
+7 2 2 7.4.2.
+7 2 4 7.4.3.1.2.
+7 2 5 7.4.3.5.1.2.
+7 2 5 7.4.3.6.1.2.
+7 2 6 7.4.3.5.6.1.2.
+7 2 6 7.4.3.6.5.1.2.
+7 3 2 7.4.3.
+7 3 4 7.4.2.1.3.
+7 3 5 7.4.2.1.5.3.
+7 3 5 7.4.2.1.6.3.
+7 3 6 7.4.2.1.5.6.3.
+7 3 6 7.4.2.1.6.5.3.
+7 4 1 7.4.
+7 5 3 7.4.3.5.
+7 5 4 7.4.2.1.5.
+7 5 4 7.4.3.1.5.
+7 5 4 7.4.3.6.5.
+7 5 5 7.4.2.1.3.5.
+7 5 5 7.4.2.1.6.5.
+7 5 5 7.4.3.1.6.5.
+7 5 5 7.4.3.6.1.5.
+7 5 6 7.4.2.1.3.6.5.
+7 5 6 7.4.2.1.6.3.5.
+7 6 3 7.4.3.6.
+7 6 4 7.4.2.1.6.
+7 6 4 7.4.3.1.6.
+7 6 4 7.4.3.5.6.
+7 6 5 7.4.2.1.3.6.
+7 6 5 7.4.2.1.5.6.
+7 6 5 7.4.3.1.5.6.
+7 6 5 7.4.3.5.1.6.
+7 6 6 7.4.2.1.3.5.6.
+7 6 6 7.4.2.1.5.3.6.
+WITH RECURSIVE transitive_closure(a, b, distance, path_string)
+AS
+( SELECT a, b, 1 AS distance,
+concat(a, '.', b, '.') AS path_string
+FROM edges2
+UNION ALL
+SELECT tc.a, e.b, tc.distance + 1,
+concat(tc.path_string, e.b, '.') AS path_string
+FROM edges2 AS e
+JOIN transitive_closure AS tc ON e.a = tc.b
+WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT a, b, min(distance) AS dist FROM transitive_closure
+GROUP BY a, b
+ORDER BY a, dist, b;
+a b dist
+1 2 1
+1 3 1
+1 4 2
+1 5 1
+1 6 1
+1 7 3
+2 1 1
+2 3 2
+2 4 1
+2 5 2
+2 6 2
+2 7 2
+3 1 1
+3 2 2
+3 4 1
+3 5 1
+3 6 1
+3 7 2
+4 1 2
+4 2 1
+4 3 1
+4 5 2
+4 6 2
+4 7 1
+5 1 1
+5 2 2
+5 3 1
+5 4 2
+5 6 1
+5 7 3
+6 1 1
+6 2 2
+6 3 1
+6 4 2
+6 5 1
+6 7 3
+7 1 3
+7 2 2
+7 3 2
+7 4 1
+7 5 3
+7 6 3
+DROP VIEW edges2;
+DROP TABLE edges;
diff --git a/mysql-test/r/ctype_ldml.result b/mysql-test/r/ctype_ldml.result
index 34e862d0222..237646ade77 100644
--- a/mysql-test/r/ctype_ldml.result
+++ b/mysql-test/r/ctype_ldml.result
@@ -483,6 +483,9 @@ ucs2_vn_ci ucs2 359 8
ucs2_5624_1 ucs2 360 8
utf8_5624_5 utf8 368 8
utf8_5624_5_bad utf8 369 8
+utf8_czech_test_w2 utf8 370 4
+utf8_czech_test_nopad_w2 utf8 371 4
+utf8_czech_test_bad_w2 utf8 372 4
utf32_test_ci utf32 391 8
utf8_maxuserid_ci utf8 2047 8
show collation like '%test%';
@@ -491,6 +494,9 @@ latin1_test latin1 99 Yes 1
latin1_test2 latin1 332 1
latin1_test2_cs latin1 333 1
utf8_test_ci utf8 353 8
+utf8_czech_test_w2 utf8 370 4
+utf8_czech_test_nopad_w2 utf8 371 4
+utf8_czech_test_bad_w2 utf8 372 4
ucs2_test_ci ucs2 358 8
utf8mb4_test_ci utf8mb4 326 8
utf8mb4_test_400_ci utf8mb4 328 8
@@ -1326,3 +1332,1705 @@ HEX(a) REPLACE(a,' ','<SP>')
6120 a<SP>
61 a
DROP TABLE t1;
+SET NAMES utf8 COLLATE utf8_czech_test_w2;
+CREATE TABLE t1 AS SELECT SPACE(10) AS c1 LIMIT 0;
+insert into t1 values ('A'),('a');
+insert into t1 values ('B'),('b');
+insert into t1 values ('C'),('c');
+insert into t1 values ('D'),('d');
+insert into t1 values ('E'),('e');
+insert into t1 values ('F'),('f');
+insert into t1 values ('G'),('g');
+insert into t1 values ('H'),('h');
+insert into t1 values ('I'),('i');
+insert into t1 values ('J'),('j');
+insert into t1 values ('K'),('k');
+insert into t1 values ('L'),('l');
+insert into t1 values ('M'),('m');
+insert into t1 values ('N'),('n');
+insert into t1 values ('O'),('o');
+insert into t1 values ('P'),('p');
+insert into t1 values ('Q'),('q');
+insert into t1 values ('R'),('r');
+insert into t1 values ('S'),('s');
+insert into t1 values ('T'),('t');
+insert into t1 values ('U'),('u');
+insert into t1 values ('V'),('v');
+insert into t1 values ('W'),('w');
+insert into t1 values ('X'),('x');
+insert into t1 values ('Y'),('y');
+insert into t1 values ('Z'),('z');
+insert into t1 values (_ucs2 0x00e0),(_ucs2 0x00c0);
+insert into t1 values (_ucs2 0x00e1),(_ucs2 0x00c1);
+insert into t1 values (_ucs2 0x00e2),(_ucs2 0x00c2);
+insert into t1 values (_ucs2 0x00e3),(_ucs2 0x00c3);
+insert into t1 values (_ucs2 0x00e4),(_ucs2 0x00c4);
+insert into t1 values (_ucs2 0x00e5),(_ucs2 0x00c5);
+insert into t1 values (_ucs2 0x00e6),(_ucs2 0x00c6);
+insert into t1 values (_ucs2 0x00e7),(_ucs2 0x00c7);
+insert into t1 values (_ucs2 0x00e8),(_ucs2 0x00c8);
+insert into t1 values (_ucs2 0x00e9),(_ucs2 0x00c9);
+insert into t1 values (_ucs2 0x00ea),(_ucs2 0x00ca);
+insert into t1 values (_ucs2 0x00eb),(_ucs2 0x00cb);
+insert into t1 values (_ucs2 0x00ec),(_ucs2 0x00cc);
+insert into t1 values (_ucs2 0x00ed),(_ucs2 0x00cd);
+insert into t1 values (_ucs2 0x00ee),(_ucs2 0x00ce);
+insert into t1 values (_ucs2 0x00ef),(_ucs2 0x00cf);
+insert into t1 values (_ucs2 0x00f0),(_ucs2 0x00d0);
+insert into t1 values (_ucs2 0x00f1),(_ucs2 0x00d1);
+insert into t1 values (_ucs2 0x00f2),(_ucs2 0x00d2);
+insert into t1 values (_ucs2 0x00f3),(_ucs2 0x00d3);
+insert into t1 values (_ucs2 0x00f4),(_ucs2 0x00d4);
+insert into t1 values (_ucs2 0x00f5),(_ucs2 0x00d5);
+insert into t1 values (_ucs2 0x00f6),(_ucs2 0x00d6);
+insert into t1 values (_ucs2 0x00f7),(_ucs2 0x00d7);
+insert into t1 values (_ucs2 0x00f8),(_ucs2 0x00d8);
+insert into t1 values (_ucs2 0x00f9),(_ucs2 0x00d9);
+insert into t1 values (_ucs2 0x00fa),(_ucs2 0x00da);
+insert into t1 values (_ucs2 0x00fb),(_ucs2 0x00db);
+insert into t1 values (_ucs2 0x00fc),(_ucs2 0x00dc);
+insert into t1 values (_ucs2 0x00fd),(_ucs2 0x00dd);
+insert into t1 values (_ucs2 0x00fe),(_ucs2 0x00de);
+insert into t1 values (_ucs2 0x00ff),(_ucs2 0x00df);
+insert into t1 values (_ucs2 0x0100),(_ucs2 0x0101),(_ucs2 0x0102),(_ucs2 0x0103);
+insert into t1 values (_ucs2 0x0104),(_ucs2 0x0105),(_ucs2 0x0106),(_ucs2 0x0107);
+insert into t1 values (_ucs2 0x0108),(_ucs2 0x0109),(_ucs2 0x010a),(_ucs2 0x010b);
+insert into t1 values (_ucs2 0x010c),(_ucs2 0x010d),(_ucs2 0x010e),(_ucs2 0x010f);
+insert into t1 values (_ucs2 0x0110),(_ucs2 0x0111),(_ucs2 0x0112),(_ucs2 0x0113);
+insert into t1 values (_ucs2 0x0114),(_ucs2 0x0115),(_ucs2 0x0116),(_ucs2 0x0117);
+insert into t1 values (_ucs2 0x0118),(_ucs2 0x0119),(_ucs2 0x011a),(_ucs2 0x011b);
+insert into t1 values (_ucs2 0x011c),(_ucs2 0x011d),(_ucs2 0x011e),(_ucs2 0x011f);
+insert into t1 values (_ucs2 0x0120),(_ucs2 0x0121),(_ucs2 0x0122),(_ucs2 0x0123);
+insert into t1 values (_ucs2 0x0124),(_ucs2 0x0125),(_ucs2 0x0126),(_ucs2 0x0127);
+insert into t1 values (_ucs2 0x0128),(_ucs2 0x0129),(_ucs2 0x012a),(_ucs2 0x012b);
+insert into t1 values (_ucs2 0x012c),(_ucs2 0x012d),(_ucs2 0x012e),(_ucs2 0x012f);
+insert into t1 values (_ucs2 0x0130),(_ucs2 0x0131),(_ucs2 0x0132),(_ucs2 0x0133);
+insert into t1 values (_ucs2 0x0134),(_ucs2 0x0135),(_ucs2 0x0136),(_ucs2 0x0137);
+insert into t1 values (_ucs2 0x0138),(_ucs2 0x0139),(_ucs2 0x013a),(_ucs2 0x013b);
+insert into t1 values (_ucs2 0x013c),(_ucs2 0x013d),(_ucs2 0x013e),(_ucs2 0x013f);
+insert into t1 values (_ucs2 0x0140),(_ucs2 0x0141),(_ucs2 0x0142),(_ucs2 0x0143);
+insert into t1 values (_ucs2 0x0144),(_ucs2 0x0145),(_ucs2 0x0146),(_ucs2 0x0147);
+insert into t1 values (_ucs2 0x0148),(_ucs2 0x0149),(_ucs2 0x014a),(_ucs2 0x014b);
+insert into t1 values (_ucs2 0x014c),(_ucs2 0x014d),(_ucs2 0x014e),(_ucs2 0x014f);
+insert into t1 values (_ucs2 0x0150),(_ucs2 0x0151),(_ucs2 0x0152),(_ucs2 0x0153);
+insert into t1 values (_ucs2 0x0154),(_ucs2 0x0155),(_ucs2 0x0156),(_ucs2 0x0157);
+insert into t1 values (_ucs2 0x0158),(_ucs2 0x0159),(_ucs2 0x015a),(_ucs2 0x015b);
+insert into t1 values (_ucs2 0x015c),(_ucs2 0x015d),(_ucs2 0x015e),(_ucs2 0x015f);
+insert into t1 values (_ucs2 0x0160),(_ucs2 0x0161),(_ucs2 0x0162),(_ucs2 0x0163);
+insert into t1 values (_ucs2 0x0164),(_ucs2 0x0165),(_ucs2 0x0166),(_ucs2 0x0167);
+insert into t1 values (_ucs2 0x0168),(_ucs2 0x0169),(_ucs2 0x016a),(_ucs2 0x016b);
+insert into t1 values (_ucs2 0x016c),(_ucs2 0x016d),(_ucs2 0x016e),(_ucs2 0x016f);
+insert into t1 values (_ucs2 0x0170),(_ucs2 0x0171),(_ucs2 0x0172),(_ucs2 0x0173);
+insert into t1 values (_ucs2 0x0174),(_ucs2 0x0175),(_ucs2 0x0176),(_ucs2 0x0177);
+insert into t1 values (_ucs2 0x0178),(_ucs2 0x0179),(_ucs2 0x017a),(_ucs2 0x017b);
+insert into t1 values (_ucs2 0x017c),(_ucs2 0x017d),(_ucs2 0x017e),(_ucs2 0x017f);
+insert into t1 values (_ucs2 0x0180),(_ucs2 0x0181),(_ucs2 0x0182),(_ucs2 0x0183);
+insert into t1 values (_ucs2 0x0184),(_ucs2 0x0185),(_ucs2 0x0186),(_ucs2 0x0187);
+insert into t1 values (_ucs2 0x0188),(_ucs2 0x0189),(_ucs2 0x018a),(_ucs2 0x018b);
+insert into t1 values (_ucs2 0x018c),(_ucs2 0x018d),(_ucs2 0x018e),(_ucs2 0x018f);
+insert into t1 values (_ucs2 0x0190),(_ucs2 0x0191),(_ucs2 0x0192),(_ucs2 0x0193);
+insert into t1 values (_ucs2 0x0194),(_ucs2 0x0195),(_ucs2 0x0196),(_ucs2 0x0197);
+insert into t1 values (_ucs2 0x0198),(_ucs2 0x0199),(_ucs2 0x019a),(_ucs2 0x019b);
+insert into t1 values (_ucs2 0x019c),(_ucs2 0x019d),(_ucs2 0x019e),(_ucs2 0x019f);
+insert into t1 values (_ucs2 0x01a0),(_ucs2 0x01a1),(_ucs2 0x01a2),(_ucs2 0x01a3);
+insert into t1 values (_ucs2 0x01a4),(_ucs2 0x01a5),(_ucs2 0x01a6),(_ucs2 0x01a7);
+insert into t1 values (_ucs2 0x01a8),(_ucs2 0x01a9),(_ucs2 0x01aa),(_ucs2 0x01ab);
+insert into t1 values (_ucs2 0x01ac),(_ucs2 0x01ad),(_ucs2 0x01ae),(_ucs2 0x01af);
+insert into t1 values (_ucs2 0x01b0),(_ucs2 0x01b1),(_ucs2 0x01b2),(_ucs2 0x01b3);
+insert into t1 values (_ucs2 0x01b4),(_ucs2 0x01b5),(_ucs2 0x01b6),(_ucs2 0x01b7);
+insert into t1 values (_ucs2 0x01b8),(_ucs2 0x01b9),(_ucs2 0x01ba),(_ucs2 0x01bb);
+insert into t1 values (_ucs2 0x01bc),(_ucs2 0x01bd),(_ucs2 0x01be),(_ucs2 0x01bf);
+insert into t1 values (_ucs2 0x01c0),(_ucs2 0x01c1),(_ucs2 0x01c2),(_ucs2 0x01c3);
+insert into t1 values (_ucs2 0x01c4),(_ucs2 0x01c5),(_ucs2 0x01c6),(_ucs2 0x01c7);
+insert into t1 values (_ucs2 0x01c8),(_ucs2 0x01c9),(_ucs2 0x01ca),(_ucs2 0x01cb);
+insert into t1 values (_ucs2 0x01cc),(_ucs2 0x01cd),(_ucs2 0x01ce),(_ucs2 0x01cf);
+insert into t1 values (_ucs2 0x01d0),(_ucs2 0x01d1),(_ucs2 0x01d2),(_ucs2 0x01d3);
+insert into t1 values (_ucs2 0x01d4),(_ucs2 0x01d5),(_ucs2 0x01d6),(_ucs2 0x01d7);
+insert into t1 values (_ucs2 0x01d8),(_ucs2 0x01d9),(_ucs2 0x01da),(_ucs2 0x01db);
+insert into t1 values (_ucs2 0x01dc),(_ucs2 0x01dd),(_ucs2 0x01de),(_ucs2 0x01df);
+insert into t1 values (_ucs2 0x01e0),(_ucs2 0x01e1),(_ucs2 0x01e2),(_ucs2 0x01e3);
+insert into t1 values (_ucs2 0x01e4),(_ucs2 0x01e5),(_ucs2 0x01e6),(_ucs2 0x01e7);
+insert into t1 values (_ucs2 0x01e8),(_ucs2 0x01e9),(_ucs2 0x01ea),(_ucs2 0x01eb);
+insert into t1 values (_ucs2 0x01ec),(_ucs2 0x01ed),(_ucs2 0x01ee),(_ucs2 0x01ef);
+insert into t1 values (_ucs2 0x01f0),(_ucs2 0x01f1),(_ucs2 0x01f2),(_ucs2 0x01f3);
+insert into t1 values (_ucs2 0x01f4),(_ucs2 0x01f5),(_ucs2 0x01f6),(_ucs2 0x01f7);
+insert into t1 values (_ucs2 0x01f8),(_ucs2 0x01f9),(_ucs2 0x01fa),(_ucs2 0x01fb);
+insert into t1 values (_ucs2 0x01fc),(_ucs2 0x01fd),(_ucs2 0x01fe),(_ucs2 0x01ff);
+INSERT INTO t1 VALUES (_ucs2 0x1EA0),(_ucs2 0x1EA1),(_ucs2 0x1EA2),(_ucs2 0x1EA3);
+INSERT INTO t1 VALUES (_ucs2 0x1EA4),(_ucs2 0x1EA5),(_ucs2 0x1EA6),(_ucs2 0x1EA7);
+INSERT INTO t1 VALUES (_ucs2 0x1EA8),(_ucs2 0x1EA9),(_ucs2 0x1EAA),(_ucs2 0x1EAB);
+INSERT INTO t1 VALUES (_ucs2 0x1EAC),(_ucs2 0x1EAD),(_ucs2 0x1EAE),(_ucs2 0x1EAF);
+INSERT INTO t1 VALUES (_ucs2 0x1EB0),(_ucs2 0x1EB1),(_ucs2 0x1EB2),(_ucs2 0x1EB3);
+INSERT INTO t1 VALUES (_ucs2 0x1EB4),(_ucs2 0x1EB5),(_ucs2 0x1EB6),(_ucs2 0x1EB7);
+INSERT INTO t1 VALUES (_ucs2 0x1EB8),(_ucs2 0x1EB9),(_ucs2 0x1EBA),(_ucs2 0x1EBB);
+INSERT INTO t1 VALUES (_ucs2 0x1EBC),(_ucs2 0x1EBD),(_ucs2 0x1EBE),(_ucs2 0x1EBF);
+INSERT INTO t1 VALUES (_ucs2 0x1EC0),(_ucs2 0x1EC1),(_ucs2 0x1EC2),(_ucs2 0x1EC3);
+INSERT INTO t1 VALUES (_ucs2 0x1EC4),(_ucs2 0x1EC5),(_ucs2 0x1EC6),(_ucs2 0x1EC7);
+INSERT INTO t1 VALUES (_ucs2 0x1EC8),(_ucs2 0x1EC9),(_ucs2 0x1ECA),(_ucs2 0x1ECB);
+INSERT INTO t1 VALUES (_ucs2 0x1ECC),(_ucs2 0x1ECD),(_ucs2 0x1ECE),(_ucs2 0x1ECF);
+INSERT INTO t1 VALUES (_ucs2 0x1ED0),(_ucs2 0x1ED1),(_ucs2 0x1ED2),(_ucs2 0x1ED3);
+INSERT INTO t1 VALUES (_ucs2 0x1ED4),(_ucs2 0x1ED5),(_ucs2 0x1ED6),(_ucs2 0x1ED7);
+INSERT INTO t1 VALUES (_ucs2 0x1ED8),(_ucs2 0x1ED9),(_ucs2 0x1EDA),(_ucs2 0x1EDB);
+INSERT INTO t1 VALUES (_ucs2 0x1EDC),(_ucs2 0x1EDD),(_ucs2 0x1EDE),(_ucs2 0x1EDF);
+INSERT INTO t1 VALUES (_ucs2 0x1EE0),(_ucs2 0x1EE1),(_ucs2 0x1EE2),(_ucs2 0x1EE3);
+INSERT INTO t1 VALUES (_ucs2 0x1EE4),(_ucs2 0x1EE5),(_ucs2 0x1EE6),(_ucs2 0x1EE7);
+INSERT INTO t1 VALUES (_ucs2 0x1EE8),(_ucs2 0x1EE9),(_ucs2 0x1EEA),(_ucs2 0x1EEB);
+INSERT INTO t1 VALUES (_ucs2 0x1EEC),(_ucs2 0x1EED),(_ucs2 0x1EEE),(_ucs2 0x1EEF);
+INSERT INTO t1 VALUES (_ucs2 0x1EF0),(_ucs2 0x1EF1);
+insert into t1 values ('AA'),('Aa'),('aa'),('aA');
+insert into t1 values ('AE'),('Ae'),('ae'),('aE');
+insert into t1 values ('CH'),('Ch'),('ch'),('cH');
+insert into t1 values ('DZ'),('Dz'),('dz'),('dZ');
+insert into t1 values ('DŽ'),('Dž'),('dž'),('dŽ');
+insert into t1 values ('IJ'),('Ij'),('ij'),('iJ');
+insert into t1 values ('LJ'),('Lj'),('lj'),('lJ');
+insert into t1 values ('LL'),('Ll'),('ll'),('lL');
+insert into t1 values ('NJ'),('Nj'),('nj'),('nJ');
+insert into t1 values ('OE'),('Oe'),('oe'),('oE');
+insert into t1 values ('SS'),('Ss'),('ss'),('sS');
+insert into t1 values ('RR'),('Rr'),('rr'),('rR');
+INSERT INTO t1 VALUES ('a ');
+SELECT c1, HEX(WEIGHT_STRING(c1 LEVEL 1)), HEX(WEIGHT_STRING(c1 LEVEL 2)) FROM t1 ORDER BY c1, BINARY c1;
+c1 HEX(WEIGHT_STRING(c1 LEVEL 1)) HEX(WEIGHT_STRING(c1 LEVEL 2))
+÷ 0552 0020
+× 0553 0020
+A 120F 0020
+a 120F 0020
+a 120F020A 00200020
+Á 120F 00200032
+á 120F 00200032
+À 120F 00200035
+à 120F 00200035
+Ă 120F 00200037
+ă 120F 00200037
+Ắ 120F 002000370032
+ắ 120F 002000370032
+Ằ 120F 002000370035
+ằ 120F 002000370035
+Ẵ 120F 00200037004E
+ẵ 120F 00200037004E
+Ẳ 120F 002000370064
+ẳ 120F 002000370064
+Â 120F 0020003C
+â 120F 0020003C
+Ấ 120F 0020003C0032
+ấ 120F 0020003C0032
+Ầ 120F 0020003C0035
+ầ 120F 0020003C0035
+Ẫ 120F 0020003C004E
+ẫ 120F 0020003C004E
+Ẩ 120F 0020003C0064
+ẩ 120F 0020003C0064
+Ǎ 120F 00200041
+ǎ 120F 00200041
+Å 120F 00200043
+å 120F 00200043
+Ǻ 120F 002000430032
+ǻ 120F 002000430032
+Ä 120F 00200047
+ä 120F 00200047
+Ǟ 120F 00200047005B
+ǟ 120F 00200047005B
+Ã 120F 0020004E
+ã 120F 0020004E
+Ǡ 120F 00200052005B
+ǡ 120F 00200052005B
+Ą 120F 00200059
+ą 120F 00200059
+Ā 120F 0020005B
+ā 120F 0020005B
+Ả 120F 00200064
+ả 120F 00200064
+Ạ 120F 00200070
+ạ 120F 00200070
+Ặ 120F 002000700037
+ặ 120F 002000700037
+Ậ 120F 00200070003C
+ậ 120F 00200070003C
+AA 120F120F 00200020
+Aa 120F120F 00200020
+aA 120F120F 00200020
+aa 120F120F 00200020
+AE 120F126B 00200020
+Ae 120F126B 00200020
+aE 120F126B 00200020
+ae 120F126B 00200020
+Æ 120F126B 002001590020
+æ 120F126B 002001590020
+Ǽ 120F126B 0020015900200032
+ǽ 120F126B 0020015900200032
+Ǣ 120F126B 002001590020005B
+ǣ 120F126B 002001590020005B
+B 1225 0020
+b 1225 0020
+ƀ 122D 0020
+Ɓ 1235 0020
+Ƃ 1239 0020
+ƃ 1239 0020
+C 123D 0020
+c 123D 0020
+Ć 123D 00200032
+ć 123D 00200032
+Ĉ 123D 0020003C
+ĉ 123D 0020003C
+Ċ 123D 00200052
+ċ 123D 00200052
+Ç 123D 00200056
+ç 123D 00200056
+cH 123D12D3 00200020
+Č 123E 0020
+č 123E 0020
+Ƈ 1246 0020
+ƈ 1246 0020
+D 1250 0020
+d 1250 0020
+Ď 1250 00200041
+ď 1250 00200041
+Đ 1250 0020007D
+đ 1250 0020007D
+Ð 1250 00200159
+ð 1250 00200159
+DZ 125014AD 00200020
+Dz 125014AD 00200020
+dZ 125014AD 00200020
+dz 125014AD 00200020
+DZ 125014AD 00200020
+Dz 125014AD 00200020
+dz 125014AD 00200020
+DŽ 125014AD 002000200041
+Dž 125014AD 002000200041
+dž 125014AD 002000200041
+DŽ 125014AE 00200020
+Dž 125014AE 00200020
+dŽ 125014AE 00200020
+dž 125014AE 00200020
+Ɖ 1258 0020
+Ɗ 125C 0020
+Ƌ 1261 0020
+ƌ 1261 0020
+E 126B 0020
+e 126B 0020
+É 126B 00200032
+é 126B 00200032
+È 126B 00200035
+è 126B 00200035
+Ĕ 126B 00200037
+ĕ 126B 00200037
+Ê 126B 0020003C
+ê 126B 0020003C
+Ế 126B 0020003C0032
+ế 126B 0020003C0032
+Ề 126B 0020003C0035
+ề 126B 0020003C0035
+Ễ 126B 0020003C004E
+ễ 126B 0020003C004E
+Ể 126B 0020003C0064
+ể 126B 0020003C0064
+Ě 126B 00200041
+ě 126B 00200041
+Ë 126B 00200047
+ë 126B 00200047
+Ẽ 126B 0020004E
+ẽ 126B 0020004E
+Ė 126B 00200052
+ė 126B 00200052
+Ę 126B 00200059
+ę 126B 00200059
+Ē 126B 0020005B
+ē 126B 0020005B
+Ẻ 126B 00200064
+ẻ 126B 00200064
+Ẹ 126B 00200070
+ẹ 126B 00200070
+Ệ 126B 00200070003C
+ệ 126B 00200070003C
+Ǝ 1276 0020
+ǝ 1276 0020
+Ə 127B 0020
+Ɛ 1280 0020
+F 12A3 0020
+f 12A3 0020
+Ƒ 12AA 0020
+ƒ 12AA 0020
+G 12B0 0020
+g 12B0 0020
+Ǵ 12B0 00200032
+ǵ 12B0 00200032
+Ğ 12B0 00200037
+ğ 12B0 00200037
+Ĝ 12B0 0020003C
+ĝ 12B0 0020003C
+Ǧ 12B0 00200041
+ǧ 12B0 00200041
+Ġ 12B0 00200052
+ġ 12B0 00200052
+Ģ 12B0 00200056
+ģ 12B0 00200056
+Ǥ 12BC 0020
+ǥ 12BC 0020
+Ɠ 12C1 0020
+Ɣ 12CB 0020
+Ƣ 12CF 0020
+ƣ 12CF 0020
+H 12D3 0020
+h 12D3 0020
+Ĥ 12D3 0020003C
+ĥ 12D3 0020003C
+Ħ 12D3 0020007D
+ħ 12D3 0020007D
+CH 12D4 0020
+Ch 12D4 0020
+ch 12D4 0020
+ƕ 12DB 0020
+Ƕ 12DB 0020
+I 12EC 0020
+i 12EC 0020
+Í 12EC 00200032
+í 12EC 00200032
+Ì 12EC 00200035
+ì 12EC 00200035
+Ĭ 12EC 00200037
+ĭ 12EC 00200037
+Î 12EC 0020003C
+î 12EC 0020003C
+Ǐ 12EC 00200041
+ǐ 12EC 00200041
+Ï 12EC 00200047
+ï 12EC 00200047
+Ĩ 12EC 0020004E
+ĩ 12EC 0020004E
+İ 12EC 00200052
+Į 12EC 00200059
+į 12EC 00200059
+Ī 12EC 0020005B
+ī 12EC 0020005B
+Ỉ 12EC 00200064
+ỉ 12EC 00200064
+Ị 12EC 00200070
+ị 12EC 00200070
+IJ 12EC1305 00200020
+Ij 12EC1305 00200020
+iJ 12EC1305 00200020
+ij 12EC1305 00200020
+IJ 12EC1305 00200020
+ij 12EC1305 00200020
+ı 12F0 0020
+Ɨ 12FA 0020
+Ɩ 1300 0020
+J 1305 0020
+j 1305 0020
+Ĵ 1305 0020003C
+ĵ 1305 0020003C
+ǰ 1305 00200041
+K 131E 0020
+k 131E 0020
+Ǩ 131E 00200041
+ǩ 131E 00200041
+Ķ 131E 00200056
+ķ 131E 00200056
+Ƙ 1324 0020
+ƙ 1324 0020
+L 1330 0020
+l 1330 0020
+Ĺ 1330 00200032
+ĺ 1330 00200032
+Ľ 1330 00200041
+ľ 1330 00200041
+Ļ 1330 00200056
+ļ 1330 00200056
+Ł 1330 0020007D
+ł 1330 0020007D
+Ŀ 1330 00200159
+ŀ 1330 00200159
+LJ 13301305 00200020
+Lj 13301305 00200020
+lJ 13301305 00200020
+lj 13301305 00200020
+LJ 13301305 00200020
+Lj 13301305 00200020
+lj 13301305 00200020
+LL 13301330 00200020
+Ll 13301330 00200020
+lL 13301330 00200020
+ll 13301330 00200020
+ƚ 133B 0020
+ƛ 1357 0020
+M 135F 0020
+m 135F 0020
+N 136D 0020
+n 136D 0020
+Ń 136D 00200032
+ń 136D 00200032
+Ǹ 136D 00200035
+ǹ 136D 00200035
+Ň 136D 00200041
+ň 136D 00200041
+Ñ 136D 0020004E
+ñ 136D 0020004E
+Ņ 136D 00200056
+ņ 136D 00200056
+NJ 136D1305 00200020
+Nj 136D1305 00200020
+nJ 136D1305 00200020
+nj 136D1305 00200020
+NJ 136D1305 00200020
+Nj 136D1305 00200020
+nj 136D1305 00200020
+Ɲ 1378 0020
+ƞ 137C 0020
+Ŋ 138A 0020
+ŋ 138A 0020
+O 138E 0020
+o 138E 0020
+Ó 138E 00200032
+ó 138E 00200032
+Ò 138E 00200035
+ò 138E 00200035
+Ŏ 138E 00200037
+ŏ 138E 00200037
+Ô 138E 0020003C
+ô 138E 0020003C
+Ố 138E 0020003C0032
+ố 138E 0020003C0032
+Ồ 138E 0020003C0035
+ồ 138E 0020003C0035
+Ỗ 138E 0020003C004E
+ỗ 138E 0020003C004E
+Ổ 138E 0020003C0064
+ổ 138E 0020003C0064
+Ǒ 138E 00200041
+ǒ 138E 00200041
+Ö 138E 00200047
+ö 138E 00200047
+Ő 138E 0020004D
+ő 138E 0020004D
+Õ 138E 0020004E
+õ 138E 0020004E
+Ø 138E 00200054
+ø 138E 00200054
+Ǿ 138E 002000540032
+ǿ 138E 002000540032
+Ǫ 138E 00200059
+ǫ 138E 00200059
+Ǭ 138E 00200059005B
+ǭ 138E 00200059005B
+Ō 138E 0020005B
+ō 138E 0020005B
+Ỏ 138E 00200064
+ỏ 138E 00200064
+Ơ 138E 00200068
+ơ 138E 00200068
+Ớ 138E 002000680032
+ớ 138E 002000680032
+Ờ 138E 002000680035
+ờ 138E 002000680035
+Ỡ 138E 00200068004E
+ỡ 138E 00200068004E
+Ở 138E 002000680064
+ở 138E 002000680064
+Ợ 138E 002000680070
+ợ 138E 002000680070
+Ọ 138E 00200070
+ọ 138E 00200070
+Ộ 138E 00200070003C
+ộ 138E 00200070003C
+OE 138E126B 00200020
+Oe 138E126B 00200020
+oE 138E126B 00200020
+oe 138E126B 00200020
+Œ 138E126B 002001590020
+œ 138E126B 002001590020
+Ɔ 139A 0020
+Ɵ 13A5 0020
+P 13B3 0020
+p 13B3 0020
+Ƥ 13BC 0020
+ƥ 13BC 0020
+Q 13C8 0020
+q 13C8 0020
+ĸ 13D6 0020
+R 13DA 0020
+r 13DA 0020
+Ŕ 13DA 00200032
+ŕ 13DA 00200032
+Ŗ 13DA 00200056
+ŗ 13DA 00200056
+RR 13DA13DA 00200020
+Rr 13DA13DA 00200020
+rR 13DA13DA 00200020
+rr 13DA13DA 00200020
+Ř 13DB 0020
+ř 13DB 0020
+Ʀ 13DE 0020
+S 1410 0020
+s 1410 0020
+Ś 1410 00200032
+ś 1410 00200032
+Ŝ 1410 0020003C
+ŝ 1410 0020003C
+Ş 1410 00200056
+ş 1410 00200056
+ſ 1410 0020015A
+SS 14101410 00200020
+Ss 14101410 00200020
+sS 14101410 00200020
+ss 14101410 00200020
+ß 14101410 002001590020
+Š 1411 0020
+š 1411 0020
+Ʃ 1421 0020
+ƪ 1426 0020
+T 1433 0020
+t 1433 0020
+Ť 1433 00200041
+ť 1433 00200041
+Ţ 1433 00200056
+ţ 1433 00200056
+ƾ 14331410 00200020
+Ŧ 1438 0020
+ŧ 1438 0020
+ƫ 143E 0020
+Ƭ 1442 0020
+ƭ 1442 0020
+Ʈ 1446 0020
+U 1453 0020
+u 1453 0020
+Ú 1453 00200032
+ú 1453 00200032
+Ù 1453 00200035
+ù 1453 00200035
+Ŭ 1453 00200037
+ŭ 1453 00200037
+Û 1453 0020003C
+û 1453 0020003C
+Ǔ 1453 00200041
+ǔ 1453 00200041
+Ů 1453 00200043
+ů 1453 00200043
+Ü 1453 00200047
+ü 1453 00200047
+Ǘ 1453 002000470032
+ǘ 1453 002000470032
+Ǜ 1453 002000470035
+ǜ 1453 002000470035
+Ǚ 1453 002000470041
+ǚ 1453 002000470041
+Ǖ 1453 00200047005B
+ǖ 1453 00200047005B
+Ű 1453 0020004D
+ű 1453 0020004D
+Ũ 1453 0020004E
+ũ 1453 0020004E
+Ų 1453 00200059
+ų 1453 00200059
+Ū 1453 0020005B
+ū 1453 0020005B
+Ủ 1453 00200064
+ủ 1453 00200064
+Ư 1453 00200068
+ư 1453 00200068
+Ứ 1453 002000680032
+ứ 1453 002000680032
+Ừ 1453 002000680035
+ừ 1453 002000680035
+Ữ 1453 00200068004E
+ữ 1453 00200068004E
+Ử 1453 002000680064
+ử 1453 002000680064
+Ự 1453 002000680070
+ự 1453 002000680070
+Ụ 1453 00200070
+ụ 1453 00200070
+Ɯ 146D 0020
+Ʊ 1476 0020
+V 147B 0020
+v 147B 0020
+Ʋ 1482 0020
+W 148D 0020
+w 148D 0020
+Ŵ 148D 0020003C
+ŵ 148D 0020003C
+X 1497 0020
+x 1497 0020
+Y 149C 0020
+y 149C 0020
+Ý 149C 00200032
+ý 149C 00200032
+Ŷ 149C 0020003C
+ŷ 149C 0020003C
+ÿ 149C 00200047
+Ÿ 149C 00200047
+Ƴ 14A8 0020
+ƴ 14A8 0020
+Z 14AD 0020
+z 14AD 0020
+Ź 14AD 00200032
+ź 14AD 00200032
+Ż 14AD 00200052
+ż 14AD 00200052
+ƍ 14AD148D 00200020
+Ž 14AE 0020
+ž 14AE 0020
+Ƶ 14B2 0020
+ƶ 14B2 0020
+Ʒ 14CA 0020
+Ǯ 14CA 00200041
+ǯ 14CA 00200041
+Ƹ 14CF 0020
+ƹ 14CF 0020
+ƺ 14D4 0020
+Þ 14E0 0020
+þ 14E0 0020
+ƿ 14E6 0020
+Ƿ 14E6 0020
+ƻ 14EF 0020
+Ƨ 14F6 0020
+ƨ 14F6 0020
+Ƽ 14FA 0020
+ƽ 14FA 0020
+Ƅ 14FE 0020
+ƅ 14FE 0020
+ʼn 150B136D 00200020
+ǀ 1525 0020
+ǁ 1529 0020
+ǂ 152D 0020
+ǃ 1531 0020
+SELECT c1, HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)), HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2)) FROM t1 WHERE c1 BETWEEN 'a' AND 'aZ' ORDER BY c1, BINARY c1;
+c1 HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)) HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2))
+A 120F020A020A 002000200020
+a 120F020A020A 002000200020
+a 120F020A020A 002000200020
+Á 120F020A020A 002000320020
+á 120F020A020A 002000320020
+À 120F020A020A 002000350020
+à 120F020A020A 002000350020
+Ă 120F020A020A 002000370020
+ă 120F020A020A 002000370020
+Ắ 120F020A020A 002000370032
+ắ 120F020A020A 002000370032
+Ằ 120F020A020A 002000370035
+ằ 120F020A020A 002000370035
+Ẵ 120F020A020A 00200037004E
+ẵ 120F020A020A 00200037004E
+Ẳ 120F020A020A 002000370064
+ẳ 120F020A020A 002000370064
+Â 120F020A020A 0020003C0020
+â 120F020A020A 0020003C0020
+Ấ 120F020A020A 0020003C0032
+ấ 120F020A020A 0020003C0032
+Ầ 120F020A020A 0020003C0035
+ầ 120F020A020A 0020003C0035
+Ẫ 120F020A020A 0020003C004E
+ẫ 120F020A020A 0020003C004E
+Ẩ 120F020A020A 0020003C0064
+ẩ 120F020A020A 0020003C0064
+Ǎ 120F020A020A 002000410020
+ǎ 120F020A020A 002000410020
+Å 120F020A020A 002000430020
+å 120F020A020A 002000430020
+Ǻ 120F020A020A 002000430032
+ǻ 120F020A020A 002000430032
+Ä 120F020A020A 002000470020
+ä 120F020A020A 002000470020
+Ǟ 120F020A020A 00200047005B
+ǟ 120F020A020A 00200047005B
+Ã 120F020A020A 0020004E0020
+ã 120F020A020A 0020004E0020
+Ǡ 120F020A020A 00200052005B
+ǡ 120F020A020A 00200052005B
+Ą 120F020A020A 002000590020
+ą 120F020A020A 002000590020
+Ā 120F020A020A 0020005B0020
+ā 120F020A020A 0020005B0020
+Ả 120F020A020A 002000640020
+ả 120F020A020A 002000640020
+Ạ 120F020A020A 002000700020
+ạ 120F020A020A 002000700020
+Ặ 120F020A020A 002000700037
+ặ 120F020A020A 002000700037
+Ậ 120F020A020A 00200070003C
+ậ 120F020A020A 00200070003C
+AA 120F120F020A 002000200020
+Aa 120F120F020A 002000200020
+aA 120F120F020A 002000200020
+aa 120F120F020A 002000200020
+AE 120F126B020A 002000200020
+Ae 120F126B020A 002000200020
+aE 120F126B020A 002000200020
+ae 120F126B020A 002000200020
+Æ 120F126B020A 002001590020
+æ 120F126B020A 002001590020
+Ǽ 120F126B020A 002001590020
+ǽ 120F126B020A 002001590020
+Ǣ 120F126B020A 002001590020
+ǣ 120F126B020A 002001590020
+DROP TABLE t1;
+SELECT 'a' = 'a ';
+'a' = 'a '
+1
+SELECT 'a' < 'á';
+'a' < 'á'
+1
+SELECT 'áa' < 'ab';
+'áa' < 'ab'
+1
+SELECT 'á' < 'ä';
+'á' < 'ä'
+1
+SELECT 'äa' < 'áb';
+'äa' < 'áb'
+1
+SELECT 'c' < 'č';
+'c' < 'č'
+1
+SELECT 'cb' < 'ča';
+'cb' < 'ča'
+1
+SELECT 'd' < 'ď';
+'d' < 'ď'
+1
+SELECT 'ďa' < 'db';
+'ďa' < 'db'
+1
+SELECT 'e' < 'é';
+'e' < 'é'
+1
+SELECT 'éa' < 'eb';
+'éa' < 'eb'
+1
+SELECT 'é' < 'ě';
+'é' < 'ě'
+1
+SELECT 'ěa' < 'éb';
+'ěa' < 'éb'
+1
+SELECT 'i' < 'í';
+'i' < 'í'
+1
+SELECT 'ía' < 'ib';
+'ía' < 'ib'
+1
+SELECT 'n' < 'ň';
+'n' < 'ň'
+1
+SELECT 'ňa' < 'nb';
+'ňa' < 'nb'
+1
+SELECT 'o' < 'ó';
+'o' < 'ó'
+1
+SELECT 'óa' < 'ob';
+'óa' < 'ob'
+1
+SELECT 'ó' < 'ö';
+'ó' < 'ö'
+1
+SELECT 'öa' < 'ób';
+'öa' < 'ób'
+1
+SELECT 'r' < 'ř';
+'r' < 'ř'
+1
+SELECT 'rb' < 'řa';
+'rb' < 'řa'
+1
+SELECT 's' < 'š';
+'s' < 'š'
+1
+SELECT 'sb' < 'ša';
+'sb' < 'ša'
+1
+SELECT 't' < 'ť';
+'t' < 'ť'
+1
+SELECT 'ťa' < 'tb';
+'ťa' < 'tb'
+1
+SELECT 'u' < 'ú';
+'u' < 'ú'
+1
+SELECT 'úa' < 'ub';
+'úa' < 'ub'
+1
+SELECT 'ú' < 'ů';
+'ú' < 'ů'
+1
+SELECT 'ůa' < 'úb';
+'ůa' < 'úb'
+1
+SELECT 'ů' < 'ü';
+'ů' < 'ü'
+1
+SELECT 'üa' < 'ůb';
+'üa' < 'ůb'
+1
+SELECT 'y' < 'ý';
+'y' < 'ý'
+1
+SELECT 'ýa' < 'yb';
+'ýa' < 'yb'
+1
+SELECT 'z' < 'ž';
+'z' < 'ž'
+1
+SELECT 'zb' < 'ža';
+'zb' < 'ža'
+1
+SELECT 'hž' < 'ch';
+'hž' < 'ch'
+1
+SELECT 'chž'< 'i';
+'chž'< 'i'
+1
+SET NAMES utf8 COLLATE utf8_czech_test_nopad_w2;
+CREATE TABLE t1 AS SELECT SPACE(10) AS c1 LIMIT 0;
+insert into t1 values ('A'),('a');
+insert into t1 values ('B'),('b');
+insert into t1 values ('C'),('c');
+insert into t1 values ('D'),('d');
+insert into t1 values ('E'),('e');
+insert into t1 values ('F'),('f');
+insert into t1 values ('G'),('g');
+insert into t1 values ('H'),('h');
+insert into t1 values ('I'),('i');
+insert into t1 values ('J'),('j');
+insert into t1 values ('K'),('k');
+insert into t1 values ('L'),('l');
+insert into t1 values ('M'),('m');
+insert into t1 values ('N'),('n');
+insert into t1 values ('O'),('o');
+insert into t1 values ('P'),('p');
+insert into t1 values ('Q'),('q');
+insert into t1 values ('R'),('r');
+insert into t1 values ('S'),('s');
+insert into t1 values ('T'),('t');
+insert into t1 values ('U'),('u');
+insert into t1 values ('V'),('v');
+insert into t1 values ('W'),('w');
+insert into t1 values ('X'),('x');
+insert into t1 values ('Y'),('y');
+insert into t1 values ('Z'),('z');
+insert into t1 values (_ucs2 0x00e0),(_ucs2 0x00c0);
+insert into t1 values (_ucs2 0x00e1),(_ucs2 0x00c1);
+insert into t1 values (_ucs2 0x00e2),(_ucs2 0x00c2);
+insert into t1 values (_ucs2 0x00e3),(_ucs2 0x00c3);
+insert into t1 values (_ucs2 0x00e4),(_ucs2 0x00c4);
+insert into t1 values (_ucs2 0x00e5),(_ucs2 0x00c5);
+insert into t1 values (_ucs2 0x00e6),(_ucs2 0x00c6);
+insert into t1 values (_ucs2 0x00e7),(_ucs2 0x00c7);
+insert into t1 values (_ucs2 0x00e8),(_ucs2 0x00c8);
+insert into t1 values (_ucs2 0x00e9),(_ucs2 0x00c9);
+insert into t1 values (_ucs2 0x00ea),(_ucs2 0x00ca);
+insert into t1 values (_ucs2 0x00eb),(_ucs2 0x00cb);
+insert into t1 values (_ucs2 0x00ec),(_ucs2 0x00cc);
+insert into t1 values (_ucs2 0x00ed),(_ucs2 0x00cd);
+insert into t1 values (_ucs2 0x00ee),(_ucs2 0x00ce);
+insert into t1 values (_ucs2 0x00ef),(_ucs2 0x00cf);
+insert into t1 values (_ucs2 0x00f0),(_ucs2 0x00d0);
+insert into t1 values (_ucs2 0x00f1),(_ucs2 0x00d1);
+insert into t1 values (_ucs2 0x00f2),(_ucs2 0x00d2);
+insert into t1 values (_ucs2 0x00f3),(_ucs2 0x00d3);
+insert into t1 values (_ucs2 0x00f4),(_ucs2 0x00d4);
+insert into t1 values (_ucs2 0x00f5),(_ucs2 0x00d5);
+insert into t1 values (_ucs2 0x00f6),(_ucs2 0x00d6);
+insert into t1 values (_ucs2 0x00f7),(_ucs2 0x00d7);
+insert into t1 values (_ucs2 0x00f8),(_ucs2 0x00d8);
+insert into t1 values (_ucs2 0x00f9),(_ucs2 0x00d9);
+insert into t1 values (_ucs2 0x00fa),(_ucs2 0x00da);
+insert into t1 values (_ucs2 0x00fb),(_ucs2 0x00db);
+insert into t1 values (_ucs2 0x00fc),(_ucs2 0x00dc);
+insert into t1 values (_ucs2 0x00fd),(_ucs2 0x00dd);
+insert into t1 values (_ucs2 0x00fe),(_ucs2 0x00de);
+insert into t1 values (_ucs2 0x00ff),(_ucs2 0x00df);
+insert into t1 values (_ucs2 0x0100),(_ucs2 0x0101),(_ucs2 0x0102),(_ucs2 0x0103);
+insert into t1 values (_ucs2 0x0104),(_ucs2 0x0105),(_ucs2 0x0106),(_ucs2 0x0107);
+insert into t1 values (_ucs2 0x0108),(_ucs2 0x0109),(_ucs2 0x010a),(_ucs2 0x010b);
+insert into t1 values (_ucs2 0x010c),(_ucs2 0x010d),(_ucs2 0x010e),(_ucs2 0x010f);
+insert into t1 values (_ucs2 0x0110),(_ucs2 0x0111),(_ucs2 0x0112),(_ucs2 0x0113);
+insert into t1 values (_ucs2 0x0114),(_ucs2 0x0115),(_ucs2 0x0116),(_ucs2 0x0117);
+insert into t1 values (_ucs2 0x0118),(_ucs2 0x0119),(_ucs2 0x011a),(_ucs2 0x011b);
+insert into t1 values (_ucs2 0x011c),(_ucs2 0x011d),(_ucs2 0x011e),(_ucs2 0x011f);
+insert into t1 values (_ucs2 0x0120),(_ucs2 0x0121),(_ucs2 0x0122),(_ucs2 0x0123);
+insert into t1 values (_ucs2 0x0124),(_ucs2 0x0125),(_ucs2 0x0126),(_ucs2 0x0127);
+insert into t1 values (_ucs2 0x0128),(_ucs2 0x0129),(_ucs2 0x012a),(_ucs2 0x012b);
+insert into t1 values (_ucs2 0x012c),(_ucs2 0x012d),(_ucs2 0x012e),(_ucs2 0x012f);
+insert into t1 values (_ucs2 0x0130),(_ucs2 0x0131),(_ucs2 0x0132),(_ucs2 0x0133);
+insert into t1 values (_ucs2 0x0134),(_ucs2 0x0135),(_ucs2 0x0136),(_ucs2 0x0137);
+insert into t1 values (_ucs2 0x0138),(_ucs2 0x0139),(_ucs2 0x013a),(_ucs2 0x013b);
+insert into t1 values (_ucs2 0x013c),(_ucs2 0x013d),(_ucs2 0x013e),(_ucs2 0x013f);
+insert into t1 values (_ucs2 0x0140),(_ucs2 0x0141),(_ucs2 0x0142),(_ucs2 0x0143);
+insert into t1 values (_ucs2 0x0144),(_ucs2 0x0145),(_ucs2 0x0146),(_ucs2 0x0147);
+insert into t1 values (_ucs2 0x0148),(_ucs2 0x0149),(_ucs2 0x014a),(_ucs2 0x014b);
+insert into t1 values (_ucs2 0x014c),(_ucs2 0x014d),(_ucs2 0x014e),(_ucs2 0x014f);
+insert into t1 values (_ucs2 0x0150),(_ucs2 0x0151),(_ucs2 0x0152),(_ucs2 0x0153);
+insert into t1 values (_ucs2 0x0154),(_ucs2 0x0155),(_ucs2 0x0156),(_ucs2 0x0157);
+insert into t1 values (_ucs2 0x0158),(_ucs2 0x0159),(_ucs2 0x015a),(_ucs2 0x015b);
+insert into t1 values (_ucs2 0x015c),(_ucs2 0x015d),(_ucs2 0x015e),(_ucs2 0x015f);
+insert into t1 values (_ucs2 0x0160),(_ucs2 0x0161),(_ucs2 0x0162),(_ucs2 0x0163);
+insert into t1 values (_ucs2 0x0164),(_ucs2 0x0165),(_ucs2 0x0166),(_ucs2 0x0167);
+insert into t1 values (_ucs2 0x0168),(_ucs2 0x0169),(_ucs2 0x016a),(_ucs2 0x016b);
+insert into t1 values (_ucs2 0x016c),(_ucs2 0x016d),(_ucs2 0x016e),(_ucs2 0x016f);
+insert into t1 values (_ucs2 0x0170),(_ucs2 0x0171),(_ucs2 0x0172),(_ucs2 0x0173);
+insert into t1 values (_ucs2 0x0174),(_ucs2 0x0175),(_ucs2 0x0176),(_ucs2 0x0177);
+insert into t1 values (_ucs2 0x0178),(_ucs2 0x0179),(_ucs2 0x017a),(_ucs2 0x017b);
+insert into t1 values (_ucs2 0x017c),(_ucs2 0x017d),(_ucs2 0x017e),(_ucs2 0x017f);
+insert into t1 values (_ucs2 0x0180),(_ucs2 0x0181),(_ucs2 0x0182),(_ucs2 0x0183);
+insert into t1 values (_ucs2 0x0184),(_ucs2 0x0185),(_ucs2 0x0186),(_ucs2 0x0187);
+insert into t1 values (_ucs2 0x0188),(_ucs2 0x0189),(_ucs2 0x018a),(_ucs2 0x018b);
+insert into t1 values (_ucs2 0x018c),(_ucs2 0x018d),(_ucs2 0x018e),(_ucs2 0x018f);
+insert into t1 values (_ucs2 0x0190),(_ucs2 0x0191),(_ucs2 0x0192),(_ucs2 0x0193);
+insert into t1 values (_ucs2 0x0194),(_ucs2 0x0195),(_ucs2 0x0196),(_ucs2 0x0197);
+insert into t1 values (_ucs2 0x0198),(_ucs2 0x0199),(_ucs2 0x019a),(_ucs2 0x019b);
+insert into t1 values (_ucs2 0x019c),(_ucs2 0x019d),(_ucs2 0x019e),(_ucs2 0x019f);
+insert into t1 values (_ucs2 0x01a0),(_ucs2 0x01a1),(_ucs2 0x01a2),(_ucs2 0x01a3);
+insert into t1 values (_ucs2 0x01a4),(_ucs2 0x01a5),(_ucs2 0x01a6),(_ucs2 0x01a7);
+insert into t1 values (_ucs2 0x01a8),(_ucs2 0x01a9),(_ucs2 0x01aa),(_ucs2 0x01ab);
+insert into t1 values (_ucs2 0x01ac),(_ucs2 0x01ad),(_ucs2 0x01ae),(_ucs2 0x01af);
+insert into t1 values (_ucs2 0x01b0),(_ucs2 0x01b1),(_ucs2 0x01b2),(_ucs2 0x01b3);
+insert into t1 values (_ucs2 0x01b4),(_ucs2 0x01b5),(_ucs2 0x01b6),(_ucs2 0x01b7);
+insert into t1 values (_ucs2 0x01b8),(_ucs2 0x01b9),(_ucs2 0x01ba),(_ucs2 0x01bb);
+insert into t1 values (_ucs2 0x01bc),(_ucs2 0x01bd),(_ucs2 0x01be),(_ucs2 0x01bf);
+insert into t1 values (_ucs2 0x01c0),(_ucs2 0x01c1),(_ucs2 0x01c2),(_ucs2 0x01c3);
+insert into t1 values (_ucs2 0x01c4),(_ucs2 0x01c5),(_ucs2 0x01c6),(_ucs2 0x01c7);
+insert into t1 values (_ucs2 0x01c8),(_ucs2 0x01c9),(_ucs2 0x01ca),(_ucs2 0x01cb);
+insert into t1 values (_ucs2 0x01cc),(_ucs2 0x01cd),(_ucs2 0x01ce),(_ucs2 0x01cf);
+insert into t1 values (_ucs2 0x01d0),(_ucs2 0x01d1),(_ucs2 0x01d2),(_ucs2 0x01d3);
+insert into t1 values (_ucs2 0x01d4),(_ucs2 0x01d5),(_ucs2 0x01d6),(_ucs2 0x01d7);
+insert into t1 values (_ucs2 0x01d8),(_ucs2 0x01d9),(_ucs2 0x01da),(_ucs2 0x01db);
+insert into t1 values (_ucs2 0x01dc),(_ucs2 0x01dd),(_ucs2 0x01de),(_ucs2 0x01df);
+insert into t1 values (_ucs2 0x01e0),(_ucs2 0x01e1),(_ucs2 0x01e2),(_ucs2 0x01e3);
+insert into t1 values (_ucs2 0x01e4),(_ucs2 0x01e5),(_ucs2 0x01e6),(_ucs2 0x01e7);
+insert into t1 values (_ucs2 0x01e8),(_ucs2 0x01e9),(_ucs2 0x01ea),(_ucs2 0x01eb);
+insert into t1 values (_ucs2 0x01ec),(_ucs2 0x01ed),(_ucs2 0x01ee),(_ucs2 0x01ef);
+insert into t1 values (_ucs2 0x01f0),(_ucs2 0x01f1),(_ucs2 0x01f2),(_ucs2 0x01f3);
+insert into t1 values (_ucs2 0x01f4),(_ucs2 0x01f5),(_ucs2 0x01f6),(_ucs2 0x01f7);
+insert into t1 values (_ucs2 0x01f8),(_ucs2 0x01f9),(_ucs2 0x01fa),(_ucs2 0x01fb);
+insert into t1 values (_ucs2 0x01fc),(_ucs2 0x01fd),(_ucs2 0x01fe),(_ucs2 0x01ff);
+INSERT INTO t1 VALUES (_ucs2 0x1EA0),(_ucs2 0x1EA1),(_ucs2 0x1EA2),(_ucs2 0x1EA3);
+INSERT INTO t1 VALUES (_ucs2 0x1EA4),(_ucs2 0x1EA5),(_ucs2 0x1EA6),(_ucs2 0x1EA7);
+INSERT INTO t1 VALUES (_ucs2 0x1EA8),(_ucs2 0x1EA9),(_ucs2 0x1EAA),(_ucs2 0x1EAB);
+INSERT INTO t1 VALUES (_ucs2 0x1EAC),(_ucs2 0x1EAD),(_ucs2 0x1EAE),(_ucs2 0x1EAF);
+INSERT INTO t1 VALUES (_ucs2 0x1EB0),(_ucs2 0x1EB1),(_ucs2 0x1EB2),(_ucs2 0x1EB3);
+INSERT INTO t1 VALUES (_ucs2 0x1EB4),(_ucs2 0x1EB5),(_ucs2 0x1EB6),(_ucs2 0x1EB7);
+INSERT INTO t1 VALUES (_ucs2 0x1EB8),(_ucs2 0x1EB9),(_ucs2 0x1EBA),(_ucs2 0x1EBB);
+INSERT INTO t1 VALUES (_ucs2 0x1EBC),(_ucs2 0x1EBD),(_ucs2 0x1EBE),(_ucs2 0x1EBF);
+INSERT INTO t1 VALUES (_ucs2 0x1EC0),(_ucs2 0x1EC1),(_ucs2 0x1EC2),(_ucs2 0x1EC3);
+INSERT INTO t1 VALUES (_ucs2 0x1EC4),(_ucs2 0x1EC5),(_ucs2 0x1EC6),(_ucs2 0x1EC7);
+INSERT INTO t1 VALUES (_ucs2 0x1EC8),(_ucs2 0x1EC9),(_ucs2 0x1ECA),(_ucs2 0x1ECB);
+INSERT INTO t1 VALUES (_ucs2 0x1ECC),(_ucs2 0x1ECD),(_ucs2 0x1ECE),(_ucs2 0x1ECF);
+INSERT INTO t1 VALUES (_ucs2 0x1ED0),(_ucs2 0x1ED1),(_ucs2 0x1ED2),(_ucs2 0x1ED3);
+INSERT INTO t1 VALUES (_ucs2 0x1ED4),(_ucs2 0x1ED5),(_ucs2 0x1ED6),(_ucs2 0x1ED7);
+INSERT INTO t1 VALUES (_ucs2 0x1ED8),(_ucs2 0x1ED9),(_ucs2 0x1EDA),(_ucs2 0x1EDB);
+INSERT INTO t1 VALUES (_ucs2 0x1EDC),(_ucs2 0x1EDD),(_ucs2 0x1EDE),(_ucs2 0x1EDF);
+INSERT INTO t1 VALUES (_ucs2 0x1EE0),(_ucs2 0x1EE1),(_ucs2 0x1EE2),(_ucs2 0x1EE3);
+INSERT INTO t1 VALUES (_ucs2 0x1EE4),(_ucs2 0x1EE5),(_ucs2 0x1EE6),(_ucs2 0x1EE7);
+INSERT INTO t1 VALUES (_ucs2 0x1EE8),(_ucs2 0x1EE9),(_ucs2 0x1EEA),(_ucs2 0x1EEB);
+INSERT INTO t1 VALUES (_ucs2 0x1EEC),(_ucs2 0x1EED),(_ucs2 0x1EEE),(_ucs2 0x1EEF);
+INSERT INTO t1 VALUES (_ucs2 0x1EF0),(_ucs2 0x1EF1);
+insert into t1 values ('AA'),('Aa'),('aa'),('aA');
+insert into t1 values ('AE'),('Ae'),('ae'),('aE');
+insert into t1 values ('CH'),('Ch'),('ch'),('cH');
+insert into t1 values ('DZ'),('Dz'),('dz'),('dZ');
+insert into t1 values ('DŽ'),('Dž'),('dž'),('dŽ');
+insert into t1 values ('IJ'),('Ij'),('ij'),('iJ');
+insert into t1 values ('LJ'),('Lj'),('lj'),('lJ');
+insert into t1 values ('LL'),('Ll'),('ll'),('lL');
+insert into t1 values ('NJ'),('Nj'),('nj'),('nJ');
+insert into t1 values ('OE'),('Oe'),('oe'),('oE');
+insert into t1 values ('SS'),('Ss'),('ss'),('sS');
+insert into t1 values ('RR'),('Rr'),('rr'),('rR');
+INSERT INTO t1 VALUES ('a ');
+SELECT c1, HEX(WEIGHT_STRING(c1 LEVEL 1)), HEX(WEIGHT_STRING(c1 LEVEL 2)) FROM t1 ORDER BY c1, BINARY c1;
+c1 HEX(WEIGHT_STRING(c1 LEVEL 1)) HEX(WEIGHT_STRING(c1 LEVEL 2))
+÷ 0552 0020
+× 0553 0020
+A 120F 0020
+a 120F 0020
+Á 120F 00200032
+á 120F 00200032
+À 120F 00200035
+à 120F 00200035
+Ă 120F 00200037
+ă 120F 00200037
+Ắ 120F 002000370032
+ắ 120F 002000370032
+Ằ 120F 002000370035
+ằ 120F 002000370035
+Ẵ 120F 00200037004E
+ẵ 120F 00200037004E
+Ẳ 120F 002000370064
+ẳ 120F 002000370064
+Â 120F 0020003C
+â 120F 0020003C
+Ấ 120F 0020003C0032
+ấ 120F 0020003C0032
+Ầ 120F 0020003C0035
+ầ 120F 0020003C0035
+Ẫ 120F 0020003C004E
+ẫ 120F 0020003C004E
+Ẩ 120F 0020003C0064
+ẩ 120F 0020003C0064
+Ǎ 120F 00200041
+ǎ 120F 00200041
+Å 120F 00200043
+å 120F 00200043
+Ǻ 120F 002000430032
+ǻ 120F 002000430032
+Ä 120F 00200047
+ä 120F 00200047
+Ǟ 120F 00200047005B
+ǟ 120F 00200047005B
+Ã 120F 0020004E
+ã 120F 0020004E
+Ǡ 120F 00200052005B
+ǡ 120F 00200052005B
+Ą 120F 00200059
+ą 120F 00200059
+Ā 120F 0020005B
+ā 120F 0020005B
+Ả 120F 00200064
+ả 120F 00200064
+Ạ 120F 00200070
+ạ 120F 00200070
+Ặ 120F 002000700037
+ặ 120F 002000700037
+Ậ 120F 00200070003C
+ậ 120F 00200070003C
+a 120F020A 00200020
+AA 120F120F 00200020
+Aa 120F120F 00200020
+aA 120F120F 00200020
+aa 120F120F 00200020
+AE 120F126B 00200020
+Ae 120F126B 00200020
+aE 120F126B 00200020
+ae 120F126B 00200020
+Æ 120F126B 002001590020
+æ 120F126B 002001590020
+Ǽ 120F126B 0020015900200032
+ǽ 120F126B 0020015900200032
+Ǣ 120F126B 002001590020005B
+ǣ 120F126B 002001590020005B
+B 1225 0020
+b 1225 0020
+ƀ 122D 0020
+Ɓ 1235 0020
+Ƃ 1239 0020
+ƃ 1239 0020
+C 123D 0020
+c 123D 0020
+Ć 123D 00200032
+ć 123D 00200032
+Ĉ 123D 0020003C
+ĉ 123D 0020003C
+Ċ 123D 00200052
+ċ 123D 00200052
+Ç 123D 00200056
+ç 123D 00200056
+cH 123D12D3 00200020
+Č 123E 0020
+č 123E 0020
+Ƈ 1246 0020
+ƈ 1246 0020
+D 1250 0020
+d 1250 0020
+Ď 1250 00200041
+ď 1250 00200041
+Đ 1250 0020007D
+đ 1250 0020007D
+Ð 1250 00200159
+ð 1250 00200159
+DZ 125014AD 00200020
+Dz 125014AD 00200020
+dZ 125014AD 00200020
+dz 125014AD 00200020
+DZ 125014AD 00200020
+Dz 125014AD 00200020
+dz 125014AD 00200020
+DŽ 125014AD 002000200041
+Dž 125014AD 002000200041
+dž 125014AD 002000200041
+DŽ 125014AE 00200020
+Dž 125014AE 00200020
+dŽ 125014AE 00200020
+dž 125014AE 00200020
+Ɖ 1258 0020
+Ɗ 125C 0020
+Ƌ 1261 0020
+ƌ 1261 0020
+E 126B 0020
+e 126B 0020
+É 126B 00200032
+é 126B 00200032
+È 126B 00200035
+è 126B 00200035
+Ĕ 126B 00200037
+ĕ 126B 00200037
+Ê 126B 0020003C
+ê 126B 0020003C
+Ế 126B 0020003C0032
+ế 126B 0020003C0032
+Ề 126B 0020003C0035
+ề 126B 0020003C0035
+Ễ 126B 0020003C004E
+ễ 126B 0020003C004E
+Ể 126B 0020003C0064
+ể 126B 0020003C0064
+Ě 126B 00200041
+ě 126B 00200041
+Ë 126B 00200047
+ë 126B 00200047
+Ẽ 126B 0020004E
+ẽ 126B 0020004E
+Ė 126B 00200052
+ė 126B 00200052
+Ę 126B 00200059
+ę 126B 00200059
+Ē 126B 0020005B
+ē 126B 0020005B
+Ẻ 126B 00200064
+ẻ 126B 00200064
+Ẹ 126B 00200070
+ẹ 126B 00200070
+Ệ 126B 00200070003C
+ệ 126B 00200070003C
+Ǝ 1276 0020
+ǝ 1276 0020
+Ə 127B 0020
+Ɛ 1280 0020
+F 12A3 0020
+f 12A3 0020
+Ƒ 12AA 0020
+ƒ 12AA 0020
+G 12B0 0020
+g 12B0 0020
+Ǵ 12B0 00200032
+ǵ 12B0 00200032
+Ğ 12B0 00200037
+ğ 12B0 00200037
+Ĝ 12B0 0020003C
+ĝ 12B0 0020003C
+Ǧ 12B0 00200041
+ǧ 12B0 00200041
+Ġ 12B0 00200052
+ġ 12B0 00200052
+Ģ 12B0 00200056
+ģ 12B0 00200056
+Ǥ 12BC 0020
+ǥ 12BC 0020
+Ɠ 12C1 0020
+Ɣ 12CB 0020
+Ƣ 12CF 0020
+ƣ 12CF 0020
+H 12D3 0020
+h 12D3 0020
+Ĥ 12D3 0020003C
+ĥ 12D3 0020003C
+Ħ 12D3 0020007D
+ħ 12D3 0020007D
+CH 12D4 0020
+Ch 12D4 0020
+ch 12D4 0020
+ƕ 12DB 0020
+Ƕ 12DB 0020
+I 12EC 0020
+i 12EC 0020
+Í 12EC 00200032
+í 12EC 00200032
+Ì 12EC 00200035
+ì 12EC 00200035
+Ĭ 12EC 00200037
+ĭ 12EC 00200037
+Î 12EC 0020003C
+î 12EC 0020003C
+Ǐ 12EC 00200041
+ǐ 12EC 00200041
+Ï 12EC 00200047
+ï 12EC 00200047
+Ĩ 12EC 0020004E
+ĩ 12EC 0020004E
+İ 12EC 00200052
+Į 12EC 00200059
+į 12EC 00200059
+Ī 12EC 0020005B
+ī 12EC 0020005B
+Ỉ 12EC 00200064
+ỉ 12EC 00200064
+Ị 12EC 00200070
+ị 12EC 00200070
+IJ 12EC1305 00200020
+Ij 12EC1305 00200020
+iJ 12EC1305 00200020
+ij 12EC1305 00200020
+IJ 12EC1305 00200020
+ij 12EC1305 00200020
+ı 12F0 0020
+Ɨ 12FA 0020
+Ɩ 1300 0020
+J 1305 0020
+j 1305 0020
+Ĵ 1305 0020003C
+ĵ 1305 0020003C
+ǰ 1305 00200041
+K 131E 0020
+k 131E 0020
+Ǩ 131E 00200041
+ǩ 131E 00200041
+Ķ 131E 00200056
+ķ 131E 00200056
+Ƙ 1324 0020
+ƙ 1324 0020
+L 1330 0020
+l 1330 0020
+Ĺ 1330 00200032
+ĺ 1330 00200032
+Ľ 1330 00200041
+ľ 1330 00200041
+Ļ 1330 00200056
+ļ 1330 00200056
+Ł 1330 0020007D
+ł 1330 0020007D
+Ŀ 1330 00200159
+ŀ 1330 00200159
+LJ 13301305 00200020
+Lj 13301305 00200020
+lJ 13301305 00200020
+lj 13301305 00200020
+LJ 13301305 00200020
+Lj 13301305 00200020
+lj 13301305 00200020
+LL 13301330 00200020
+Ll 13301330 00200020
+lL 13301330 00200020
+ll 13301330 00200020
+ƚ 133B 0020
+ƛ 1357 0020
+M 135F 0020
+m 135F 0020
+N 136D 0020
+n 136D 0020
+Ń 136D 00200032
+ń 136D 00200032
+Ǹ 136D 00200035
+ǹ 136D 00200035
+Ň 136D 00200041
+ň 136D 00200041
+Ñ 136D 0020004E
+ñ 136D 0020004E
+Ņ 136D 00200056
+ņ 136D 00200056
+NJ 136D1305 00200020
+Nj 136D1305 00200020
+nJ 136D1305 00200020
+nj 136D1305 00200020
+NJ 136D1305 00200020
+Nj 136D1305 00200020
+nj 136D1305 00200020
+Ɲ 1378 0020
+ƞ 137C 0020
+Ŋ 138A 0020
+ŋ 138A 0020
+O 138E 0020
+o 138E 0020
+Ó 138E 00200032
+ó 138E 00200032
+Ò 138E 00200035
+ò 138E 00200035
+Ŏ 138E 00200037
+ŏ 138E 00200037
+Ô 138E 0020003C
+ô 138E 0020003C
+Ố 138E 0020003C0032
+ố 138E 0020003C0032
+Ồ 138E 0020003C0035
+ồ 138E 0020003C0035
+Ỗ 138E 0020003C004E
+ỗ 138E 0020003C004E
+Ổ 138E 0020003C0064
+ổ 138E 0020003C0064
+Ǒ 138E 00200041
+ǒ 138E 00200041
+Ö 138E 00200047
+ö 138E 00200047
+Ő 138E 0020004D
+ő 138E 0020004D
+Õ 138E 0020004E
+õ 138E 0020004E
+Ø 138E 00200054
+ø 138E 00200054
+Ǿ 138E 002000540032
+ǿ 138E 002000540032
+Ǫ 138E 00200059
+ǫ 138E 00200059
+Ǭ 138E 00200059005B
+ǭ 138E 00200059005B
+Ō 138E 0020005B
+ō 138E 0020005B
+Ỏ 138E 00200064
+ỏ 138E 00200064
+Ơ 138E 00200068
+ơ 138E 00200068
+Ớ 138E 002000680032
+ớ 138E 002000680032
+Ờ 138E 002000680035
+ờ 138E 002000680035
+Ỡ 138E 00200068004E
+ỡ 138E 00200068004E
+Ở 138E 002000680064
+ở 138E 002000680064
+Ợ 138E 002000680070
+ợ 138E 002000680070
+Ọ 138E 00200070
+ọ 138E 00200070
+Ộ 138E 00200070003C
+ộ 138E 00200070003C
+OE 138E126B 00200020
+Oe 138E126B 00200020
+oE 138E126B 00200020
+oe 138E126B 00200020
+Œ 138E126B 002001590020
+œ 138E126B 002001590020
+Ɔ 139A 0020
+Ɵ 13A5 0020
+P 13B3 0020
+p 13B3 0020
+Ƥ 13BC 0020
+ƥ 13BC 0020
+Q 13C8 0020
+q 13C8 0020
+ĸ 13D6 0020
+R 13DA 0020
+r 13DA 0020
+Ŕ 13DA 00200032
+ŕ 13DA 00200032
+Ŗ 13DA 00200056
+ŗ 13DA 00200056
+RR 13DA13DA 00200020
+Rr 13DA13DA 00200020
+rR 13DA13DA 00200020
+rr 13DA13DA 00200020
+Ř 13DB 0020
+ř 13DB 0020
+Ʀ 13DE 0020
+S 1410 0020
+s 1410 0020
+Ś 1410 00200032
+ś 1410 00200032
+Ŝ 1410 0020003C
+ŝ 1410 0020003C
+Ş 1410 00200056
+ş 1410 00200056
+ſ 1410 0020015A
+SS 14101410 00200020
+Ss 14101410 00200020
+sS 14101410 00200020
+ss 14101410 00200020
+ß 14101410 002001590020
+Š 1411 0020
+š 1411 0020
+Ʃ 1421 0020
+ƪ 1426 0020
+T 1433 0020
+t 1433 0020
+Ť 1433 00200041
+ť 1433 00200041
+Ţ 1433 00200056
+ţ 1433 00200056
+ƾ 14331410 00200020
+Ŧ 1438 0020
+ŧ 1438 0020
+ƫ 143E 0020
+Ƭ 1442 0020
+ƭ 1442 0020
+Ʈ 1446 0020
+U 1453 0020
+u 1453 0020
+Ú 1453 00200032
+ú 1453 00200032
+Ù 1453 00200035
+ù 1453 00200035
+Ŭ 1453 00200037
+ŭ 1453 00200037
+Û 1453 0020003C
+û 1453 0020003C
+Ǔ 1453 00200041
+ǔ 1453 00200041
+Ů 1453 00200043
+ů 1453 00200043
+Ü 1453 00200047
+ü 1453 00200047
+Ǘ 1453 002000470032
+ǘ 1453 002000470032
+Ǜ 1453 002000470035
+ǜ 1453 002000470035
+Ǚ 1453 002000470041
+ǚ 1453 002000470041
+Ǖ 1453 00200047005B
+ǖ 1453 00200047005B
+Ű 1453 0020004D
+ű 1453 0020004D
+Ũ 1453 0020004E
+ũ 1453 0020004E
+Ų 1453 00200059
+ų 1453 00200059
+Ū 1453 0020005B
+ū 1453 0020005B
+Ủ 1453 00200064
+ủ 1453 00200064
+Ư 1453 00200068
+ư 1453 00200068
+Ứ 1453 002000680032
+ứ 1453 002000680032
+Ừ 1453 002000680035
+ừ 1453 002000680035
+Ữ 1453 00200068004E
+ữ 1453 00200068004E
+Ử 1453 002000680064
+ử 1453 002000680064
+Ự 1453 002000680070
+ự 1453 002000680070
+Ụ 1453 00200070
+ụ 1453 00200070
+Ɯ 146D 0020
+Ʊ 1476 0020
+V 147B 0020
+v 147B 0020
+Ʋ 1482 0020
+W 148D 0020
+w 148D 0020
+Ŵ 148D 0020003C
+ŵ 148D 0020003C
+X 1497 0020
+x 1497 0020
+Y 149C 0020
+y 149C 0020
+Ý 149C 00200032
+ý 149C 00200032
+Ŷ 149C 0020003C
+ŷ 149C 0020003C
+ÿ 149C 00200047
+Ÿ 149C 00200047
+Ƴ 14A8 0020
+ƴ 14A8 0020
+Z 14AD 0020
+z 14AD 0020
+Ź 14AD 00200032
+ź 14AD 00200032
+Ż 14AD 00200052
+ż 14AD 00200052
+ƍ 14AD148D 00200020
+Ž 14AE 0020
+ž 14AE 0020
+Ƶ 14B2 0020
+ƶ 14B2 0020
+Ʒ 14CA 0020
+Ǯ 14CA 00200041
+ǯ 14CA 00200041
+Ƹ 14CF 0020
+ƹ 14CF 0020
+ƺ 14D4 0020
+Þ 14E0 0020
+þ 14E0 0020
+ƿ 14E6 0020
+Ƿ 14E6 0020
+ƻ 14EF 0020
+Ƨ 14F6 0020
+ƨ 14F6 0020
+Ƽ 14FA 0020
+ƽ 14FA 0020
+Ƅ 14FE 0020
+ƅ 14FE 0020
+ʼn 150B136D 00200020
+ǀ 1525 0020
+ǁ 1529 0020
+ǂ 152D 0020
+ǃ 1531 0020
+SELECT c1, HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)), HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2)) FROM t1 WHERE c1 BETWEEN 'a' AND 'aZ' ORDER BY c1, BINARY c1;
+c1 HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)) HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2))
+A 120F02000200 002000200020
+a 120F02000200 002000200020
+Á 120F02000200 002000320020
+á 120F02000200 002000320020
+À 120F02000200 002000350020
+à 120F02000200 002000350020
+Ă 120F02000200 002000370020
+ă 120F02000200 002000370020
+Ắ 120F02000200 002000370032
+ắ 120F02000200 002000370032
+Ằ 120F02000200 002000370035
+ằ 120F02000200 002000370035
+Ẵ 120F02000200 00200037004E
+ẵ 120F02000200 00200037004E
+Ẳ 120F02000200 002000370064
+ẳ 120F02000200 002000370064
+Â 120F02000200 0020003C0020
+â 120F02000200 0020003C0020
+Ấ 120F02000200 0020003C0032
+ấ 120F02000200 0020003C0032
+Ầ 120F02000200 0020003C0035
+ầ 120F02000200 0020003C0035
+Ẫ 120F02000200 0020003C004E
+ẫ 120F02000200 0020003C004E
+Ẩ 120F02000200 0020003C0064
+ẩ 120F02000200 0020003C0064
+Ǎ 120F02000200 002000410020
+ǎ 120F02000200 002000410020
+Å 120F02000200 002000430020
+å 120F02000200 002000430020
+Ǻ 120F02000200 002000430032
+ǻ 120F02000200 002000430032
+Ä 120F02000200 002000470020
+ä 120F02000200 002000470020
+Ǟ 120F02000200 00200047005B
+ǟ 120F02000200 00200047005B
+Ã 120F02000200 0020004E0020
+ã 120F02000200 0020004E0020
+Ǡ 120F02000200 00200052005B
+ǡ 120F02000200 00200052005B
+Ą 120F02000200 002000590020
+ą 120F02000200 002000590020
+Ā 120F02000200 0020005B0020
+ā 120F02000200 0020005B0020
+Ả 120F02000200 002000640020
+ả 120F02000200 002000640020
+Ạ 120F02000200 002000700020
+ạ 120F02000200 002000700020
+Ặ 120F02000200 002000700037
+ặ 120F02000200 002000700037
+Ậ 120F02000200 00200070003C
+ậ 120F02000200 00200070003C
+a 120F020A0200 002000200020
+AA 120F120F0200 002000200020
+Aa 120F120F0200 002000200020
+aA 120F120F0200 002000200020
+aa 120F120F0200 002000200020
+AE 120F126B0200 002000200020
+Ae 120F126B0200 002000200020
+aE 120F126B0200 002000200020
+ae 120F126B0200 002000200020
+Æ 120F126B0200 002001590020
+æ 120F126B0200 002001590020
+Ǽ 120F126B0200 002001590020
+ǽ 120F126B0200 002001590020
+Ǣ 120F126B0200 002001590020
+ǣ 120F126B0200 002001590020
+DROP TABLE t1;
+SELECT 'a' = 'a ';
+'a' = 'a '
+0
+SELECT 'a' < 'á';
+'a' < 'á'
+1
+SELECT 'áa' < 'ab';
+'áa' < 'ab'
+1
+SELECT 'á' < 'ä';
+'á' < 'ä'
+1
+SELECT 'äa' < 'áb';
+'äa' < 'áb'
+1
+SELECT 'c' < 'č';
+'c' < 'č'
+1
+SELECT 'cb' < 'ča';
+'cb' < 'ča'
+1
+SELECT 'd' < 'ď';
+'d' < 'ď'
+1
+SELECT 'ďa' < 'db';
+'ďa' < 'db'
+1
+SELECT 'e' < 'é';
+'e' < 'é'
+1
+SELECT 'éa' < 'eb';
+'éa' < 'eb'
+1
+SELECT 'é' < 'ě';
+'é' < 'ě'
+1
+SELECT 'ěa' < 'éb';
+'ěa' < 'éb'
+1
+SELECT 'i' < 'í';
+'i' < 'í'
+1
+SELECT 'ía' < 'ib';
+'ía' < 'ib'
+1
+SELECT 'n' < 'ň';
+'n' < 'ň'
+1
+SELECT 'ňa' < 'nb';
+'ňa' < 'nb'
+1
+SELECT 'o' < 'ó';
+'o' < 'ó'
+1
+SELECT 'óa' < 'ob';
+'óa' < 'ob'
+1
+SELECT 'ó' < 'ö';
+'ó' < 'ö'
+1
+SELECT 'öa' < 'ób';
+'öa' < 'ób'
+1
+SELECT 'r' < 'ř';
+'r' < 'ř'
+1
+SELECT 'rb' < 'řa';
+'rb' < 'řa'
+1
+SELECT 's' < 'š';
+'s' < 'š'
+1
+SELECT 'sb' < 'ša';
+'sb' < 'ša'
+1
+SELECT 't' < 'ť';
+'t' < 'ť'
+1
+SELECT 'ťa' < 'tb';
+'ťa' < 'tb'
+1
+SELECT 'u' < 'ú';
+'u' < 'ú'
+1
+SELECT 'úa' < 'ub';
+'úa' < 'ub'
+1
+SELECT 'ú' < 'ů';
+'ú' < 'ů'
+1
+SELECT 'ůa' < 'úb';
+'ůa' < 'úb'
+1
+SELECT 'ů' < 'ü';
+'ů' < 'ü'
+1
+SELECT 'üa' < 'ůb';
+'üa' < 'ůb'
+1
+SELECT 'y' < 'ý';
+'y' < 'ý'
+1
+SELECT 'ýa' < 'yb';
+'ýa' < 'yb'
+1
+SELECT 'z' < 'ž';
+'z' < 'ž'
+1
+SELECT 'zb' < 'ža';
+'zb' < 'ža'
+1
+SELECT 'hž' < 'ch';
+'hž' < 'ch'
+1
+SELECT 'chž'< 'i';
+'chž'< 'i'
+1
+SELECT 'a' COLLATE utf8_czech_test_bad_w2;
+ERROR HY000: Unknown collation: 'utf8_czech_test_bad_w2'
diff --git a/mysql-test/r/derived_cond_pushdown.result b/mysql-test/r/derived_cond_pushdown.result
index 3922a7d0360..d2a51ec5536 100644
--- a/mysql-test/r/derived_cond_pushdown.result
+++ b/mysql-test/r/derived_cond_pushdown.result
@@ -7083,3 +7083,87 @@ a
3
6
drop table t1;
+#
+# MDEV-11072: pushdown of the condition obtained
+# after constant row substitution
+#
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT);
+CREATE OR REPLACE VIEW v2 AS SELECT * FROM t2;
+CREATE TABLE t3 (c INT);
+CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
+SELECT * FROM t1 WHERE a IN (
+SELECT b FROM v2 WHERE b < a OR b IN (
+SELECT c FROM v3 WHERE c = a
+)
+);
+a
+INSERT INTO t1 VALUES (2);
+INSERT INTO t2 VALUES (3), (2);
+INSERT INTO t3 VALUES (4), (1), (2), (7);
+SELECT * FROM t1 WHERE a IN (
+SELECT b FROM v2 WHERE b < a OR b IN (
+SELECT c FROM v3 WHERE c = a
+)
+);
+a
+2
+EXPLAIN FORMAT=JSON
+SELECT * FROM t1 WHERE a IN (
+SELECT b FROM v2 WHERE b < a OR b IN (
+SELECT c FROM v3 WHERE c = a
+)
+);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "const_condition": "(0 or <in_optimizer>(2,<exists>(subquery#3)))",
+ "table": {
+ "table_name": "t1",
+ "access_type": "system",
+ "rows": 1,
+ "filtered": 100
+ },
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "(t2.b = 2)",
+ "first_match": "t1"
+ },
+ "subqueries": [
+ {
+ "query_block": {
+ "select_id": 3,
+ "table": {
+ "table_name": "<derived5>",
+ "access_type": "index_subquery",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["c"],
+ "ref": ["func"],
+ "rows": 2,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 5,
+ "table": {
+ "table_name": "t3",
+ "access_type": "ALL",
+ "rows": 4,
+ "filtered": 100,
+ "attached_condition": "(t3.c = 2)"
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+}
+DROP VIEW v2,v3;
+DROP TABLE t1,t2,t3;
diff --git a/mysql-test/r/dyncol.result b/mysql-test/r/dyncol.result
index 105123e2f1e..5b3ab44c19f 100644
--- a/mysql-test/r/dyncol.result
+++ b/mysql-test/r/dyncol.result
@@ -1731,36 +1731,36 @@ column_json(column_create(1, "val", 2, column_create(3, "val2")))
# Time encoding
#
select hex(column_create("t", "800:46:06.23434" AS time)) as hex,
-column_json(column_create("t", "800:46:06.23434" AS time)) as json;
-hex json
+column_json(column_create("t", "800:46:06.23434" AS time)) as js;
+hex js
04010001000000070074649363B82003 {"t":"800:46:06.234340"}
select hex(column_create(1, "800:46:06.23434" AS time)) as hex,
-column_json(column_create(1, "800:46:06.23434" AS time)) as json;
-hex json
+column_json(column_create(1, "800:46:06.23434" AS time)) as js;
+hex js
000100010007649363B82003 {"1":"800:46:06.234340"}
select hex(column_create("t", "800:46:06" AS time)) as hex,
-column_json(column_create("t", "800:46:06" AS time)) as json;
-hex json
+column_json(column_create("t", "800:46:06" AS time)) as js;
+hex js
04010001000000070074860B32 {"t":"800:46:06"}
select hex(column_create(1, "800:46:06" AS time)) as hex,
-column_json(column_create(1, "800:46:06" AS time)) as json;
-hex json
+column_json(column_create(1, "800:46:06" AS time)) as js;
+hex js
000100010007000060B82003 {"1":"800:46:06"}
select hex(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as hex,
-column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as json;
-hex json
+column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as js;
+hex js
0401000100000005007495B90F649363B80A00 {"t":"2012-12-21 10:46:06.234340"}
select hex(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as hex,
-column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as json;
-hex json
+column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as js;
+hex js
00010001000595B90F649363B80A00 {"1":"2012-12-21 10:46:06.234340"}
select hex(column_create("t", "2012-12-21 10:46:06" AS datetime)) as hex,
-column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as json;
-hex json
+column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as js;
+hex js
0401000100000005007495B90F86AB00 {"t":"2012-12-21 10:46:06"}
select hex(column_create(1, "2012-12-21 10:46:06" AS datetime)) as hex,
-column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as json;
-hex json
+column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as js;
+hex js
00010001000595B90F000060B80A00 {"1":"2012-12-21 10:46:06"}
#
# MDEV-4849: Out of memory error and valgrind warnings on COLUMN_ADD
diff --git a/mysql-test/r/flush2.result b/mysql-test/r/flush2.result
index ff5d8755f01..a66b0d5c688 100644
--- a/mysql-test/r/flush2.result
+++ b/mysql-test/r/flush2.result
@@ -4,6 +4,8 @@ show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_basename
+log_bin_compress OFF
+log_bin_compress_min_len 256
log_bin_index
log_bin_trust_function_creators ON
show variables like 'relay_log%';
@@ -20,6 +22,8 @@ show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_basename
+log_bin_compress OFF
+log_bin_compress_min_len 256
log_bin_index
log_bin_trust_function_creators ON
show variables like 'relay_log%';
diff --git a/mysql-test/r/func_json.result b/mysql-test/r/func_json.result
index 1a47dd79fe8..6ee49d68787 100644
--- a/mysql-test/r/func_json.result
+++ b/mysql-test/r/func_json.result
@@ -46,6 +46,18 @@ json_array_append('["a", "b"]', '$', FALSE)
select json_array_append('{"k1":1, "k2":["a", "b"]}', '$.k2', 2);
json_array_append('{"k1":1, "k2":["a", "b"]}', '$.k2', 2)
{"k1":1, "k2":["a", "b", 2]}
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[1]', 'x');
+JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[1]', 'x')
+["a", "x", {"b": [1, 2]}, [3, 4]]
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[2]', 'x');
+JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[2]', 'x')
+["a", {"b": [1, 2]}, "x", [3, 4]]
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[3]', 'x');
+JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[3]', 'x')
+["a", {"b": [1, 2]}, [3, 4], "x"]
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[4]', 'x');
+JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[4]', 'x')
+["a", {"b": [1, 2]}, [3, 4], "x"]
select json_contains('{"k1":123, "k2":345}', '123', '$.k1');
json_contains('{"k1":123, "k2":345}', '123', '$.k1')
1
@@ -91,6 +103,44 @@ json_extract('{"key1":5, "key2":[2,3]}', "$.key1", "$.key2")
select json_extract('{"key0":true, "key1":"qwe"}', "$.key1");
json_extract('{"key0":true, "key1":"qwe"}', "$.key1")
qwe
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.k1', 'word');
+json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.k1', 'word')
+{"a":1, "b":{"c":1, "k1":"word"}, "d":[1, 2]}
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.d[3]', 3);
+json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.d[3]', 3)
+{"a":1, "b":{"c":1}, "d":[1, 2, 3]}
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.a[2]', 2);
+json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.a[2]', 2)
+{"a":[1, 2], "b":{"c":1}, "d":[1, 2]}
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.c', 'word');
+json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.c', 'word')
+{"a":1, "b":{"c":1}, "d":[1, 2]}
+select json_set('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]');
+json_set('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]')
+{ "a": 10, "b": [2, 3], "c":"[true, false]"}
+select json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]');
+json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]')
+{ "a": 10, "b": [2, 3]}
+select json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.b', '[true, false]');
+json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.b', '[true, false]')
+{ "a": 10, "b": "[true, false]"}
+set @j = '["a", ["b", "c"], "d"]';
+select json_remove(@j, '$[0]');
+json_remove(@j, '$[0]')
+[ ["b", "c"], "d"]
+select json_remove(@j, '$[1]');
+json_remove(@j, '$[1]')
+["a" "d"]
+select json_remove(@j, '$[2]');
+json_remove(@j, '$[2]')
+["a", ["b", "c"]]
+set @j = '{"a": 1, "b": [2, 3]}';
+select json_remove(@j, '$.b');
+json_remove(@j, '$.b')
+{"a": 1}
+select json_remove(@j, '$.a');
+json_remove(@j, '$.a')
+{"b": [2, 3]}
select json_object("ki", 1, "mi", "ya");
json_object("ki", 1, "mi", "ya")
{"ki": 1, "mi": "ya"}
@@ -121,3 +171,46 @@ BOOLEAN
select json_type('123');
json_type('123')
NUMBER
+select json_keys('{"a":{"c":1, "d":2}, "b":2}');
+json_keys('{"a":{"c":1, "d":2}, "b":2}')
+["a", "b"]
+select json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.a");
+json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.a")
+["c", "d"]
+select json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.b");
+json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.b")
+NULL
+SET @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';
+select json_search(@j, 'one', 'abc');
+json_search(@j, 'one', 'abc')
+"$[0]"
+select json_search(@j, 'all', 'abc');
+json_search(@j, 'all', 'abc')
+["$[0]", "$[2].x"]
+select json_search(@j, 'all', 'abc', NULL, '$[2]');
+json_search(@j, 'all', 'abc', NULL, '$[2]')
+"$[2].x"
+select json_search(@j, 'all', 'abc', NULL, '$');
+json_search(@j, 'all', 'abc', NULL, '$')
+["$[0]", "$[2].x"]
+select json_search(@j, 'all', '10', NULL, '$');
+json_search(@j, 'all', '10', NULL, '$')
+"$[1][0].k"
+select json_search(@j, 'all', '10', NULL, '$[*]');
+json_search(@j, 'all', '10', NULL, '$[*]')
+"$[1][0].k"
+select json_search(@j, 'all', '10', NULL, '$[*][0].k');
+json_search(@j, 'all', '10', NULL, '$[*][0].k')
+"$[1][0].k"
+select json_unquote('"abc"');
+json_unquote('"abc"')
+abc
+select json_object("a", json_object("b", "abcd"));
+json_object("a", json_object("b", "abcd"))
+{"a": {"b": "abcd"}}
+select json_object("a", '{"b": "abcd"}');
+json_object("a", '{"b": "abcd"}')
+{"a": "{\"b\": \"abcd\"}"}
+select json_object("a", cast('{"b": "abcd"}' as json));
+json_object("a", cast('{"b": "abcd"}' as json))
+{"a": {"b": "abcd"}}
diff --git a/mysql-test/r/innodb_mysql_lock.result b/mysql-test/r/innodb_mysql_lock.result
index a7f45d355f1..6d2eef2e62e 100644
--- a/mysql-test/r/innodb_mysql_lock.result
+++ b/mysql-test/r/innodb_mysql_lock.result
@@ -95,8 +95,6 @@ LOCK TABLES t1 READ;
SELECT release_lock('bug42147_lock');
release_lock('bug42147_lock')
1
-connection default;
-connection con2;
UNLOCK TABLES;
connection default;
disconnect con2;
diff --git a/mysql-test/r/lock_sync.result b/mysql-test/r/lock_sync.result
index f075262c3db..5eae1af7982 100644
--- a/mysql-test/r/lock_sync.result
+++ b/mysql-test/r/lock_sync.result
@@ -338,6 +338,7 @@ Success: 'load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a,
# 2.8 REPLACE with a subquery.
#
# Same is true for this statement as well.
+# Suppress warnings for REPLACE ... SELECT
connection default;
Success: 'replace into t2 select i+5 from t1' doesn't allow concurrent inserts into 't1'.
connection default;
@@ -704,87 +705,6 @@ disconnect con1;
disconnect con2;
set @@global.concurrent_insert= @old_concurrent_insert;
#
-# Test for bug #45143 "All connections hang on concurrent ALTER TABLE".
-#
-# Concurrent execution of statements which required weak write lock
-# (TL_WRITE_ALLOW_WRITE) on several instances of the same table and
-# statements which tried to acquire stronger write lock (TL_WRITE,
-# TL_WRITE_ALLOW_READ) on this table might have led to deadlock.
-drop table if exists t1;
-drop view if exists v1;
-# Create auxiliary connections used through the test.
-connect con_bug45143_1,localhost,root,,test,,;
-connect con_bug45143_3,localhost,root,,test,,;
-connect con_bug45143_2,localhost,root,,test,,;
-connection default;
-# Reset DEBUG_SYNC facility before using it.
-set debug_sync= 'RESET';
-# Turn off logging so calls to locking subsystem performed
-# for general_log table won't interfere with our test.
-set @old_general_log = @@global.general_log;
-set @@global.general_log= OFF;
-create table t1 (i int) engine=InnoDB;
-# We have to use view in order to make LOCK TABLES avoid
-# acquiring SNRW metadata lock on table.
-create view v1 as select * from t1;
-insert into t1 values (1);
-# Prepare user lock which will be used for resuming execution of
-# the first statement after it acquires TL_WRITE_ALLOW_WRITE lock.
-select get_lock("lock_bug45143_wait", 0);
-get_lock("lock_bug45143_wait", 0)
-1
-connection con_bug45143_1;
-# Sending:
-insert into t1 values (get_lock("lock_bug45143_wait", 100));;
-connection con_bug45143_2;
-# Wait until the above INSERT takes TL_WRITE_ALLOW_WRITE lock on 't1'
-# and then gets blocked on user lock 'lock_bug45143_wait'.
-# Ensure that upcoming SELECT waits after acquiring TL_WRITE_ALLOW_WRITE
-# lock for the first instance of 't1'.
-set debug_sync='thr_multi_lock_after_thr_lock SIGNAL parked WAIT_FOR go';
-# Sending:
-select count(*) > 0 from t1 as a, t1 as b for update;;
-connection con_bug45143_3;
-# Wait until the above SELECT ... FOR UPDATE is blocked after
-# acquiring lock for the the first instance of 't1'.
-set debug_sync= 'now WAIT_FOR parked';
-# Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1':
-lock table v1 write;;
-connection default;
-# Wait until this LOCK TABLES statement starts waiting for table lock.
-# Allow SELECT ... FOR UPDATE to resume.
-# Since it already has TL_WRITE_ALLOW_WRITE lock on the first instance
-# of 't1' it should be able to get lock on the second instance without
-# waiting, even although there is another thread which has such lock
-# on this table and also there is a thread waiting for a TL_WRITE on it.
-set debug_sync= 'now SIGNAL go';
-connection con_bug45143_2;
-# Reap SELECT ... FOR UPDATE
-count(*) > 0
-1
-connection default;
-# Resume execution of the INSERT statement.
-select release_lock("lock_bug45143_wait");
-release_lock("lock_bug45143_wait")
-1
-connection con_bug45143_1;
-# Reap INSERT statement.
-# In Statement and Mixed replication mode we get here "Unsafe
-# for binlog" warnings. In row mode there are no warnings.
-# Hide the discrepancy.
-connection con_bug45143_3;
-# Reap LOCK TABLES statement.
-unlock tables;
-connection default;
-# Do clean-up.
-disconnect con_bug45143_1;
-disconnect con_bug45143_2;
-disconnect con_bug45143_3;
-set debug_sync= 'RESET';
-set @@global.general_log= @old_general_log;
-drop view v1;
-drop table t1;
-#
# Bug#50821 Deadlock between LOCK TABLES and ALTER TABLE
#
DROP TABLE IF EXISTS t1, t2;
@@ -827,44 +747,6 @@ connection default;
DROP EVENT e2;
SET DEBUG_SYNC="RESET";
#
-# Bug#55930 Assertion `thd->transaction.stmt.is_empty() ||
-# thd->in_sub_stmt || (thd->state..
-#
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1(a INT) engine=InnoDB;
-INSERT INTO t1 VALUES (1), (2);
-connect con1, localhost, root;
-connect con2, localhost, root;
-connection con1;
-SET SESSION lock_wait_timeout= 1;
-SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL opti_recreate WAIT_FOR opti_analyze';
-# Sending:
-OPTIMIZE TABLE t1;
-connection con2;
-SET DEBUG_SYNC= 'now WAIT_FOR opti_recreate';
-SET DEBUG_SYNC= 'after_lock_tables_takes_lock SIGNAL thrlock WAIT_FOR release_thrlock';
-# Sending:
-INSERT INTO t1 VALUES (3);
-connection default;
-SET DEBUG_SYNC= 'now WAIT_FOR thrlock';
-SET DEBUG_SYNC= 'now SIGNAL opti_analyze';
-connection con1;
-# Reaping: OPTIMIZE TABLE t1
-Table Op Msg_type Msg_text
-test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
-test.t1 optimize error Lock wait timeout exceeded; try restarting transaction
-test.t1 optimize status Operation failed
-Warnings:
-Error 1205 Lock wait timeout exceeded; try restarting transaction
-SET DEBUG_SYNC= 'now SIGNAL release_thrlock';
-disconnect con1;
-connection con2;
-# Reaping: INSERT INTO t1 VALUES (3)
-disconnect con2;
-connection default;
-DROP TABLE t1;
-SET DEBUG_SYNC= 'RESET';
-#
# Bug#57130 crash in Item_field::print during SHOW CREATE TABLE or VIEW
#
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/r/lock_tables_lost_commit.result b/mysql-test/r/lock_tables_lost_commit.result
index 769e9734c7a..394ef0a9d1c 100644
--- a/mysql-test/r/lock_tables_lost_commit.result
+++ b/mysql-test/r/lock_tables_lost_commit.result
@@ -9,7 +9,6 @@ disconnect con1;
connection con2;
SELECT * FROM t1;
a
-10
DROP TABLE t1;
connection default;
disconnect con2;
diff --git a/mysql-test/r/mdl_sync.result b/mysql-test/r/mdl_sync.result
index 865e874f63e..1e285650c77 100644
--- a/mysql-test/r/mdl_sync.result
+++ b/mysql-test/r/mdl_sync.result
@@ -76,10 +76,6 @@ ERROR 42000: Key column 'not_exist' doesn't exist in table
# lock.
alter table t1 add primary key (c1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-# Check that SNRW lock is compatible with S lock.
-lock table t1 write;
-insert into t1 values (1);
-unlock tables;
# Check that X lock is incompatible with S lock.
# Sending:
rename table t1 to t2;;
@@ -117,29 +113,6 @@ connection mdl_con1;
alter table t1 drop column c2;
#
connection default;
-handler t1 open;
-#
-connection mdl_con1;
-# Check that upgrade from SNRW to X is blocked by presence of S lock.
-lock table t1 write;
-# Sending:
-alter table t1 add column c2 int;;
-#
-connection mdl_con2;
-# Check that the above upgrade of SNRW to X in ALTER TABLE is blocked
-# because of S lock.
-#
-connection default;
-# Unblock ALTER TABLE.
-handler t1 close;
-#
-connection mdl_con1;
-# Reaping ALTER TABLE.
-# Restore the original state of the things.
-alter table t1 drop column c2;
-unlock tables;
-#
-connection default;
#
# 2) Acquire SH (shared high-priority) lock on the table.
# We have to involve DEBUG_SYNC facility for this as usually
@@ -160,7 +133,7 @@ column_name
c1
select count(*) from t1;
count(*)
-3
+2
insert into t1 values (1);
# Check that SU lock is compatible with it. To do this use ALTER TABLE
# which will fail when constructing .frm and thus obtaining SU metadata
@@ -258,7 +231,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection mdl_con1;
# Check that S, SH, SR and SW locks are compatible with it.
@@ -270,7 +243,7 @@ column_name
c1
select count(*) from t1;
count(*)
-3
+2
insert into t1 values (1);
# Check that SU lock is compatible with it. To do this use ALTER TABLE
# which will fail when constructing .frm and thus obtaining SU metadata
@@ -300,7 +273,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection mdl_con1;
# Check that X lock is incompatible with SR lock.
@@ -323,7 +296,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection mdl_con1;
# Check that upgrade from SNW to X is blocked by presence of SR lock.
@@ -453,7 +426,7 @@ column_name
c1
select count(*) from t1;
count(*)
-5
+4
delete from t1 limit 1;
# Check that SU lock is incompatible with SU lock.
# Sending:
@@ -549,7 +522,7 @@ column_name
c1
select count(*) from t1;
count(*)
-5
+4
# Check that SW lock is incompatible with SNW lock.
# Sending:
delete from t1 limit 2;;
@@ -658,8 +631,6 @@ lock table t1 write;
#
connection mdl_con1;
# Check that S and SH locks are compatible with it.
-handler t1 open;
-handler t1 close;
select column_name from information_schema.columns where
table_schema='test' and table_name='t1';
column_name
@@ -676,7 +647,7 @@ unlock tables;
connection mdl_con1;
# Reaping SELECT.
count(*)
-4
+3
#
connection default;
lock table t1 write;
@@ -847,7 +818,7 @@ ERROR 42S01: Table 't2' already exists
connection mdl_con1;
# Reaping SELECT.
count(*)
-4
+3
#
connection mdl_con2;
# Prepare for blocking RENAME TABLE.
@@ -996,7 +967,7 @@ column_name
c1
select count(*) from t1;
count(*)
-4
+3
# Check that SW is incompatible with pending SNW
# Sending:
delete from t1 limit 1;;
@@ -1025,7 +996,7 @@ connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection default;
# Add pending SNRW lock.
@@ -1035,8 +1006,6 @@ lock table t1 write;;
connection mdl_con1;
# Check that LOCK TABLE is waiting with pending SNRW lock.
# Check that S and SH locks are compatible with pending SNRW
-handler t1 open t;
-handler t close;
select column_name from information_schema.columns where
table_schema='test' and table_name='t1';
column_name
@@ -1057,14 +1026,14 @@ unlock tables;
connection mdl_con1;
# Reaping SELECT.
count(*)
-3
+2
# Restore pending SNRW lock.
#
connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection default;
# Sending:
@@ -1093,7 +1062,7 @@ connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection default;
# Sending:
@@ -1126,7 +1095,7 @@ connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection default;
# Add pending X lock.
@@ -1162,7 +1131,7 @@ connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection default;
# Add pending X lock.
@@ -1187,14 +1156,14 @@ ERROR 42S01: Table 't2' already exists
connection mdl_con1;
# Reaping SELECT.
count(*)
-4
+3
# Restore pending X lock.
#
connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection default;
# Add pending X lock.
@@ -1224,7 +1193,7 @@ connection mdl_con2;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection default;
# Add pending X lock.
@@ -1299,7 +1268,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection mdl_con1;
# Create an active SNW lock on t2.
@@ -1321,7 +1290,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-3
+2
# Sending:
insert into t2 values (1);;
#
@@ -1347,7 +1316,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-3
+2
#
connection mdl_con1;
# Create an active SNW lock on t1.
@@ -1360,7 +1329,7 @@ set debug_sync= 'now WAIT_FOR locked';
# We should still be able to get SR lock without waiting.
select count(*) from t1;
count(*)
-3
+2
# Since the above ALTER TABLE is not upgrading SNW lock to X by waiting
# for SW lock we won't create deadlock.
# So the below INSERT should not end-up with ER_LOCK_DEADLOCK error.
@@ -1397,7 +1366,7 @@ connection default;
# We should still be able to get both SW and SR locks without waiting.
select count(*) from t1;
count(*)
-5
+4
delete from t1 limit 1;
# Unblock ALTER TABLE.
commit;
@@ -1416,7 +1385,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con2;
# Start transaction which will prevent SNW -> X upgrade from
@@ -1454,7 +1423,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con2;
# Start transaction which will prevent SNW -> X upgrade from
@@ -1493,7 +1462,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con1;
# Create SNW lock pending upgrade to X.
@@ -1505,7 +1474,7 @@ connection default;
# Check that transaction is still able to acquire SR lock.
select count(*) from t1;
count(*)
-4
+3
# Waiting trying to acquire SW lock will cause deadlock and
# therefore should cause an error.
delete from t1 limit 1;
@@ -1526,7 +1495,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con1;
lock table t2 write;
@@ -1551,7 +1520,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con1;
lock table t2 write;
@@ -1580,7 +1549,7 @@ commit;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con1;
# Sending:
@@ -1591,7 +1560,7 @@ connection default;
# Check that another instance of SR lock is granted without waiting.
select count(*) from t1;
count(*)
-4
+3
# Attempt to wait for SW lock will lead to deadlock, thus
# the below statement should end with ER_LOCK_DEADLOCK error.
delete from t1 limit 1;
@@ -1620,7 +1589,7 @@ connection default;
# and errors.
select count(*) from t1;
count(*)
-3
+2
insert into t1 values (1, 1);
# Unblock LOCK TABLES.
commit;
@@ -1639,7 +1608,7 @@ connection default;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con2;
# Start transaction which will prevent X lock from going away
@@ -1677,7 +1646,7 @@ rename table t3 to t2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con2;
# Start transaction which will prevent X lock from going away
@@ -1721,7 +1690,7 @@ rename table t3 to t2;
begin;
select count(*) from t1;
count(*)
-4
+3
#
connection mdl_con1;
# Sending:
@@ -1732,7 +1701,7 @@ connection default;
# Check that another instance of SR lock is granted without waiting.
select count(*) from t1;
count(*)
-4
+3
# Attempt to wait for SW lock will lead to deadlock, thus
# the below statement should end with ER_LOCK_DEADLOCK error.
delete from t1 limit 1;
@@ -1761,7 +1730,7 @@ connection default;
# and errors.
select count(*) from t1;
count(*)
-3
+2
insert into t1 values (1, 1);
# Unblock RENAME TABLE.
commit;
@@ -1778,149 +1747,6 @@ disconnect mdl_con3;
set debug_sync= 'RESET';
drop table t1, t2;
#
-# Additional coverage for some scenarios in which not quite
-# correct use of S metadata locks by HANDLER statement might
-# have caused deadlocks.
-#
-drop table if exists t1, t2;
-connect handler_con1,localhost,root,,;
-connect handler_con2,localhost,root,,;
-connection default;
-create table t1 (i int);
-create table t2 (j int);
-insert into t1 values (1);
-#
-# First, check scenario in which we upgrade SNRW lock to X lock
-# on a table while having HANDLER READ trying to acquire TL_READ
-# on the same table.
-#
-handler t1 open;
-#
-connection handler_con1;
-lock table t1 write;
-# Upgrade SNRW to X lock.
-# Sending:
-alter table t1 add column j int;;
-#
-connection handler_con2;
-# Wait until ALTER is blocked during upgrade.
-#
-connection default;
-# The below statement should not cause deadlock.
-handler t1 read first;;
-#
-connection handler_con1;
-# Reap ALTER TABLE.
-unlock tables;
-#
-connection default;
-# Reap HANDLER READ.
-i j
-1 NULL
-handler t1 close;
-#
-# Now, check scenario in which upgrade of SNRW lock to X lock
-# can be blocked by HANDLER which is open in connection currently
-# waiting to get table-lock owned by connection doing upgrade.
-#
-handler t1 open;
-#
-connection handler_con1;
-lock table t1 write, t2 read;
-#
-connection default;
-# Execute statement which will be blocked on table-level lock
-# owned by connection 'handler_con1'.
-# Sending:
-insert into t2 values (1);;
-#
-connection handler_con1;
-# Wait until INSERT is blocked on table-level lock.
-# Sending 'alter table t1 drop column j'. It should not cause
-# deadlock.
-alter table t1 drop column j;
-connection handler_con2;
-# Wait until ALTER is blocked during upgrade.
-#
-connection default;
-# Reap INSERT.
-ERROR HY000: Wait on a lock was aborted due to a pending exclusive lock
-handler t1 close;
-#
-connection handler_con1;
-# Reaping 'alter table t1 drop column j'
-unlock tables;
-connection default;
-# Then, check the scenario in which upgrade of SNRW lock to X
-# lock is blocked by HANDLER which is open in connection currently
-# waiting to get SW lock on the same table.
-#
-handler t1 open;
-#
-connection handler_con1;
-lock table t1 write;
-#
-connection default;
-# The below insert should be blocked because active SNRW lock on 't1'.
-# Sending:
-insert into t1 values (1);;
-#
-connection handler_con1;
-# Wait until INSERT is blocked because of SNRW lock.
-# The below ALTER TABLE will be blocked because of presence of HANDLER.
-# Sending:
-alter table t1 add column j int;;
-#
-connection default;
-# INSERT should be chosen as victim for resolving deadlock.
-# Reaping INSERT.
-ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-# Close HANDLER to unblock ALTER TABLE.
-handler t1 close;
-#
-connection handler_con1;
-# Reaping ALTER TABLE.
-unlock tables;
-#
-connection default;
-#
-# Finally, test in which upgrade of SNRW lock to X lock is blocked
-# by HANDLER which is open in connection currently waiting to get
-# SR lock on the table on which lock is upgraded.
-#
-handler t1 open;
-#
-connection handler_con1;
-lock table t1 write, t2 write;
-#
-connection default;
-# The below insert should be blocked because active SNRW lock on 't1'.
-# Sending:
-insert into t2 values (1);;
-#
-connection handler_con1;
-# Wait until INSERT is blocked because of SNRW lock.
-# The below ALTER TABLE will be blocked because of presence of HANDLER.
-# Sending:
-alter table t1 drop column j;;
-#
-connection default;
-# INSERT should be chosen as victim for resolving deadlock.
-# Reaping INSERT.
-ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-# Close HANDLER to unblock ALTER TABLE.
-handler t1 close;
-#
-connection handler_con1;
-# Reaping ALTER TABLE.
-unlock tables;
-#
-connection default;
-# Clean-up.
-disconnect handler_con1;
-disconnect handler_con2;
-drop tables t1, t2;
-#
# Test coverage for basic deadlock detection in metadata
# locking subsystem.
#
diff --git a/mysql-test/r/mysqlbinlog_row_compressed.result b/mysql-test/r/mysqlbinlog_row_compressed.result
new file mode 100644
index 00000000000..a612433fc2f
--- /dev/null
+++ b/mysql-test/r/mysqlbinlog_row_compressed.result
@@ -0,0 +1,453 @@
+SET GLOBAL log_bin_compress=on;
+SET GLOBAL log_bin_compress_min_len=10;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1));
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1));
+INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "");
+INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL);
+INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A");
+INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A");
+INSERT INTO t2 SELECT * FROM t1;
+UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL;
+DELETE FROM t1;
+DELETE FROM t2;
+FLUSH BINARY LOGS;
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+# at 4
+#<date> server id 1 end_log_pos 256 CRC32 XXX Start: xxx
+ROLLBACK/*!*/;
+# at 256
+#<date> server id 1 end_log_pos 285 CRC32 XXX Gtid list []
+# at 285
+#<date> server id 1 end_log_pos 329 CRC32 XXX Binlog checkpoint master-bin.000001
+# at 329
+#<date> server id 1 end_log_pos 371 CRC32 XXX GTID 0-1-1 ddl
+/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
+/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
+/*!100001 SET @@session.server_id=1*//*!*/;
+/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
+# at 371
+#<date> server id 1 end_log_pos 533 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+use `test`/*!*/;
+SET TIMESTAMP=X/*!*/;
+SET @@session.pseudo_thread_id=4/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1/*!*/;
+SET @@session.sql_mode=1342177280/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1))
+/*!*/;
+# at 533
+#<date> server id 1 end_log_pos 575 CRC32 XXX GTID 0-1-2 ddl
+/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
+# at 575
+#<date> server id 1 end_log_pos 727 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1))
+/*!*/;
+# at 727
+#<date> server id 1 end_log_pos 769 CRC32 XXX GTID 0-1-3
+/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
+BEGIN
+/*!*/;
+# at 769
+#<date> server id 1 end_log_pos 825 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 825
+#<date> server id 1 end_log_pos 893 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+### INSERT INTO `test`.`t1`
+### SET
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=4 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 893
+#<date> server id 1 end_log_pos 966 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 966
+#<date> server id 1 end_log_pos 1008 CRC32 XXX GTID 0-1-4
+/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
+BEGIN
+/*!*/;
+# at 1008
+#<date> server id 1 end_log_pos 1064 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1064
+#<date> server id 1 end_log_pos 1131 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+### INSERT INTO `test`.`t1`
+### SET
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=4 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+# at 1131
+#<date> server id 1 end_log_pos 1204 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1204
+#<date> server id 1 end_log_pos 1246 CRC32 XXX GTID 0-1-5
+/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
+BEGIN
+/*!*/;
+# at 1246
+#<date> server id 1 end_log_pos 1302 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1302
+#<date> server id 1 end_log_pos 1368 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+### INSERT INTO `test`.`t1`
+### SET
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=NULL /* MEDIUMINT meta=0 nullable=1 is_null=1 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 1368
+#<date> server id 1 end_log_pos 1441 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1441
+#<date> server id 1 end_log_pos 1483 CRC32 XXX GTID 0-1-6
+/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
+BEGIN
+/*!*/;
+# at 1483
+#<date> server id 1 end_log_pos 1539 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1539
+#<date> server id 1 end_log_pos 1606 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+### INSERT INTO `test`.`t1`
+### SET
+### @1=13 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=0 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 1606
+#<date> server id 1 end_log_pos 1679 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1679
+#<date> server id 1 end_log_pos 1721 CRC32 XXX GTID 0-1-7
+/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
+BEGIN
+/*!*/;
+# at 1721
+#<date> server id 1 end_log_pos 1777 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 1777
+#<date> server id 1 end_log_pos 1868 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
+### INSERT INTO `test`.`t2`
+### SET
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=4 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### INSERT INTO `test`.`t2`
+### SET
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=4 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+### INSERT INTO `test`.`t2`
+### SET
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=NULL /* INT meta=0 nullable=1 is_null=1 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### INSERT INTO `test`.`t2`
+### SET
+### @1=13 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=0 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 1868
+#<date> server id 1 end_log_pos 1941 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1941
+#<date> server id 1 end_log_pos 1983 CRC32 XXX GTID 0-1-8
+/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
+BEGIN
+/*!*/;
+# at 1983
+#<date> server id 1 end_log_pos 2039 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 2039
+#<date> server id 1 end_log_pos 2138 CRC32 XXX Update_compressed_rows: table id 31 flags: STMT_END_F
+### UPDATE `test`.`t2`
+### WHERE
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=4 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### SET
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### UPDATE `test`.`t2`
+### WHERE
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=4 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+### SET
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+### UPDATE `test`.`t2`
+### WHERE
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=NULL /* INT meta=0 nullable=1 is_null=1 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### SET
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 2138
+#<date> server id 1 end_log_pos 2211 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2211
+#<date> server id 1 end_log_pos 2253 CRC32 XXX GTID 0-1-9
+/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
+BEGIN
+/*!*/;
+# at 2253
+#<date> server id 1 end_log_pos 2309 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 2309
+#<date> server id 1 end_log_pos 2401 CRC32 XXX Delete_compressed_rows: table id 30 flags: STMT_END_F
+### DELETE FROM `test`.`t1`
+### WHERE
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=4 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### DELETE FROM `test`.`t1`
+### WHERE
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=4 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+### DELETE FROM `test`.`t1`
+### WHERE
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=NULL /* MEDIUMINT meta=0 nullable=1 is_null=1 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### DELETE FROM `test`.`t1`
+### WHERE
+### @1=13 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* TINYINT meta=0 nullable=1 is_null=0 */
+### @5=0 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @6=5 /* LONGINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 2401
+#<date> server id 1 end_log_pos 2474 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2474
+#<date> server id 1 end_log_pos 2516 CRC32 XXX GTID 0-1-10
+/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
+BEGIN
+/*!*/;
+# at 2516
+#<date> server id 1 end_log_pos 2572 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 2572
+#<date> server id 1 end_log_pos 2657 CRC32 XXX Delete_compressed_rows: table id 31 flags: STMT_END_F
+### DELETE FROM `test`.`t2`
+### WHERE
+### @1=10 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### DELETE FROM `test`.`t2`
+### WHERE
+### @1=11 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
+### DELETE FROM `test`.`t2`
+### WHERE
+### @1=12 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=5 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+### DELETE FROM `test`.`t2`
+### WHERE
+### @1=13 /* INT meta=0 nullable=0 is_null=0 */
+### @2=1 /* INT meta=0 nullable=1 is_null=0 */
+### @3=2 /* INT meta=0 nullable=1 is_null=0 */
+### @4=3 /* INT meta=0 nullable=1 is_null=0 */
+### @5=0 /* INT meta=0 nullable=1 is_null=0 */
+### @6=5 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
+### @7=6 /* INT meta=0 nullable=1 is_null=0 */
+### @8=7 /* INT meta=0 nullable=1 is_null=0 */
+### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
+# at 2657
+#<date> server id 1 end_log_pos 2730 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2730
+#<date> server id 1 end_log_pos 2778 CRC32 XXX Rotate to master-bin.000002 pos: 4
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
+
+Test mysqlbinlog | mysql type point-in-time recovery with compressed events.
+
+FLUSH BINARY LOGS;
+CREATE TABLE t3 (a INT PRIMARY KEY, b INT, c VARCHAR(100));
+INSERT INTO t3 VALUES (0, 10, "hello");
+BEGIN;
+INSERT INTO t3 VALUES (1, 10, "cat"), (2, 10, "mouse"), (3, 10, "dog");
+INSERT INTO t3 VALUES (4, 10, "goodbye");
+COMMIT;
+UPDATE t3 SET b=b+100 where a<>1;
+DELETE FROM t3 WHERE a=2;
+SET @old_image=@@binlog_row_image;
+SET binlog_row_image=minimal;
+INSERT INTO t3 VALUES (5, 20, "red"), (6, 30, "green"), (7, 40, "blue");
+INSERT INTO t3 VALUES (8, 20, "rigel");
+UPDATE t3 SET c = concat("colour of ", c) WHERE a > 5;
+UPDATE t3 SET b=b*2 WHERE a IN (5,6,7);
+DELETE FROM t3 WHERE a=6;
+SET binlog_row_image=@old_image;
+SELECT * FROM t3 ORDER BY a;
+a b c
+0 110 hello
+1 10 cat
+3 110 dog
+4 110 goodbye
+5 40 red
+7 80 colour of blue
+8 20 colour of rigel
+FLUSH LOGS;
+DROP TABLE t3;
+SELECT * FROM t3 ORDER BY a;
+a b c
+0 110 hello
+1 10 cat
+3 110 dog
+4 110 goodbye
+5 40 red
+7 80 colour of blue
+8 20 colour of rigel
+DROP TABLE t1,t2,t3;
+SET GLOBAL log_bin_compress=off;
+SET GLOBAL log_bin_compress_min_len=256;
diff --git a/mysql-test/r/mysqlbinlog_row_minimal.result b/mysql-test/r/mysqlbinlog_row_minimal.result
index 2737d61eca4..2fb721d4103 100644
--- a/mysql-test/r/mysqlbinlog_row_minimal.result
+++ b/mysql-test/r/mysqlbinlog_row_minimal.result
@@ -14,20 +14,20 @@ FLUSH BINARY LOGS;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
-#<date> server id 1 end_log_pos 249 CRC32 XXX Start: xxx
+#<date> server id 1 end_log_pos 256 CRC32 XXX Start: xxx
ROLLBACK/*!*/;
-# at 249
-#<date> server id 1 end_log_pos 278 CRC32 XXX Gtid list []
-# at 278
-#<date> server id 1 end_log_pos 322 CRC32 XXX Binlog checkpoint master-bin.000001
-# at 322
-#<date> server id 1 end_log_pos 364 CRC32 XXX GTID 0-1-1 ddl
+# at 256
+#<date> server id 1 end_log_pos 285 CRC32 XXX Gtid list []
+# at 285
+#<date> server id 1 end_log_pos 329 CRC32 XXX Binlog checkpoint master-bin.000001
+# at 329
+#<date> server id 1 end_log_pos 371 CRC32 XXX GTID 0-1-1 ddl
/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
/*!100001 SET @@session.server_id=1*//*!*/;
/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
-# at 364
-#<date> server id 1 end_log_pos 548 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 371
+#<date> server id 1 end_log_pos 555 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
use `test`/*!*/;
SET TIMESTAMP=X/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
@@ -40,23 +40,23 @@ SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1))
/*!*/;
-# at 548
-#<date> server id 1 end_log_pos 590 CRC32 XXX GTID 0-1-2 ddl
+# at 555
+#<date> server id 1 end_log_pos 597 CRC32 XXX GTID 0-1-2 ddl
/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
-# at 590
-#<date> server id 1 end_log_pos 767 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 597
+#<date> server id 1 end_log_pos 774 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1))
/*!*/;
-# at 767
-#<date> server id 1 end_log_pos 809 CRC32 XXX GTID 0-1-3
+# at 774
+#<date> server id 1 end_log_pos 816 CRC32 XXX GTID 0-1-3
/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
BEGIN
/*!*/;
-# at 809
-#<date> server id 1 end_log_pos 865 CRC32 XXX Table_map: `test`.`t1` mapped to number num
-# at 865
-#<date> server id 1 end_log_pos 934 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+# at 816
+#<date> server id 1 end_log_pos 872 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 872
+#<date> server id 1 end_log_pos 941 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -68,20 +68,20 @@ BEGIN
### @7=6 /* INT meta=0 nullable=1 is_null=0 */
### @8=7 /* INT meta=0 nullable=1 is_null=0 */
### @9='' /* STRING(1) meta=65025 nullable=1 is_null=0 */
-# at 934
-#<date> server id 1 end_log_pos 1007 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 941
+#<date> server id 1 end_log_pos 1014 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 1007
-#<date> server id 1 end_log_pos 1049 CRC32 XXX GTID 0-1-4
+# at 1014
+#<date> server id 1 end_log_pos 1056 CRC32 XXX GTID 0-1-4
/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
BEGIN
/*!*/;
-# at 1049
-#<date> server id 1 end_log_pos 1105 CRC32 XXX Table_map: `test`.`t1` mapped to number num
-# at 1105
-#<date> server id 1 end_log_pos 1173 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+# at 1056
+#<date> server id 1 end_log_pos 1112 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1112
+#<date> server id 1 end_log_pos 1180 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=11 /* INT meta=0 nullable=0 is_null=0 */
@@ -93,20 +93,20 @@ BEGIN
### @7=6 /* INT meta=0 nullable=1 is_null=0 */
### @8=7 /* INT meta=0 nullable=1 is_null=0 */
### @9=NULL /* STRING(1) meta=65025 nullable=1 is_null=1 */
-# at 1173
-#<date> server id 1 end_log_pos 1246 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 1180
+#<date> server id 1 end_log_pos 1253 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 1246
-#<date> server id 1 end_log_pos 1288 CRC32 XXX GTID 0-1-5
+# at 1253
+#<date> server id 1 end_log_pos 1295 CRC32 XXX GTID 0-1-5
/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
BEGIN
/*!*/;
-# at 1288
-#<date> server id 1 end_log_pos 1344 CRC32 XXX Table_map: `test`.`t1` mapped to number num
-# at 1344
-#<date> server id 1 end_log_pos 1411 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+# at 1295
+#<date> server id 1 end_log_pos 1351 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1351
+#<date> server id 1 end_log_pos 1418 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=12 /* INT meta=0 nullable=0 is_null=0 */
@@ -118,20 +118,20 @@ BEGIN
### @7=6 /* INT meta=0 nullable=1 is_null=0 */
### @8=7 /* INT meta=0 nullable=1 is_null=0 */
### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
-# at 1411
-#<date> server id 1 end_log_pos 1484 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 1418
+#<date> server id 1 end_log_pos 1491 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 1484
-#<date> server id 1 end_log_pos 1526 CRC32 XXX GTID 0-1-6
+# at 1491
+#<date> server id 1 end_log_pos 1533 CRC32 XXX GTID 0-1-6
/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
BEGIN
/*!*/;
-# at 1526
-#<date> server id 1 end_log_pos 1582 CRC32 XXX Table_map: `test`.`t1` mapped to number num
-# at 1582
-#<date> server id 1 end_log_pos 1652 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+# at 1533
+#<date> server id 1 end_log_pos 1589 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 1589
+#<date> server id 1 end_log_pos 1659 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
@@ -143,20 +143,20 @@ BEGIN
### @7=6 /* INT meta=0 nullable=1 is_null=0 */
### @8=7 /* INT meta=0 nullable=1 is_null=0 */
### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
-# at 1652
-#<date> server id 1 end_log_pos 1725 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 1659
+#<date> server id 1 end_log_pos 1732 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 1725
-#<date> server id 1 end_log_pos 1767 CRC32 XXX GTID 0-1-7
+# at 1732
+#<date> server id 1 end_log_pos 1774 CRC32 XXX GTID 0-1-7
/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
BEGIN
/*!*/;
-# at 1767
-#<date> server id 1 end_log_pos 1823 CRC32 XXX Table_map: `test`.`t2` mapped to number num
-# at 1823
-#<date> server id 1 end_log_pos 1990 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
+# at 1774
+#<date> server id 1 end_log_pos 1830 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 1830
+#<date> server id 1 end_log_pos 1997 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t2`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -201,20 +201,20 @@ BEGIN
### @7=6 /* INT meta=0 nullable=1 is_null=0 */
### @8=7 /* INT meta=0 nullable=1 is_null=0 */
### @9='A' /* STRING(1) meta=65025 nullable=1 is_null=0 */
-# at 1990
-#<date> server id 1 end_log_pos 2063 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 1997
+#<date> server id 1 end_log_pos 2070 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 2063
-#<date> server id 1 end_log_pos 2105 CRC32 XXX GTID 0-1-8
+# at 2070
+#<date> server id 1 end_log_pos 2112 CRC32 XXX GTID 0-1-8
/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
BEGIN
/*!*/;
-# at 2105
-#<date> server id 1 end_log_pos 2161 CRC32 XXX Table_map: `test`.`t2` mapped to number num
-# at 2161
-#<date> server id 1 end_log_pos 2235 CRC32 XXX Update_rows: table id 31 flags: STMT_END_F
+# at 2112
+#<date> server id 1 end_log_pos 2168 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 2168
+#<date> server id 1 end_log_pos 2242 CRC32 XXX Update_rows: table id 31 flags: STMT_END_F
### UPDATE `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -233,20 +233,20 @@ BEGIN
### @5=NULL /* INT meta=0 nullable=1 is_null=1 */
### SET
### @5=5 /* INT meta=0 nullable=1 is_null=0 */
-# at 2235
-#<date> server id 1 end_log_pos 2308 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 2242
+#<date> server id 1 end_log_pos 2315 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 2308
-#<date> server id 1 end_log_pos 2350 CRC32 XXX GTID 0-1-9
+# at 2315
+#<date> server id 1 end_log_pos 2357 CRC32 XXX GTID 0-1-9
/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
BEGIN
/*!*/;
-# at 2350
-#<date> server id 1 end_log_pos 2406 CRC32 XXX Table_map: `test`.`t1` mapped to number num
-# at 2406
-#<date> server id 1 end_log_pos 2460 CRC32 XXX Delete_rows: table id 30 flags: STMT_END_F
+# at 2357
+#<date> server id 1 end_log_pos 2413 CRC32 XXX Table_map: `test`.`t1` mapped to number num
+# at 2413
+#<date> server id 1 end_log_pos 2467 CRC32 XXX Delete_rows: table id 30 flags: STMT_END_F
### DELETE FROM `test`.`t1`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -259,20 +259,20 @@ BEGIN
### DELETE FROM `test`.`t1`
### WHERE
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
-# at 2460
-#<date> server id 1 end_log_pos 2533 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 2467
+#<date> server id 1 end_log_pos 2540 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 2533
-#<date> server id 1 end_log_pos 2575 CRC32 XXX GTID 0-1-10
+# at 2540
+#<date> server id 1 end_log_pos 2582 CRC32 XXX GTID 0-1-10
/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
BEGIN
/*!*/;
-# at 2575
-#<date> server id 1 end_log_pos 2631 CRC32 XXX Table_map: `test`.`t2` mapped to number num
-# at 2631
-#<date> server id 1 end_log_pos 2685 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
+# at 2582
+#<date> server id 1 end_log_pos 2638 CRC32 XXX Table_map: `test`.`t2` mapped to number num
+# at 2638
+#<date> server id 1 end_log_pos 2692 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
### DELETE FROM `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -285,13 +285,13 @@ BEGIN
### DELETE FROM `test`.`t2`
### WHERE
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
-# at 2685
-#<date> server id 1 end_log_pos 2758 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+# at 2692
+#<date> server id 1 end_log_pos 2765 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
SET TIMESTAMP=X/*!*/;
COMMIT
/*!*/;
-# at 2758
-#<date> server id 1 end_log_pos 2806 CRC32 XXX Rotate to master-bin.000002 pos: 4
+# at 2765
+#<date> server id 1 end_log_pos 2813 CRC32 XXX Rotate to master-bin.000002 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
diff --git a/mysql-test/r/mysqlbinlog_stmt_compressed.result b/mysql-test/r/mysqlbinlog_stmt_compressed.result
new file mode 100644
index 00000000000..99f9c7e9914
--- /dev/null
+++ b/mysql-test/r/mysqlbinlog_stmt_compressed.result
@@ -0,0 +1,207 @@
+SET GLOBAL log_bin_compress=on;
+SET GLOBAL log_bin_compress_min_len=10;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1));
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1));
+INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "");
+INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL);
+INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A");
+INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A");
+INSERT INTO t2 SELECT * FROM t1;
+UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL;
+DELETE FROM t1;
+DELETE FROM t2;
+FLUSH BINARY LOGS;
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+# at 4
+#<date> server id 1 end_log_pos 256 CRC32 XXX Start: xxx
+ROLLBACK/*!*/;
+# at 256
+#<date> server id 1 end_log_pos 285 CRC32 XXX Gtid list []
+# at 285
+#<date> server id 1 end_log_pos 329 CRC32 XXX Binlog checkpoint master-bin.000001
+# at 329
+#<date> server id 1 end_log_pos 371 CRC32 XXX GTID 0-1-1 ddl
+/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
+/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
+/*!100001 SET @@session.server_id=1*//*!*/;
+/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
+# at 371
+#<date> server id 1 end_log_pos 533 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+use `test`/*!*/;
+SET TIMESTAMP=X/*!*/;
+SET @@session.pseudo_thread_id=4/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1/*!*/;
+SET @@session.sql_mode=1342177280/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1))
+/*!*/;
+# at 533
+#<date> server id 1 end_log_pos 575 CRC32 XXX GTID 0-1-2 ddl
+/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
+# at 575
+#<date> server id 1 end_log_pos 727 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1))
+/*!*/;
+# at 727
+#<date> server id 1 end_log_pos 769 CRC32 XXX GTID 0-1-3
+/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
+BEGIN
+/*!*/;
+# at 769
+#<date> server id 1 end_log_pos 897 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
+/*!*/;
+# at 897
+#<date> server id 1 end_log_pos 970 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 970
+#<date> server id 1 end_log_pos 1012 CRC32 XXX GTID 0-1-4
+/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
+BEGIN
+/*!*/;
+# at 1012
+#<date> server id 1 end_log_pos 1140 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
+/*!*/;
+# at 1140
+#<date> server id 1 end_log_pos 1213 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1213
+#<date> server id 1 end_log_pos 1255 CRC32 XXX GTID 0-1-5
+/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
+BEGIN
+/*!*/;
+# at 1255
+#<date> server id 1 end_log_pos 1385 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
+/*!*/;
+# at 1385
+#<date> server id 1 end_log_pos 1458 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1458
+#<date> server id 1 end_log_pos 1500 CRC32 XXX GTID 0-1-6
+/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
+BEGIN
+/*!*/;
+# at 1500
+#<date> server id 1 end_log_pos 1627 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
+/*!*/;
+# at 1627
+#<date> server id 1 end_log_pos 1700 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1700
+#<date> server id 1 end_log_pos 1742 CRC32 XXX GTID 0-1-7
+/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
+BEGIN
+/*!*/;
+# at 1742
+#<date> server id 1 end_log_pos 1850 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+INSERT INTO t2 SELECT * FROM t1
+/*!*/;
+# at 1850
+#<date> server id 1 end_log_pos 1923 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 1923
+#<date> server id 1 end_log_pos 1965 CRC32 XXX GTID 0-1-8
+/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
+BEGIN
+/*!*/;
+# at 1965
+#<date> server id 1 end_log_pos 2082 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
+/*!*/;
+# at 2082
+#<date> server id 1 end_log_pos 2155 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2155
+#<date> server id 1 end_log_pos 2197 CRC32 XXX GTID 0-1-9
+/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
+BEGIN
+/*!*/;
+# at 2197
+#<date> server id 1 end_log_pos 2288 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+DELETE FROM t1
+/*!*/;
+# at 2288
+#<date> server id 1 end_log_pos 2361 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2361
+#<date> server id 1 end_log_pos 2403 CRC32 XXX GTID 0-1-10
+/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
+BEGIN
+/*!*/;
+# at 2403
+#<date> server id 1 end_log_pos 2494 CRC32 XXX Query_compressed thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+DELETE FROM t2
+/*!*/;
+# at 2494
+#<date> server id 1 end_log_pos 2567 CRC32 XXX Query thread_id=4 exec_time=x error_code=0
+SET TIMESTAMP=X/*!*/;
+COMMIT
+/*!*/;
+# at 2567
+#<date> server id 1 end_log_pos 2615 CRC32 XXX Rotate to master-bin.000002 pos: 4
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
+
+Test mysqlbinlog | mysql type point-in-time recovery with compressed events.
+
+FLUSH BINARY LOGS;
+CREATE TABLE t3 (a INT PRIMARY KEY, b INT, c VARCHAR(100));
+INSERT INTO t3 VALUES (0, 10, "hello");
+BEGIN;
+INSERT INTO t3 VALUES (1, 10, "cat"), (2, 10, "mouse"), (3, 10, "dog");
+INSERT INTO t3 VALUES (4, 10, "goodbye");
+COMMIT;
+DELETE FROM t3 WHERE a=2;
+SELECT * FROM t3 ORDER BY a;
+a b c
+0 10 hello
+1 10 cat
+3 10 dog
+4 10 goodbye
+FLUSH LOGS;
+DROP TABLE t3;
+SELECT * FROM t3 ORDER BY a;
+a b c
+0 10 hello
+1 10 cat
+3 10 dog
+4 10 goodbye
+DROP TABLE t1,t2,t3;
+SET GLOBAL log_bin_compress=off;
+SET GLOBAL log_bin_compress_min_len=256;
diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result
index 32d38cd41ef..203921ce08f 100644
--- a/mysql-test/r/mysqld--help.result
+++ b/mysql-test/r/mysqld--help.result
@@ -344,6 +344,10 @@ The following options may be given as the first argument:
We strongly recommend to use either --log-basename or
specify a filename to ensure that replication doesn't
stop if the real hostname of the computer changes.
+ --log-bin-compress Whether the binary log can be compressed
+ --log-bin-compress-min-len[=#]
+ Minimum length of sql statement(in statement mode) or
+ record(in row mode)that can be compressed.
--log-bin-index=name
File that holds the names for last binary log files.
--log-bin-trust-function-creators
@@ -1267,6 +1271,8 @@ lc-time-names en_US
local-infile TRUE
lock-wait-timeout 31536000
log-bin (No default value)
+log-bin-compress FALSE
+log-bin-compress-min-len 256
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-error
diff --git a/mysql-test/r/partition_debug_sync.result b/mysql-test/r/partition_debug_sync.result
index 971bc63e2e7..b79385686b7 100644
--- a/mysql-test/r/partition_debug_sync.result
+++ b/mysql-test/r/partition_debug_sync.result
@@ -64,29 +64,3 @@ disconnect con1;
connection default;
SET DEBUG_SYNC= 'RESET';
End of 5.1 tests
-#
-# Coverage test for non pruned ha_partition::store_lock()
-#
-CREATE TABLE t1 (a int) ENGINE = InnoDB;
-CREATE TABLE t2 (a int PRIMARY KEY)
-ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 3;
-HANDLER t1 OPEN;
-connect con1, localhost, root,,;
-LOCK TABLES t1 WRITE, t2 READ;
-connection default;
-SET DEBUG_SYNC="wait_for_lock SIGNAL locking";
-INSERT INTO t2 VALUES (1), (2), (3);
-connection con1;
-SET DEBUG_SYNC="now WAIT_FOR locking";
-ALTER TABLE t1 ADD COLUMN b int;
-connection default;
-ERROR HY000: Wait on a lock was aborted due to a pending exclusive lock
-SELECT 1;
-1
-1
-connection con1;
-UNLOCK TABLES;
-disconnect con1;
-connection default;
-SET DEBUG_SYNC = 'RESET';
-DROP TABLE t1, t2;
diff --git a/mysql-test/r/partition_explicit_prune.result b/mysql-test/r/partition_explicit_prune.result
index 0cf9bde225c..1272ff8c5fc 100644
--- a/mysql-test/r/partition_explicit_prune.result
+++ b/mysql-test/r/partition_explicit_prune.result
@@ -281,7 +281,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 2
+HANDLER_COMMIT 3
HANDLER_READ_RND_NEXT 54
HANDLER_TMP_WRITE 75
HANDLER_WRITE 2
@@ -440,7 +440,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 5
+HANDLER_COMMIT 6
HANDLER_READ_FIRST 3
HANDLER_READ_NEXT 4
HANDLER_READ_RND_NEXT 108
@@ -665,7 +665,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 5
+HANDLER_COMMIT 6
HANDLER_DELETE 2
HANDLER_READ_FIRST 1
HANDLER_READ_KEY 3
@@ -758,7 +758,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 2
+HANDLER_COMMIT 3
HANDLER_READ_RND_NEXT 54
HANDLER_TMP_WRITE 75
HANDLER_WRITE 10
@@ -953,7 +953,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 3
+HANDLER_COMMIT 4
HANDLER_DELETE 1
HANDLER_READ_KEY 2
HANDLER_READ_RND 2
@@ -1039,7 +1039,7 @@ UNLOCK TABLES;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
VARIABLE_NAME VARIABLE_VALUE
-HANDLER_COMMIT 3
+HANDLER_COMMIT 4
HANDLER_DELETE 2
HANDLER_READ_KEY 3
HANDLER_READ_NEXT 1
diff --git a/mysql-test/r/truncate_coverage.result b/mysql-test/r/truncate_coverage.result
index 95e649912e5..078de1ef3ab 100644
--- a/mysql-test/r/truncate_coverage.result
+++ b/mysql-test/r/truncate_coverage.result
@@ -6,48 +6,6 @@ DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES (1);
connect con1, localhost, root,,;
-HANDLER t1 OPEN;
-connection default;
-LOCK TABLE t1 WRITE;
-SET DEBUG_SYNC='mdl_upgrade_lock SIGNAL waiting';
-TRUNCATE TABLE t1;
-connect con2, localhost, root,,;
-SET DEBUG_SYNC='now WAIT_FOR waiting';
-KILL QUERY @id;
-disconnect con2;
-connection default;
-ERROR 70100: Query execution was interrupted
-UNLOCK TABLES;
-connection con1;
-# Release shared metadata lock by closing HANDLER.
-HANDLER t1 CLOSE;
-disconnect con1;
-connection default;
-DROP TABLE t1;
-SET DEBUG_SYNC='RESET';
-CREATE TABLE t1 (c1 INT);
-INSERT INTO t1 VALUES (1);
-connect con1, localhost, root,,;
-HANDLER t1 OPEN;
-connection default;
-LOCK TABLE t1 WRITE;
-SET DEBUG_SYNC='mdl_upgrade_lock SIGNAL waiting';
-TRUNCATE TABLE t1;
-connect con2, localhost, root,,;
-SET DEBUG_SYNC='now WAIT_FOR waiting';
-disconnect con2;
-connection con1;
-HANDLER t1 CLOSE;
-disconnect con1;
-connection default;
-ERROR 42S02: Table 'test.t1' doesn't exist
-UNLOCK TABLES;
-DROP TABLE t1;
-ERROR 42S02: Unknown table 'test.t1'
-SET DEBUG_SYNC='RESET';
-CREATE TABLE t1 (c1 INT);
-INSERT INTO t1 VALUES (1);
-connect con1, localhost, root,,;
START TRANSACTION;
INSERT INTO t1 VALUES (2);
connection default;
diff --git a/mysql-test/std_data/ldml/Index.xml b/mysql-test/std_data/ldml/Index.xml
index 55e754c7009..0435b2ab689 100644
--- a/mysql-test/std_data/ldml/Index.xml
+++ b/mysql-test/std_data/ldml/Index.xml
@@ -1167,6 +1167,45 @@
</rules>
</collation>
+ <collation name="utf8_czech_test_w2" id="370" version="5.2.0">
+ <settings strength="2"/>
+ <rules>
+ <reset>C</reset><p>\u010D</p><t>\u010C</t>
+ <reset>H</reset><p>ch</p><t>Ch</t><t>CH</t>
+ <reset>R</reset><p>\u0159</p><t>\u0158</t>
+ <reset>S</reset><p>\u0161</p><t>\u0160</t>
+ <reset>Z</reset><p>\u017E</p><t>\u017D</t>
+ </rules>
+ </collation>
+
+ <collation name="utf8_czech_test_nopad_w2" id="371" version="5.2.0" flag="nopad">
+ <settings strength="2"/>
+ <rules>
+ <reset>C</reset><p>\u010D</p><t>\u010C</t>
+ <reset>H</reset><p>ch</p><t>Ch</t><t>CH</t>
+ <reset>R</reset><p>\u0159</p><t>\u0158</t>
+ <reset>S</reset><p>\u0161</p><t>\u0160</t>
+ <reset>Z</reset><p>\u017E</p><t>\u017D</t>
+ </rules>
+ </collation>
+
+ <!--
+ This collation definition is bad.
+ It uses Unicode-4.0.0 (the default version), and requests strength="2".
+ Unicode-4.0.0 does not have information about the secondary weight level.
+ The version="5.2.0" collation attribute was forgotten in this definition.
+ -->
+ <collation name="utf8_czech_test_bad_w2" id="372">
+ <settings strength="2"/>
+ <rules>
+ <reset>C</reset><p>\u010D</p><t>\u010C</t>
+ <reset>H</reset><p>ch</p><t>Ch</t><t>CH</t>
+ <reset>R</reset><p>\u0159</p><t>\u0158</t>
+ <reset>S</reset><p>\u0161</p><t>\u0160</t>
+ <reset>Z</reset><p>\u017E</p><t>\u017D</t>
+ </rules>
+ </collation>
+
</charset>
</charsets>
diff --git a/mysql-test/suite/binlog/r/binlog_variables_log_bin.result b/mysql-test/suite/binlog/r/binlog_variables_log_bin.result
index 215e14f97df..d05a28847b4 100644
--- a/mysql-test/suite/binlog/r/binlog_variables_log_bin.result
+++ b/mysql-test/suite/binlog/r/binlog_variables_log_bin.result
@@ -3,6 +3,10 @@ Variable_name log_bin
Value ON
Variable_name log_bin_basename
Value MYSQLTEST_VARDIR/mysqld.1/data/other
+Variable_name log_bin_compress
+Value OFF
+Variable_name log_bin_compress_min_len
+Value 256
Variable_name log_bin_index
Value MYSQLTEST_VARDIR/mysqld.1/data/mysqld-bin.index
Variable_name log_bin_trust_function_creators
diff --git a/mysql-test/suite/binlog/r/binlog_variables_log_bin_index.result b/mysql-test/suite/binlog/r/binlog_variables_log_bin_index.result
index fb7324ced34..09f2feae9c2 100644
--- a/mysql-test/suite/binlog/r/binlog_variables_log_bin_index.result
+++ b/mysql-test/suite/binlog/r/binlog_variables_log_bin_index.result
@@ -3,6 +3,10 @@ Variable_name log_bin
Value ON
Variable_name log_bin_basename
Value MYSQLTEST_VARDIR/mysqld.1/data/other
+Variable_name log_bin_compress
+Value OFF
+Variable_name log_bin_compress_min_len
+Value 256
Variable_name log_bin_index
Value MYSQLTEST_VARDIR/tmp/something.index
Variable_name log_bin_trust_function_creators
diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def
index 5f8d9c6ddff..934ac121e6c 100644
--- a/mysql-test/suite/galera/disabled.def
+++ b/mysql-test/suite/galera/disabled.def
@@ -30,3 +30,9 @@ galera_gcs_fragment : Incorrect arguments to SET
galera_flush_local : Fails sporadically
galera_binlog_stmt_autoinc : TODO: investigate
galera_concurrent_ctas : Test times out, investigate
+galera_var_innodb_disallow_writes : MDEV-11035
+MW-286 : TODO: investigate
+galera_sst_xtrabackup-v2-options : TODO: Fix test case
+galera_sst_xtrabackup-v2 : MDEV-11208
+galera_sst_xtrabackup-v2_encrypt_with_key : MDEV-11208
+mysql-wsrep#33 : TODO: investigate
diff --git a/mysql-test/suite/galera/include/auto_increment_offset_restore.inc b/mysql-test/suite/galera/include/auto_increment_offset_restore.inc
index 6218dfd6f2c..1248ed100ca 100644
--- a/mysql-test/suite/galera/include/auto_increment_offset_restore.inc
+++ b/mysql-test/suite/galera/include/auto_increment_offset_restore.inc
@@ -32,4 +32,10 @@ if ($node_3)
--connection $node_3
--eval SET @@global.auto_increment_offset = $auto_increment_offset_node_3;
}
+
+if ($node_4)
+{
+--connection $node_4
+--eval SET @@global.auto_increment_offset = $auto_increment_offset_node_4;
+}
--enable_query_log
diff --git a/mysql-test/suite/galera/include/auto_increment_offset_save.inc b/mysql-test/suite/galera/include/auto_increment_offset_save.inc
index 3c4db3f381c..216c689ec8c 100644
--- a/mysql-test/suite/galera/include/auto_increment_offset_save.inc
+++ b/mysql-test/suite/galera/include/auto_increment_offset_save.inc
@@ -13,6 +13,8 @@
# Connection handle for 2nd node
# $node_3 (optional)
# Connection handle for 3rd node
+# $node_4 (optional)
+# Connection handle for 4th node
if (!$node_1)
{
@@ -35,3 +37,9 @@ if ($node_3)
let $auto_increment_offset_node_3 = `SELECT @@global.auto_increment_offset`;
}
+if ($node_4)
+{
+ --connection $node_4
+ let $auto_increment_offset_node_4 = `SELECT @@global.auto_increment_offset`;
+}
+
diff --git a/mysql-test/suite/galera/r/GAL-382.result b/mysql-test/suite/galera/r/GAL-382.result
index 0c7365f3005..fb7c229bd56 100644
--- a/mysql-test/suite/galera/r/GAL-382.result
+++ b/mysql-test/suite/galera/r/GAL-382.result
@@ -1,3 +1,4 @@
+connection node_1;
create table t1 (i int, j int, k int, primary key pk(i)) engine=innodb;
insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3);
create table t2 (i int, j int, k int, primary key pk(i, j, k), index idx(i, k, j)) engine=innodb;
diff --git a/mysql-test/suite/galera/r/MW-252.result b/mysql-test/suite/galera/r/MW-252.result
index c422edcb82a..795d3fff670 100644
--- a/mysql-test/suite/galera/r/MW-252.result
+++ b/mysql-test/suite/galera/r/MW-252.result
@@ -1,7 +1,10 @@
+connection node_1;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
FLUSH TABLES WITH READ LOCK;
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 2
1
+connection node_2;
+connection node_1;
UNLOCK TABLES;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/MW-258.result b/mysql-test/suite/galera/r/MW-258.result
index 1b4d4ae0de8..1c2a1744c98 100644
--- a/mysql-test/suite/galera/r/MW-258.result
+++ b/mysql-test/suite/galera/r/MW-258.result
@@ -1,3 +1,4 @@
+connection node_1;
CREATE TABLE t1 (f1 INTEGER);
LOCK TABLE t1 WRITE;
value prior to RSU:
@@ -7,12 +8,17 @@ wsrep_desync_count 0
SHOW VARIABLES LIKE 'wsrep_desync';
Variable_name Value
wsrep_desync OFF
+connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connection node_1a;
SET SESSION wsrep_sync_wait = 0;
SET SESSION wsrep_osu_method = RSU;
ALTER TABLE t1 ADD COLUMN f2 INTEGER;;
+connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connection node_1b;
SET SESSION wsrep_sync_wait = 0;
SET SESSION wsrep_osu_method = RSU;
ALTER TABLE t1 ADD COLUMN f3 INTEGER;;
+connection node_1;
value during RSU:
SHOW STATUS LIKE 'wsrep_desync_count';
Variable_name Value
@@ -21,6 +27,9 @@ SHOW VARIABLES LIKE 'wsrep_desync';
Variable_name Value
wsrep_desync OFF
UNLOCK TABLES;
+connection node_1a;
+connection node_1b;
+connection node_1;
value after RSU:
SHOW STATUS LIKE 'wsrep_desync_count';
Variable_name Value
diff --git a/mysql-test/suite/galera/r/MW-259.result b/mysql-test/suite/galera/r/MW-259.result
index df76e959de5..5256a95c52c 100644
--- a/mysql-test/suite/galera/r/MW-259.result
+++ b/mysql-test/suite/galera/r/MW-259.result
@@ -1,3 +1,6 @@
+connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connection node_1;
CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB;
SET GLOBAL wsrep_desync=0;
Warnings:
@@ -5,8 +8,12 @@ Warning 1231 'wsrep_desync' is already OFF.
SET wsrep_OSU_method=RSU;
SET DEBUG_SYNC = 'alter_table_before_open_tables WAIT_FOR continue';
ALTER TABLE t1 ADD COLUMN f2 INTEGER;;
+connection node_1a;
SET GLOBAL wsrep_desync=1;;
+connection node_1b;
SET DEBUG_SYNC= 'now SIGNAL continue';
DROP TABLE t1;
SET GLOBAL wsrep_desync=0;
+connection node_1;
+connection node_1a;
SET DEBUG_SYNC= 'RESET';
diff --git a/mysql-test/suite/galera/r/MW-44.result b/mysql-test/suite/galera/r/MW-44.result
index 28a6f1ac8dd..c007779bc79 100644
--- a/mysql-test/suite/galera/r/MW-44.result
+++ b/mysql-test/suite/galera/r/MW-44.result
@@ -1,5 +1,8 @@
+connection node_1;
TRUNCATE TABLE mysql.general_log;
+connection node_2;
TRUNCATE TABLE mysql.general_log;
+connection node_1;
SET SESSION wsrep_osu_method=TOI;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
SET SESSION wsrep_osu_method=RSU;
@@ -8,6 +11,7 @@ SET SESSION wsrep_osu_method=TOI;
SELECT COUNT(*) = 2 FROM mysql.general_log WHERE argument LIKE 'CREATE%' OR argument LIKE 'ALTER%';
COUNT(*) = 2
1
+connection node_2;
SELECT COUNT(*) = 0 FROM mysql.general_log WHERE argument NOT LIKE 'SELECT%';
COUNT(*) = 0
1
diff --git a/mysql-test/suite/galera/r/enforce_storage_engine2.result b/mysql-test/suite/galera/r/enforce_storage_engine2.result
new file mode 100644
index 00000000000..128994ed221
--- /dev/null
+++ b/mysql-test/suite/galera/r/enforce_storage_engine2.result
@@ -0,0 +1,26 @@
+#
+# MDEV-9312: storage engine not enforced during galera cluster
+# replication
+#
+connection node_1;
+CREATE TABLE t1(i INT) ENGINE=INNODB;
+CREATE TABLE t2(i INT) ENGINE=MYISAM;
+Warnings:
+Note 1266 Using storage engine InnoDB for table 't2'
+connection node_2;
+SHOW TABLES;
+Tables_in_test
+t1
+t2
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `i` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `i` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+DROP TABLE t1, t2;
+# End of tests
diff --git a/mysql-test/suite/galera/r/galera#414.result b/mysql-test/suite/galera/r/galera#414.result
index 029961f9463..c9fc39ddc21 100644
--- a/mysql-test/suite/galera/r/galera#414.result
+++ b/mysql-test/suite/galera/r/galera#414.result
@@ -1,5 +1,11 @@
+connection node_2;
+connection node_1;
SET SESSION wsrep_sync_wait = 0;
SET SESSION wsrep_on = OFF;
+connection node_2;
+connection node_1;
SET SESSION wsrep_on = ON;
+connection node_1;
CALL mtr.add_suppression("Failed to set packet size");
+connection node_2;
CALL mtr.add_suppression("Failed to set packet size");
diff --git a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
index b6314b862c2..ac01ea100a0 100644
--- a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
+++ b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result
@@ -1,4 +1,7 @@
+connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
+connection node_2;
START SLAVE;
+connection node_1;
SET SESSION binlog_format='STATEMENT';
CREATE TABLE t1 (
i int(11) NOT NULL AUTO_INCREMENT,
@@ -40,6 +43,7 @@ Variable_name Value
auto_increment_increment 7
auto_increment_offset 5
wsrep_auto_increment_control ON
+connection node_2;
select * from t1;
i c
1 dummy_text
@@ -58,6 +62,7 @@ binlog_format ROW
show variables like 'auto_increment_increment';
Variable_name Value
auto_increment_increment 2
+connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
select * from t1;
i c
1 dummy_text
@@ -76,7 +81,10 @@ binlog_format ROW
show variables like 'auto_increment_increment';
Variable_name Value
auto_increment_increment 2
+connection node_1;
DROP TABLE t1;
+connection node_2;
STOP SLAVE;
RESET SLAVE ALL;
+connection node_1;
RESET MASTER;
diff --git a/mysql-test/suite/galera/r/galera_autoinc_sst_xtrabackup.result b/mysql-test/suite/galera/r/galera_autoinc_sst_xtrabackup.result
index 228d7c6f041..d0fac1e3d14 100644
--- a/mysql-test/suite/galera/r/galera_autoinc_sst_xtrabackup.result
+++ b/mysql-test/suite/galera/r/galera_autoinc_sst_xtrabackup.result
@@ -1,3 +1,4 @@
+connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
CREATE PROCEDURE p1 ()
BEGIN
@@ -9,12 +10,21 @@ COMMIT;
END WHILE;
END|
CALL p1();;
+connection node_2;
CALL p1();;
+connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
+connection node_2a;
Killing server ...
INSERT INTO t1 VALUES (DEFAULT);
+connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connection node_1a;
INSERT INTO t1 VALUES (DEFAULT);
+connection node_1;
Got one of the listed errors
+connection node_2;
Got one of the listed errors
+connection node_1a;
+connection node_2a;
count_equal
1
CALL mtr.add_suppression("WSREP: Action message in non-primary configuration from member 0");
@@ -24,6 +34,7 @@ VARIABLE_VALUE
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 2
1
+connection node_1a;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE
2
diff --git a/mysql-test/suite/galera/r/galera_binlog_checksum.result b/mysql-test/suite/galera/r/galera_binlog_checksum.result
index b0ea2293119..7303aa61122 100644
--- a/mysql-test/suite/galera/r/galera_binlog_checksum.result
+++ b/mysql-test/suite/galera/r/galera_binlog_checksum.result
@@ -11,3 +11,19 @@ SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2;
COUNT(*) = 1
1
DROP TABLE t1;
+#
+# MDEV-11149: wsrep_replicate_mysaim: DML fails when binlog checksum
+# enabled
+#
+connection node_1;
+SET @@global.wsrep_replicate_myisam=1;
+CREATE TABLE t1 (i INT) ENGINE=MYISAM;
+INSERT INTO t1 VALUES(1);
+connection node_2;
+SELECT * FROM t1;
+i
+1
+connection node_1;
+DROP TABLE t1;
+SET @@global.wsrep_replicate_myisam=0;
+# End of tests.
diff --git a/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result b/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result
index 4156c0c70a7..46582ff5c4b 100644
--- a/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result
+++ b/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result
@@ -2,6 +2,7 @@ CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 VARCHAR(1000));
INSERT INTO t1 SELECT REPEAT('x', 1000) FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;
+connection node_2;
SELECT COUNT(*) = 10000 FROM t1;
COUNT(*) = 10000
1
diff --git a/mysql-test/suite/galera/r/galera_fulltext.result b/mysql-test/suite/galera/r/galera_fulltext.result
index 84ae0a116a1..18e3bff40fc 100644
--- a/mysql-test/suite/galera/r/galera_fulltext.result
+++ b/mysql-test/suite/galera/r/galera_fulltext.result
@@ -1,24 +1,34 @@
CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+connection node_1;
CREATE TABLE t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
+connection node_2;
SELECT COUNT(*) = 13 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE name LIKE 'test/%';
COUNT(*) = 13
1
+connection node_1;
INSERT INTO t1 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
+connection node_2;
SELECT COUNT(f2) = 1000 FROM t1 WHERE MATCH(f2) AGAINST ('foobarbaz');
COUNT(f2) = 1000
1
UPDATE t1 SET f2 = 'abcdefjhk';
+connection node_1;
SELECT COUNT(f2) = 1000 FROM t1 WHERE MATCH(f2) AGAINST ('abcdefjhk');
COUNT(f2) = 1000
1
+connection node_2;
DROP TABLE t1;
+connection node_1;
CREATE TABLE t1 (f1 VARCHAR(100), FULLTEXT (f1)) ENGINE=InnoDB;
+connection node_2;
INSERT INTO t1 (f1) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
+connection node_1;
SELECT COUNT(f1) = 1000 FROM t1 WHERE MATCH(f1) AGAINST ('foobarbaz');
COUNT(f1) = 1000
1
UPDATE t1 SET f1 = 'abcdefjhk';
+connection node_2;
SELECT COUNT(f1) = 1000 FROM t1 WHERE MATCH(f1) AGAINST ('abcdefjhk');
COUNT(f1) = 1000
1
diff --git a/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result b/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result
index 606cb549def..ce74f3db433 100644
--- a/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result
+++ b/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result
@@ -4,6 +4,7 @@ CREATE TABLE t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 INTEGER) ENGINE=InnoDB;
CREATE TABLE t2 (f1 VARCHAR(512) UNIQUE) ENGINE=InnoDB;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;
INSERT INTO t2 VALUES (REPEAT('x', 512));
+connection node_2;
SELECT COUNT(*) = 10000 FROM t1;
COUNT(*) = 10000
1
diff --git a/mysql-test/suite/galera/r/galera_ist_recv_bind.result b/mysql-test/suite/galera/r/galera_ist_recv_bind.result
index de4e07fbe41..ffc751d8672 100644
--- a/mysql-test/suite/galera/r/galera_ist_recv_bind.result
+++ b/mysql-test/suite/galera/r/galera_ist_recv_bind.result
@@ -1,13 +1,21 @@
+connection node_1;
SELECT @@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%';
@@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%'
1
+connection node_2;
SELECT @@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%';
@@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%'
1
SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 1';
+connection node_1;
+connection node_2;
SET SESSION wsrep_on = OFF;
SET SESSION wsrep_on = ON;
+connection node_1;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
+connection node_2;
SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 0';
+connection node_1;
+connection node_2;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_ist_rsync.result b/mysql-test/suite/galera/r/galera_ist_rsync.result
index 0b25a299b24..e4eb9d821fa 100644
--- a/mysql-test/suite/galera/r/galera_ist_rsync.result
+++ b/mysql-test/suite/galera/r/galera_ist_rsync.result
@@ -1,4 +1,5 @@
Performing State Transfer on a server that has been temporarily disconnected
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -8,6 +9,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -18,6 +20,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_provider = 'none';
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_committed_during');
@@ -32,6 +35,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -39,6 +43,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Loading wsrep provider ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -48,6 +53,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -62,6 +68,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_disconnect_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -76,6 +83,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -86,6 +94,7 @@ DROP TABLE t1;
COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been shut down cleanly and restarted
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -95,6 +104,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -104,6 +114,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Shutting down server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_committed_during');
@@ -118,6 +129,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -125,6 +137,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Starting server ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -134,6 +147,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -148,6 +162,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_shutdown_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -162,6 +177,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -172,6 +188,7 @@ DROP TABLE t1;
COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -181,6 +198,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -190,6 +208,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Killing server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_committed_during');
@@ -204,6 +223,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -211,6 +231,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Performing --wsrep-recover ...
Starting server ...
Using --wsrep-start-position when starting mysqld ...
@@ -222,6 +243,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -236,6 +258,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_kill_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -250,6 +273,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -261,6 +285,7 @@ COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
while a DDL was in progress on it
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -269,6 +294,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
+connection node_2;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -277,9 +303,12 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
+connection node_1;
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
+connection node_2;
SET wsrep_sync_wait = 0;
Killing server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
@@ -294,6 +323,7 @@ INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
@@ -301,7 +331,9 @@ INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Performing --wsrep-recover ...
+connection node_2;
Starting server ...
Using --wsrep-start-position when starting mysqld ...
SET AUTOCOMMIT=OFF;
@@ -312,6 +344,7 @@ INSERT INTO t1 (f1) VALUES ('node2_committed_after');
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
@@ -326,6 +359,7 @@ INSERT INTO t1 (f1) VALUES ('node1_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_kill_slave_ddl;
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
@@ -343,6 +377,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
COUNT(*) = 2
1
diff --git a/mysql-test/suite/galera/r/galera_kill_ddl.result b/mysql-test/suite/galera/r/galera_kill_ddl.result
index 9b15aaeb0af..aac316dffe3 100644
--- a/mysql-test/suite/galera/r/galera_kill_ddl.result
+++ b/mysql-test/suite/galera/r/galera_kill_ddl.result
@@ -11,7 +11,4 @@ SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='t1';
COUNT(*) = 2
1
connection node_1;
-SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
-VARIABLE_VALUE = 2
-1
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_kill_largechanges.result b/mysql-test/suite/galera/r/galera_kill_largechanges.result
index a37056ad9b0..d04bd548949 100644
--- a/mysql-test/suite/galera/r/galera_kill_largechanges.result
+++ b/mysql-test/suite/galera/r/galera_kill_largechanges.result
@@ -1,14 +1,20 @@
+connection node_1;
SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
CREATE TABLE t1 (f1 VARCHAR(128)) ENGINE=InnoDB;
+connection node_2;
Killing server ...
+connection node_1;
INSERT INTO t1 SELECT REPEAT('a', 128) FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
+connection node_2;
+connection node_2a;
SELECT COUNT(*) = 1000000 FROM t1;
COUNT(*) = 1000000
1
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 2
1
+connection node_1;
DROP TABLE t1;
DROP TABLE ten;
diff --git a/mysql-test/suite/galera/r/galera_many_columns.result b/mysql-test/suite/galera/r/galera_many_columns.result
index 6fa574e47c2..71e58f80537 100644
--- a/mysql-test/suite/galera/r/galera_many_columns.result
+++ b/mysql-test/suite/galera/r/galera_many_columns.result
@@ -1,22 +1,29 @@
INSERT INTO t1 (f1) VALUES (DEFAULT);
+connection node_2;
SELECT f1 = 'ABC', f1017 = 'ABC' FROM t1;
f1 = 'ABC' f1017 = 'ABC'
1 1
UPDATE t1 SET f1 = 'XYZ', f1017 = 'XYZ' ;
+connection node_1;
SELECT f1 = 'XYZ', f1017 = 'XYZ' FROM t1 WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
f1 = 'XYZ' f1017 = 'XYZ'
1 1
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
UPDATE t1 SET f2 = 'KLM' WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
UPDATE t1 SET f2 = 'CDE' WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
COMMIT;
+connection node_1;
COMMIT;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
ROLLBACK;
+connection node_2;
ROLLBACK;
+connection node_1;
START TRANSACTION;
INSERT INTO t1 (f1, f1017) VALUES ('BCE','BCE');
INSERT INTO t1 (f1, f1017) VALUES ('CED','CED');
@@ -26,6 +33,7 @@ ROLLBACK;
SELECT COUNT(*) = 1 FROM t1;
COUNT(*) = 1
1
+connection node_2;
SELECT COUNT(*) = 1 FROM t1;
COUNT(*) = 1
1
diff --git a/mysql-test/suite/galera/r/galera_many_rows.result b/mysql-test/suite/galera/r/galera_many_rows.result
index a34367d6e46..ab43b961458 100644
--- a/mysql-test/suite/galera/r/galera_many_rows.result
+++ b/mysql-test/suite/galera/r/galera_many_rows.result
@@ -1,9 +1,11 @@
+connection node_1;
SET SESSION innodb_lock_wait_timeout=600;
SET SESSION lock_wait_timeout=600;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
+connection node_2;
SET SESSION wsrep_sync_wait = 0;
SET SESSION wsrep_sync_wait = 7;
SET GLOBAL wsrep_provider_options = 'repl.causal_read_timeout=PT1H';
@@ -11,21 +13,27 @@ SELECT COUNT(*) = 100000 FROM t1;
COUNT(*) = 100000
1
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
+connection node_1;
SELECT COUNT(*) = 200000 FROM t1;
COUNT(*) = 200000
1
UPDATE t1 SET f2 = 1;
+connection node_2;
SELECT COUNT(*) = 200000 FROM t1 WHERE f2 = 1;
COUNT(*) = 200000
1
+connection node_1;
START TRANSACTION;
SELECT COUNT(*) = 200000 FROM t1;
COUNT(*) = 200000
1
UPDATE t1 SET f2 = 3;
+connection node_2;
START TRANSACTION;
UPDATE t1 SET f2 = 4;
+connection node_1;
COMMIT;
+connection node_2;
COMMIT;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_many_tables_nopk.result b/mysql-test/suite/galera/r/galera_many_tables_nopk.result
index 283905979ec..3e30b333250 100644
--- a/mysql-test/suite/galera/r/galera_many_tables_nopk.result
+++ b/mysql-test/suite/galera/r/galera_many_tables_nopk.result
@@ -1,16 +1,22 @@
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
COMMIT;
+connection node_2;
CREATE TABLE sum_table (f1 INTEGER);
SELECT SUM(f1) = 900 FROM sum_table;
SUM(f1) = 900
1
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
UPDATE t900 SET f1 = 3;
+connection node_1;
COMMIT;
+connection node_2;
COMMIT;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
DROP SCHEMA test;
diff --git a/mysql-test/suite/galera/r/galera_many_tables_pk.result b/mysql-test/suite/galera/r/galera_many_tables_pk.result
index d0aa1694e85..38cf19a8d8f 100644
--- a/mysql-test/suite/galera/r/galera_many_tables_pk.result
+++ b/mysql-test/suite/galera/r/galera_many_tables_pk.result
@@ -1,19 +1,27 @@
+connection node_1;
+connection node_2;
SELECT COUNT(*) = 900 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 't%';
COUNT(*) = 900
1
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
COMMIT;
+connection node_2;
CREATE TABLE sum_table (f1 INTEGER);
SELECT SUM(f1) = 900 FROM sum_table;
SUM(f1) = 900
1
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
UPDATE t900 SET f1 = 3;
+connection node_1;
COMMIT;
+connection node_2;
COMMIT;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
DROP SCHEMA test;
diff --git a/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result b/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result
index 1f163f4366c..336f46fcd7e 100644
--- a/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result
+++ b/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result
@@ -1,10 +1,18 @@
+connection node_1;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
+connection node_2;
SET GLOBAL wsrep_slave_threads = 4;
+connection node_1;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
+connection node_1a;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
+connection node_2;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
+connection node_1;
+connection node_1a;
+connection node_2;
SELECT COUNT(*) = 30000 FROM t1;
COUNT(*) = 30000
1
@@ -14,5 +22,6 @@ COUNT(DISTINCT f1) = 30000
SELECT COUNT(*) = 5 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user';
COUNT(*) = 5
1
+connection default;
DROP TABLE t1;
DROP TABLE ten;
diff --git a/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result b/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result
index 05ce328228a..c8c07221cb1 100644
--- a/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result
+++ b/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result
@@ -1,7 +1,11 @@
+connection node_1;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
+connection node_2;
SET GLOBAL wsrep_slave_threads = 4;
+connection node_1;
+connection node_2;
SELECT COUNT(*) = 20000 FROM t1;
COUNT(*) = 20000
1
@@ -11,5 +15,6 @@ COUNT(DISTINCT f1) = 20000
SELECT COUNT(*) = 4 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE LIKE 'committed%';
COUNT(*) = 4
1
+connection default;
DROP TABLE t1;
DROP TABLE ten;
diff --git a/mysql-test/suite/galera/r/galera_pc_ignore_sb.result b/mysql-test/suite/galera/r/galera_pc_ignore_sb.result
index e02ec0a3179..ee79d3c1f00 100644
--- a/mysql-test/suite/galera/r/galera_pc_ignore_sb.result
+++ b/mysql-test/suite/galera/r/galera_pc_ignore_sb.result
@@ -16,3 +16,5 @@ VARIABLE_VALUE = 'ON'
1
SET GLOBAL wsrep_cluster_address = '';
connection node_2;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_restart_nochanges.result b/mysql-test/suite/galera/r/galera_restart_nochanges.result
index 380a4812da1..b35ae50e2fb 100644
--- a/mysql-test/suite/galera/r/galera_restart_nochanges.result
+++ b/mysql-test/suite/galera/r/galera_restart_nochanges.result
@@ -4,6 +4,7 @@ connection node_1;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
connection node_2;
+connection node_1;
connection node_2a;
SELECT COUNT(*) = 1 FROM t1;
COUNT(*) = 1
@@ -12,3 +13,5 @@ SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_N
VARIABLE_VALUE = 2
1
DROP TABLE t1;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_roles.result b/mysql-test/suite/galera/r/galera_roles.result
index f07cd81c03f..bef89acfc92 100644
--- a/mysql-test/suite/galera/r/galera_roles.result
+++ b/mysql-test/suite/galera/r/galera_roles.result
@@ -171,6 +171,7 @@ DROP DATABASE test1;
#
# On node_1
+connection node_1;
CREATE USER foo@localhost;
CREATE ROLE role1;
CREATE ROLE role2 WITH ADMIN CURRENT_USER;
@@ -189,6 +190,7 @@ root@localhost role1 YES NO
root@localhost role2 YES NO
# On node_2
+connection node_2;
SELECT * FROM mysql.roles_mapping;
Host User Role Admin_option
role1 role4 Y
diff --git a/mysql-test/suite/galera/r/galera_rsu_add_pk.result b/mysql-test/suite/galera/r/galera_rsu_add_pk.result
index 3fd24af9ad7..4c79da154e2 100644
--- a/mysql-test/suite/galera/r/galera_rsu_add_pk.result
+++ b/mysql-test/suite/galera/r/galera_rsu_add_pk.result
@@ -1,8 +1,10 @@
+connection node_1;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB;
INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
INSERT INTO t1 (f1) SELECT 100000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;;
+connection node_2;
SET SESSION wsrep_OSU_method = "RSU";
ALTER TABLE t1 ADD PRIMARY KEY (f1);
SET SESSION wsrep_OSU_method = "TOI";
@@ -13,6 +15,7 @@ COUNT(*) = 300000
SELECT MAX(f1) = 299999 FROM t1;
MAX(f1) = 299999
1
+connection node_1;
SELECT COUNT(*) = 300000 FROM t1;
COUNT(*) = 300000
1
diff --git a/mysql-test/suite/galera/r/galera_rsu_drop_pk.result b/mysql-test/suite/galera/r/galera_rsu_drop_pk.result
index 039fb68d244..f64649ef4e2 100644
--- a/mysql-test/suite/galera/r/galera_rsu_drop_pk.result
+++ b/mysql-test/suite/galera/r/galera_rsu_drop_pk.result
@@ -1,8 +1,10 @@
+connection node_1;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB;
INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
INSERT INTO t1 (f1) SELECT 100000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;;
+connection node_2;
SET SESSION wsrep_OSU_method = "RSU";
ALTER TABLE t1 DROP PRIMARY KEY;
SET SESSION wsrep_OSU_method = "TOI";
@@ -13,6 +15,7 @@ COUNT(*) = 300000
SELECT MAX(f1) = 299999 FROM t1;
MAX(f1) = 299999
1
+connection node_1;
SELECT COUNT(*) = 300000 FROM t1;
COUNT(*) = 300000
1
@@ -22,8 +25,10 @@ MAX(f1) = 299999
SET SESSION wsrep_OSU_method = "RSU";
ALTER TABLE t1 DROP PRIMARY KEY;
SET SESSION wsrep_OSU_method = "TOI";
+connection node_2;
INSERT INTO t1 (f1) VALUES (1);
INSERT INTO t1 (f1) VALUES (10);
+connection node_1;
SELECT COUNT(*) = 2 FROM t1 WHERE f1 = 1;
COUNT(*) = 2
1
@@ -32,6 +37,7 @@ COUNT(*) = 2
1
INSERT INTO t1 (f1) VALUES (100);
INSERT INTO t1 (f1) VALUES (1000);
+connection node_2;
SELECT COUNT(*) = 2 FROM t1 WHERE f1 = 100;
COUNT(*) = 2
1
diff --git a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result
index aa0d20a3466..a103e810588 100644
--- a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result
+++ b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result
@@ -5,6 +5,7 @@ SET wsrep_OSU_method=RSU;
SET DEBUG_SYNC = 'alter_table_before_open_tables WAIT_FOR continue';
ALTER TABLE t1 ADD COLUMN f2 INTEGER;;
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1;
connection node_1a;
SET GLOBAL wsrep_desync=0;
SET DEBUG_SYNC= 'now SIGNAL continue';
@@ -31,9 +32,11 @@ SET DEBUG_SYNC = 'alter_table_before_create_table_no_lock WAIT_FOR continue';
ALTER TABLE t1 ADD COLUMN f2 INTEGER;;
connection node_1a;
SET GLOBAL wsrep_desync=1;;
+connection node_1b;
SET DEBUG_SYNC= 'now SIGNAL continue';
-SET GLOBAL wsrep_desync=0;
connection node_1;
+connection node_1a;
+SET GLOBAL wsrep_desync=0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/suite/galera/r/galera_split_brain.result b/mysql-test/suite/galera/r/galera_split_brain.result
index 9c5952cfa28..e770f15d630 100644
--- a/mysql-test/suite/galera/r/galera_split_brain.result
+++ b/mysql-test/suite/galera/r/galera_split_brain.result
@@ -1,7 +1,7 @@
-call mtr.add_suppression("WSREP: TO isolation failed for: ");
-connection node_1;
connection node_1;
connection node_2;
+call mtr.add_suppression("WSREP: TO isolation failed for: ");
+connection node_1;
connection node_2;
Killing server ...
connection node_1;
@@ -9,3 +9,5 @@ CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
SET GLOBAL wsrep_cluster_address = '';
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_sst_rsync.result b/mysql-test/suite/galera/r/galera_sst_rsync.result
index df2d9190a4b..b16a496554b 100644
--- a/mysql-test/suite/galera/r/galera_sst_rsync.result
+++ b/mysql-test/suite/galera/r/galera_sst_rsync.result
@@ -1,4 +1,5 @@
Performing State Transfer on a server that has been shut down cleanly and restarted
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -8,6 +9,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -17,6 +19,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Shutting down server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_committed_during');
@@ -31,6 +34,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -38,6 +42,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Starting server ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -47,6 +52,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -61,6 +67,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_shutdown_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -75,6 +82,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -86,6 +94,7 @@ COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that starts from a clean var directory
This is accomplished by shutting down node #2 and removing its var directory before restarting it
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -95,6 +104,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -104,6 +114,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Shutting down server ...
+connection node_1;
Cleaning var directory ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -119,6 +130,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -126,6 +138,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Starting server ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -135,6 +148,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -149,6 +163,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_clean_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -163,6 +178,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -173,6 +189,7 @@ DROP TABLE t1;
COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -182,6 +199,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
+connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -191,6 +209,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Killing server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_committed_during');
@@ -205,6 +224,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -212,6 +232,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Performing --wsrep-recover ...
Starting server ...
Using --wsrep-start-position when starting mysqld ...
@@ -223,6 +244,7 @@ INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
@@ -237,6 +259,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_kill_slave;
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
@@ -251,6 +274,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 35 FROM t1;
COUNT(*) = 35
1
@@ -262,6 +286,7 @@ COMMIT;
SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
while a DDL was in progress on it
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -270,6 +295,7 @@ INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
INSERT INTO t1 VALUES ('node1_committed_before');
+connection node_2;
START TRANSACTION;
INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
@@ -278,9 +304,12 @@ INSERT INTO t1 VALUES ('node2_committed_before');
INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
+connection node_1;
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
+connection node_2;
SET wsrep_sync_wait = 0;
Killing server ...
+connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
@@ -295,6 +324,7 @@ INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
@@ -302,7 +332,9 @@ INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
Performing --wsrep-recover ...
+connection node_2;
Starting server ...
Using --wsrep-start-position when starting mysqld ...
SET AUTOCOMMIT=OFF;
@@ -313,6 +345,7 @@ INSERT INTO t1 (f1) VALUES ('node2_committed_after');
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
COMMIT;
+connection node_1;
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
@@ -327,6 +360,7 @@ INSERT INTO t1 (f1) VALUES ('node1_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
COMMIT;
+connection node_1a_galera_st_kill_slave_ddl;
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
@@ -344,6 +378,7 @@ COUNT(*) = 0
1
COMMIT;
SET AUTOCOMMIT=ON;
+connection node_1;
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
COUNT(*) = 2
1
diff --git a/mysql-test/suite/galera/r/galera_sync_wait_show.result b/mysql-test/suite/galera/r/galera_sync_wait_show.result
index 4a73a573041..4c104eb54d8 100644
--- a/mysql-test/suite/galera/r/galera_sync_wait_show.result
+++ b/mysql-test/suite/galera/r/galera_sync_wait_show.result
@@ -42,8 +42,8 @@ CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f1 = 'a';
connection node_2;
SHOW CREATE TRIGGER tr1;
-Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
-tr1 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f1 = 'a' latin1 latin1_swedish_ci latin1_swedish_ci
+Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation Created
+tr1 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f1 = 'a' latin1 latin1_swedish_ci latin1_swedish_ci #
DROP TABLE t1;
connection node_1;
CREATE EVENT event1 ON SCHEDULE AT '2038-01-01 23:59:59' DO SELECT 1;
diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_error.result b/mysql-test/suite/galera/r/galera_toi_ddl_error.result
index 656e20bcc46..dafad153867 100644
--- a/mysql-test/suite/galera/r/galera_toi_ddl_error.result
+++ b/mysql-test/suite/galera/r/galera_toi_ddl_error.result
@@ -3,6 +3,7 @@ INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 (f1) SELECT (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
INSERT INTO t1 (f1) SELECT MAX(f1) FROM t1;
+connection node_2;
ALTER TABLE t1 ADD PRIMARY KEY (f1);
ERROR 23000: Duplicate entry '111110' for key 'PRIMARY'
SHOW CREATE TABLE t1;
@@ -10,6 +11,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`f1` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
+connection node_1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/suite/galera/r/galera_var_desync_on.result b/mysql-test/suite/galera/r/galera_var_desync_on.result
index 54c30370c4a..a26acbd4d6b 100644
--- a/mysql-test/suite/galera/r/galera_var_desync_on.result
+++ b/mysql-test/suite/galera/r/galera_var_desync_on.result
@@ -33,4 +33,5 @@ COUNT(*) = 11
1
CALL mtr.add_suppression("Protocol violation");
DROP TABLE t1;
+connection node_1;
CALL mtr.add_suppression("Protocol violation");
diff --git a/mysql-test/suite/galera/r/galera_var_dirty_reads.result b/mysql-test/suite/galera/r/galera_var_dirty_reads.result
index 6b3a3ec0eb5..e596e0f8cae 100644
--- a/mysql-test/suite/galera/r/galera_var_dirty_reads.result
+++ b/mysql-test/suite/galera/r/galera_var_dirty_reads.result
@@ -1,3 +1,5 @@
+connection node_1;
+connection node_2;
connection node_2;
CREATE TABLE t1(i INT) ENGINE=INNODB;
INSERT INTO t1 VALUES(1);
diff --git a/mysql-test/suite/galera/r/galera_var_load_data_splitting.result b/mysql-test/suite/galera/r/galera_var_load_data_splitting.result
index db145fd1561..3e451abbed1 100644
--- a/mysql-test/suite/galera/r/galera_var_load_data_splitting.result
+++ b/mysql-test/suite/galera/r/galera_var_load_data_splitting.result
@@ -1,9 +1,12 @@
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
+connection node_2;
SET GLOBAL wsrep_load_data_splitting = TRUE;
+connection node_2;
SELECT COUNT(*) = 95000 FROM t1;
COUNT(*) = 95000
1
wsrep_last_committed_diff
1
+connection node_1;
SET GLOBAL wsrep_load_data_splitting = 1;;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_wan_restart_ist.result b/mysql-test/suite/galera/r/galera_wan_restart_ist.result
index e58bff34e54..8a2a7d0818e 100644
--- a/mysql-test/suite/galera/r/galera_wan_restart_ist.result
+++ b/mysql-test/suite/galera/r/galera_wan_restart_ist.result
@@ -1,53 +1,88 @@
+connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
+connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4;
+connection node_1;
+connection node_2;
+connection node_3;
+connection node_4;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
+connection node_1;
CREATE TABLE t1 (f1 INTEGER);
INSERT INTO t1 VALUES (1);
+connection node_2;
INSERT INTO t1 VALUES (2);
+connection node_3;
INSERT INTO t1 VALUES (3);
+connection node_4;
INSERT INTO t1 VALUES (4);
+connection node_3;
INSERT INTO t1 VALUES (13);
Shutting down server ...
+connection node_1;
INSERT INTO t1 VALUES (11);
+connection node_2;
INSERT INTO t1 VALUES (12);
+connection node_4;
INSERT INTO t1 VALUES (14);
+connection node_3;
INSERT INTO t1 VALUES (131);
+connection node_2;
INSERT INTO t1 VALUES (22);
Shutting down server ...
+connection node_1;
INSERT INTO t1 VALUES (21);
+connection node_3;
INSERT INTO t1 VALUES (23);
+connection node_4;
INSERT INTO t1 VALUES (24);
+connection node_2;
INSERT INTO t1 VALUES (221);
+connection node_4;
INSERT INTO t1 VALUES (34);
Shutting down server ...
+connection node_1;
INSERT INTO t1 VALUES (31);
+connection node_2;
INSERT INTO t1 VALUES (32);
+connection node_3;
INSERT INTO t1 VALUES (33);
+connection node_4;
INSERT INTO t1 VALUES (341);
+connection node_1;
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_2;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_3;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_4;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_1;
DROP TABLE t1;
CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside");
+connection node_2;
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+connection node_3;
CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside");
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+connection node_4;
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/r/galera_wan_restart_sst.result b/mysql-test/suite/galera/r/galera_wan_restart_sst.result
index 15de0fab342..71786cdd023 100644
--- a/mysql-test/suite/galera/r/galera_wan_restart_sst.result
+++ b/mysql-test/suite/galera/r/galera_wan_restart_sst.result
@@ -1,54 +1,83 @@
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
+connection node_1;
CREATE TABLE t1 (f1 INTEGER);
INSERT INTO t1 VALUES (1);
+connection node_2;
INSERT INTO t1 VALUES (2);
+connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
+connection node_3;
INSERT INTO t1 VALUES (3);
+connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4;
+connection node_4;
INSERT INTO t1 VALUES (4);
+connection node_3;
INSERT INTO t1 VALUES (13);
Killing server ...
+connection node_1;
INSERT INTO t1 VALUES (11);
+connection node_2;
INSERT INTO t1 VALUES (12);
+connection node_4;
INSERT INTO t1 VALUES (14);
+connection node_3;
INSERT INTO t1 VALUES (131);
+connection node_2;
INSERT INTO t1 VALUES (22);
Killing server ...
+connection node_1;
INSERT INTO t1 VALUES (21);
+connection node_3;
INSERT INTO t1 VALUES (23);
+connection node_4;
INSERT INTO t1 VALUES (24);
+connection node_2;
INSERT INTO t1 VALUES (221);
+connection node_4;
INSERT INTO t1 VALUES (34);
Killing server ...
+connection node_1;
INSERT INTO t1 VALUES (31);
+connection node_2;
INSERT INTO t1 VALUES (32);
+connection node_3;
INSERT INTO t1 VALUES (33);
+connection node_4;
INSERT INTO t1 VALUES (341);
+connection node_1;
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_2;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_3;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_4;
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 4
1
SELECT COUNT(*) = 19 FROM t1;
COUNT(*) = 19
1
+connection node_1;
DROP TABLE t1;
CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside");
CALL mtr.add_suppression("WSREP: gcs_caused\\(\\) returned -1 \\(Operation not permitted\\)");
+connection node_2;
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+connection node_3;
CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside");
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+connection node_4;
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
diff --git a/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result b/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result
index 06fc27ae7ed..5324d1c11dd 100644
--- a/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result
+++ b/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result
@@ -1,7 +1,9 @@
+connection node_1;
CREATE TABLE ten (f1 INTEGER);
INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB;
INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
+connection node_2;
SET GLOBAL wsrep_desync = TRUE;
SET SESSION wsrep_on = FALSE;
ALTER TABLE t1 ADD PRIMARY KEY (f1);
@@ -14,6 +16,7 @@ COUNT(*) = 200000
SELECT MAX(f1) = 199999 FROM t1;
MAX(f1) = 199999
1
+connection node_1;
SELECT COUNT(*) = 200000 FROM t1;
COUNT(*) = 200000
1
@@ -25,8 +28,10 @@ SET SESSION wsrep_on = FALSE;
ALTER TABLE t1 ADD PRIMARY KEY (f1);
SET SESSION wsrep_on = TRUE;
SET GLOBAL wsrep_desync = FALSE;
+connection node_2;
INSERT INTO t1 (f1) VALUES (1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+connection node_1;
INSERT INTO t1 (f1) VALUES (100);
ERROR 23000: Duplicate entry '100' for key 'PRIMARY'
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/mdev_10518.result b/mysql-test/suite/galera/r/mdev_10518.result
index b2a3e0a65ef..4ccd5fd1d23 100644
--- a/mysql-test/suite/galera/r/mdev_10518.result
+++ b/mysql-test/suite/galera/r/mdev_10518.result
@@ -1,4 +1,5 @@
# On node_1
+connection node_1;
list of GTID variables :
gtid_domain_id 1
gtid_binlog_pos
@@ -8,6 +9,7 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_2
+connection node_2;
list of GTID variables :
gtid_domain_id 2
gtid_binlog_pos
@@ -17,6 +19,7 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_1
+connection node_1;
CREATE TABLE t1(i INT) ENGINE=INNODB;
CREATE TABLE t2(i INT) ENGINE=MEMORY;
INSERT INTO t1 VALUES(1);
@@ -34,6 +37,7 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_2
+connection node_2;
SELECT * FROM t1;
i
1
@@ -46,6 +50,7 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_1
+connection node_1;
INSERT INTO t2 VALUES(1);
SELECT * FROM t2;
i
@@ -59,6 +64,7 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_2
+connection node_2;
SELECT * FROM t2;
i
list of GTID variables :
@@ -70,5 +76,8 @@ gtid_slave_pos
wsrep_gtid_domain_id 4294967295
wsrep_gtid_mode 1
# On node_1
+connection node_1;
DROP TABLE t1, t2;
+disconnect node_2;
+disconnect node_1;
# End of test
diff --git a/mysql-test/suite/galera/r/mysql-wsrep#31.result b/mysql-test/suite/galera/r/mysql-wsrep#31.result
index 973f11543fa..1092f4ddb0c 100644
--- a/mysql-test/suite/galera/r/mysql-wsrep#31.result
+++ b/mysql-test/suite/galera/r/mysql-wsrep#31.result
@@ -1,4 +1,6 @@
connection node_1;
+connection node_2;
+connection node_1;
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
INSERT INTO t1 VALUES('test');
CREATE DATABASE db;
@@ -11,3 +13,6 @@ Using --wsrep-start-position when starting mysqld ...
connection node_1;
DROP TABLE t1;
DROP DATABASE db;
+connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera/t/enforce_storage_engine2.opt b/mysql-test/suite/galera/t/enforce_storage_engine2.opt
new file mode 100644
index 00000000000..03f7dc5e527
--- /dev/null
+++ b/mysql-test/suite/galera/t/enforce_storage_engine2.opt
@@ -0,0 +1,2 @@
+--enforce_storage_engine=innodb --sql_mode=''
+
diff --git a/mysql-test/suite/galera/t/enforce_storage_engine2.test b/mysql-test/suite/galera/t/enforce_storage_engine2.test
new file mode 100644
index 00000000000..7a822bced59
--- /dev/null
+++ b/mysql-test/suite/galera/t/enforce_storage_engine2.test
@@ -0,0 +1,20 @@
+--source include/galera_cluster.inc
+--source include/have_innodb.inc
+
+--echo #
+--echo # MDEV-9312: storage engine not enforced during galera cluster
+--echo # replication
+--echo #
+--connection node_1
+CREATE TABLE t1(i INT) ENGINE=INNODB;
+CREATE TABLE t2(i INT) ENGINE=MYISAM;
+
+--connection node_2
+SHOW TABLES;
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+
+# Cleanup
+DROP TABLE t1, t2;
+
+--echo # End of tests
diff --git a/mysql-test/suite/galera/t/galera_binlog_checksum.test b/mysql-test/suite/galera/t/galera_binlog_checksum.test
index 48669305242..09d7a02f312 100644
--- a/mysql-test/suite/galera/t/galera_binlog_checksum.test
+++ b/mysql-test/suite/galera/t/galera_binlog_checksum.test
@@ -20,3 +20,24 @@ UPDATE t1 SET f1 = 2 WHERE f1 = 1;
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2;
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-11149: wsrep_replicate_mysaim: DML fails when binlog checksum
+--echo # enabled
+--echo #
+
+--connection node_1
+let $wsrep_replicate_myisam_saved= `SELECT @@wsrep_replicate_myisam`;
+SET @@global.wsrep_replicate_myisam=1;
+
+CREATE TABLE t1 (i INT) ENGINE=MYISAM;
+INSERT INTO t1 VALUES(1);
+
+--connection node_2
+SELECT * FROM t1;
+
+--connection node_1
+DROP TABLE t1;
+eval SET @@global.wsrep_replicate_myisam=$wsrep_replicate_myisam_saved;
+
+--echo # End of tests.
diff --git a/mysql-test/suite/galera/t/galera_sync_wait_show.test b/mysql-test/suite/galera/t/galera_sync_wait_show.test
index 250b1f76e98..3707b7ebaf1 100644
--- a/mysql-test/suite/galera/t/galera_sync_wait_show.test
+++ b/mysql-test/suite/galera/t/galera_sync_wait_show.test
@@ -57,6 +57,7 @@ CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f1 = 'a';
--connection node_2
+--replace_column 7 #
SHOW CREATE TRIGGER tr1;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/t/galera_wan_restart_ist.test b/mysql-test/suite/galera/t/galera_wan_restart_ist.test
index 42f63df3acc..1cf5d4c7f74 100644
--- a/mysql-test/suite/galera/t/galera_wan_restart_ist.test
+++ b/mysql-test/suite/galera/t/galera_wan_restart_ist.test
@@ -12,6 +12,16 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
+--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
+--connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4
+
+# Save original auto_increment_offset values.
+--let $node_1=node_1
+--let $node_2=node_2
+--let $node_3=node_3
+--let $node_4=node_4
+--source include/auto_increment_offset_save.inc
+
SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--connection node_1
@@ -21,11 +31,9 @@ INSERT INTO t1 VALUES (1);
--connection node_2
INSERT INTO t1 VALUES (2);
---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
--connection node_3
INSERT INTO t1 VALUES (3);
---connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4
--connection node_4
INSERT INTO t1 VALUES (4);
@@ -146,3 +154,8 @@ CALL mtr.add_suppression("Action message in non-primary configuration from membe
--connection node_4
CALL mtr.add_suppression("Action message in non-primary configuration from member 0");
+
+# Restore original auto_increment_offset values.
+--source include/auto_increment_offset_restore.inc
+
+--source include/galera_end.inc
diff --git a/mysql-test/suite/galera_3nodes/disabled.def b/mysql-test/suite/galera_3nodes/disabled.def
index fb23a81bfb8..ca55c41ff72 100644
--- a/mysql-test/suite/galera_3nodes/disabled.def
+++ b/mysql-test/suite/galera_3nodes/disabled.def
@@ -3,3 +3,5 @@ galera_evs_suspect_timeout : TODO: investigate
galera_innobackupex_backup : TODO: investigate
galera_slave_options_do :MDEV-8798
galera_slave_options_ignore : MDEV-8798
+galera_pc_bootstrap : TODO: Investigate: Timeout in wait_condition.inc
+galera_pc_weight : Test times out
diff --git a/mysql-test/suite/galera_3nodes/r/galera_certification_ccc.result b/mysql-test/suite/galera_3nodes/r/galera_certification_ccc.result
index 96a2bec0d7f..b1bbb1406a1 100644
--- a/mysql-test/suite/galera_3nodes/r/galera_certification_ccc.result
+++ b/mysql-test/suite/galera_3nodes/r/galera_certification_ccc.result
@@ -1,3 +1,7 @@
+connection node_1;
+connection node_2;
+connection node_3;
+connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
@@ -5,13 +9,20 @@ INSERT INTO t1 VALUES (1);
SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 3
1
+connection node_3;
SET GLOBAL wsrep_cluster_address = '';
+connection node_1;
INSERT INTO t1 VALUES (2);
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
VARIABLE_VALUE = 2
1
COMMIT;
+connection node_2;
SELECT COUNT(*) = 2 FROM t1;
COUNT(*) = 2
1
+connection node_3;
+connection node_1;
DROP TABLE t1;
+disconnect node_2;
+disconnect node_1;
diff --git a/mysql-test/suite/galera_3nodes/r/galera_certification_double_failure.result b/mysql-test/suite/galera_3nodes/r/galera_certification_double_failure.result
index 9dc735d5d3d..c2fdfc38dd5 100644
--- a/mysql-test/suite/galera_3nodes/r/galera_certification_double_failure.result
+++ b/mysql-test/suite/galera_3nodes/r/galera_certification_double_failure.result
@@ -1,11 +1,15 @@
+connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
+connection node_2;
INSERT INTO t1 VALUES (1);
+connection node_3;
INSERT INTO t2 VALUES (1);
+connection node_1;
COMMIT;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
DROP TABLE t1;
diff --git a/mysql-test/suite/galera_3nodes/r/galera_parallel_apply_3nodes.result b/mysql-test/suite/galera_3nodes/r/galera_parallel_apply_3nodes.result
index ec97d392c0f..4f9951c382f 100644
--- a/mysql-test/suite/galera_3nodes/r/galera_parallel_apply_3nodes.result
+++ b/mysql-test/suite/galera_3nodes/r/galera_parallel_apply_3nodes.result
@@ -1,8 +1,14 @@
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
+connection node_3;
SET GLOBAL wsrep_slave_threads = 2;
+connection node_1;
UPDATE t1 SET f1 = f1 + 10;;
+connection node_2;
UPDATE t1 SET f1 = f1 + 100;;
+connection node_1;
+connection node_2;
+connection node_3;
SELECT f1 = 111 FROM t1;
f1 = 111
1
diff --git a/mysql-test/suite/handler/aria.result b/mysql-test/suite/handler/aria.result
index b8ed1fd98c8..6b02ac9b085 100644
--- a/mysql-test/suite/handler/aria.result
+++ b/mysql-test/suite/handler/aria.result
@@ -545,7 +545,6 @@ optimize table t1;
connection default;
handler t1 read next;
c1
-1
handler t1 close;
connection con2;
Table Op Msg_type Msg_text
@@ -1296,19 +1295,27 @@ commit;
# an open HANDLER, ER_LOCK_DEADLOCK is reported.
#
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
+get_lock('lock1', 10)
+1
connection default;
-drop table t2;
+select get_lock('lock1', 10);
connection con2;
-# Waiting for 'drop table t2' to get blocked...
+# Waiting for 'select get_lock('lock1', 10)' to get blocked...
connection con1;
drop table t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-unlock tables;
+select release_lock('lock1');
+release_lock('lock1')
+1
connection default;
+get_lock('lock1', 10)
+1
+select release_lock('lock1');
+release_lock('lock1')
+1
# Demonstrate that there is no deadlock with FLUSH TABLE,
# even though it is waiting for the other table to go away
create table t2 like t1;
@@ -1347,6 +1354,10 @@ handler t1 read a next;
a
1
# Unblock 'lock tables t1 write'.
+select * from t1;
+a
+1
+2
commit;
connection con1;
# Reap 'lock tables t1 write'.
@@ -1516,10 +1527,6 @@ handler t1 read a last;
a b
7 7
commit;
-connection con1;
-# Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
a b
diff --git a/mysql-test/suite/handler/handler.inc b/mysql-test/suite/handler/handler.inc
index a4ab5f1ed32..2432ff13e55 100644
--- a/mysql-test/suite/handler/handler.inc
+++ b/mysql-test/suite/handler/handler.inc
@@ -1054,24 +1054,24 @@ commit;
--echo # an open HANDLER, ER_LOCK_DEADLOCK is reported.
--echo #
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
connection default;
-send drop table t2;
+send select get_lock('lock1', 10);
connection con2;
---echo # Waiting for 'drop table t2' to get blocked...
+--echo # Waiting for 'select get_lock('lock1', 10)' to get blocked...
let $wait_condition=select count(*)=1 from information_schema.processlist
- where state='Waiting for table metadata lock' and
- info='drop table t2';
+ where state='User lock' and
+ info='select get_lock(\'lock1\', 10)';
--source include/wait_condition.inc
connection con1;
--error ER_LOCK_DEADLOCK
drop table t1;
-unlock tables;
+select release_lock('lock1');
connection default;
reap;
+select release_lock('lock1');
--echo # Demonstrate that there is no deadlock with FLUSH TABLE,
--echo # even though it is waiting for the other table to go away
@@ -1118,6 +1118,7 @@ connection default;
handler t1 read a next;
--echo # Unblock 'lock tables t1 write'.
+select * from t1; # Release MDL_SHARED_READ held by HANDLER
commit;
connection con1;
@@ -1132,7 +1133,7 @@ connection con1;
--echo # Waiting for 'handler t1 read a next' to get blocked...
let $wait_condition=
select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table level lock" and
+ where state = "Waiting for table metadata lock" and
info = "handler t1 read a next";
--source include/wait_condition.inc
@@ -1259,10 +1260,6 @@ handler t1 read a last;
insert into t1 (a, b) values (7, 7);
handler t1 read a last;
commit;
-connection con1;
---echo # Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
handler t1 close;
diff --git a/mysql-test/suite/handler/heap.result b/mysql-test/suite/handler/heap.result
index 70dcefe4ff3..fc42e43f710 100644
--- a/mysql-test/suite/handler/heap.result
+++ b/mysql-test/suite/handler/heap.result
@@ -545,7 +545,6 @@ optimize table t1;
connection default;
handler t1 read next;
c1
-1
handler t1 close;
connection con2;
Table Op Msg_type Msg_text
@@ -1296,19 +1295,27 @@ commit;
# an open HANDLER, ER_LOCK_DEADLOCK is reported.
#
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
+get_lock('lock1', 10)
+1
connection default;
-drop table t2;
+select get_lock('lock1', 10);
connection con2;
-# Waiting for 'drop table t2' to get blocked...
+# Waiting for 'select get_lock('lock1', 10)' to get blocked...
connection con1;
drop table t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-unlock tables;
+select release_lock('lock1');
+release_lock('lock1')
+1
connection default;
+get_lock('lock1', 10)
+1
+select release_lock('lock1');
+release_lock('lock1')
+1
# Demonstrate that there is no deadlock with FLUSH TABLE,
# even though it is waiting for the other table to go away
create table t2 like t1;
@@ -1347,6 +1354,10 @@ handler t1 read a next;
a
1
# Unblock 'lock tables t1 write'.
+select * from t1;
+a
+1
+2
commit;
connection con1;
# Reap 'lock tables t1 write'.
@@ -1516,10 +1527,6 @@ handler t1 read a last;
a b
7 7
commit;
-connection con1;
-# Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
a b
diff --git a/mysql-test/suite/handler/innodb.result b/mysql-test/suite/handler/innodb.result
index 102237617fd..80e8ed679a9 100644
--- a/mysql-test/suite/handler/innodb.result
+++ b/mysql-test/suite/handler/innodb.result
@@ -1299,19 +1299,27 @@ commit;
# an open HANDLER, ER_LOCK_DEADLOCK is reported.
#
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
+get_lock('lock1', 10)
+1
connection default;
-drop table t2;
+select get_lock('lock1', 10);
connection con2;
-# Waiting for 'drop table t2' to get blocked...
+# Waiting for 'select get_lock('lock1', 10)' to get blocked...
connection con1;
drop table t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-unlock tables;
+select release_lock('lock1');
+release_lock('lock1')
+1
connection default;
+get_lock('lock1', 10)
+1
+select release_lock('lock1');
+release_lock('lock1')
+1
# Demonstrate that there is no deadlock with FLUSH TABLE,
# even though it is waiting for the other table to go away
create table t2 like t1;
@@ -1350,6 +1358,10 @@ handler t1 read a next;
a
1
# Unblock 'lock tables t1 write'.
+select * from t1;
+a
+1
+2
commit;
connection con1;
# Reap 'lock tables t1 write'.
@@ -1519,10 +1531,6 @@ handler t1 read a last;
a b
7 7
commit;
-connection con1;
-# Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
a b
diff --git a/mysql-test/suite/handler/interface.result b/mysql-test/suite/handler/interface.result
index 4d5a385df0f..a4ac32c16b4 100644
--- a/mysql-test/suite/handler/interface.result
+++ b/mysql-test/suite/handler/interface.result
@@ -272,24 +272,6 @@ handler t1 read a next;
ERROR 42S02: Unknown table 't1' in HANDLER
connect con1,localhost,root,,;
connect con2,localhost,root,,;
-connection default;
-drop table if exists t1;
-# First test case which is supposed trigger the execution
-# path on which problem was discovered.
-create table t1 (a int not null);
-insert into t1 values (1);
-handler t1 open;
-connection con1;
-lock table t1 write;
-alter table t1 engine=csv;
-connection con2;
-connection default;
-handler t1 read a next;
-ERROR HY000: Storage engine CSV of the table `test`.`t1` doesn't have this option
-handler t1 close;
-connection con1;
-unlock tables;
-drop table t1;
# Now test case which was reported originally but which no longer
# triggers execution path which has caused the problem.
connection default;
diff --git a/mysql-test/suite/handler/interface.test b/mysql-test/suite/handler/interface.test
index a82412799eb..2f576c9b291 100644
--- a/mysql-test/suite/handler/interface.test
+++ b/mysql-test/suite/handler/interface.test
@@ -298,32 +298,6 @@ handler t1 read a next;
connect(con1,localhost,root,,);
connect(con2,localhost,root,,);
-connection default;
---disable_warnings
-drop table if exists t1;
---enable_warnings
---echo # First test case which is supposed trigger the execution
---echo # path on which problem was discovered.
-create table t1 (a int not null);
-insert into t1 values (1);
-handler t1 open;
-connection con1;
-lock table t1 write;
-send alter table t1 engine=csv;
-connection con2;
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "alter table t1 engine=csv";
---source include/wait_condition.inc
-connection default;
---error ER_ILLEGAL_HA
-handler t1 read a next;
-handler t1 close;
-connection con1;
---reap
-unlock tables;
-drop table t1;
--echo # Now test case which was reported originally but which no longer
--echo # triggers execution path which has caused the problem.
connection default;
diff --git a/mysql-test/suite/handler/myisam.result b/mysql-test/suite/handler/myisam.result
index fca75f3b7a6..90e1767a1f3 100644
--- a/mysql-test/suite/handler/myisam.result
+++ b/mysql-test/suite/handler/myisam.result
@@ -545,7 +545,6 @@ optimize table t1;
connection default;
handler t1 read next;
c1
-1
handler t1 close;
connection con2;
Table Op Msg_type Msg_text
@@ -1296,19 +1295,27 @@ commit;
# an open HANDLER, ER_LOCK_DEADLOCK is reported.
#
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
+get_lock('lock1', 10)
+1
connection default;
-drop table t2;
+select get_lock('lock1', 10);
connection con2;
-# Waiting for 'drop table t2' to get blocked...
+# Waiting for 'select get_lock('lock1', 10)' to get blocked...
connection con1;
drop table t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-unlock tables;
+select release_lock('lock1');
+release_lock('lock1')
+1
connection default;
+get_lock('lock1', 10)
+1
+select release_lock('lock1');
+release_lock('lock1')
+1
# Demonstrate that there is no deadlock with FLUSH TABLE,
# even though it is waiting for the other table to go away
create table t2 like t1;
@@ -1347,6 +1354,10 @@ handler t1 read a next;
a
1
# Unblock 'lock tables t1 write'.
+select * from t1;
+a
+1
+2
commit;
connection con1;
# Reap 'lock tables t1 write'.
@@ -1516,10 +1527,6 @@ handler t1 read a last;
a b
7 7
commit;
-connection con1;
-# Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
a b
diff --git a/mysql-test/suite/innodb/disabled.def b/mysql-test/suite/innodb/disabled.def
index 1580474de29..9f8de75ae14 100644
--- a/mysql-test/suite/innodb/disabled.def
+++ b/mysql-test/suite/innodb/disabled.def
@@ -10,4 +10,5 @@
#
##############################################################################
-innodb_defragment_fill_factor : MDEV-10771 \ No newline at end of file
+innodb_defragment_fill_factor : MDEV-10771
+
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_tables.result b/mysql-test/suite/innodb/r/innodb-page_compression_tables.result
index a0ac8986b9e..7d825e73aa4 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_tables.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_tables.result
@@ -123,5 +123,31 @@ drop procedure innodb_insert_proc;
drop table innodb_normal;
drop table innodb_compact;
drop table innodb_dynamic;
+CREATE TABLE no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
+SET SESSION innodb_compression_default = 1;
+CREATE TABLE default_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
+CREATE TABLE explicit_no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB PAGE_COMPRESSED=0;
+SHOW CREATE TABLE no_compression;
+Table Create Table
+no_compression CREATE TABLE `no_compression` (
+ `id` int(11) NOT NULL,
+ `name` varchar(200) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE default_compression;
+Table Create Table
+default_compression CREATE TABLE `default_compression` (
+ `id` int(11) NOT NULL,
+ `name` varchar(200) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`='ON'
+SHOW CREATE TABLE explicit_no_compression;
+Table Create Table
+explicit_no_compression CREATE TABLE `explicit_no_compression` (
+ `id` int(11) NOT NULL,
+ `name` varchar(200) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=0
+DROP TABLE no_compression;
+DROP TABLE default_compression;
+DROP TABLE explicit_no_compression;
+SET SESSION innodb_compression_default = 0;
Warnings:
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
diff --git a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
index 375d8b72f3c..12a234a1bde 100644
--- a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
+++ b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
@@ -419,6 +419,9 @@ ucs2_vn_ci ucs2 359 8
ucs2_5624_1 ucs2 360 8
utf8_5624_5 utf8 368 8
utf8_5624_5_bad utf8 369 8
+utf8_czech_test_w2 utf8 370 4
+utf8_czech_test_nopad_w2 utf8 371 4
+utf8_czech_test_bad_w2 utf8 372 4
utf32_test_ci utf32 391 8
utf8_maxuserid_ci utf8 2047 8
show collation like '%test%';
@@ -427,6 +430,9 @@ latin1_test latin1 99 Yes 1
latin1_test2 latin1 332 1
latin1_test2_cs latin1 333 1
utf8_test_ci utf8 353 8
+utf8_czech_test_w2 utf8 370 4
+utf8_czech_test_nopad_w2 utf8 371 4
+utf8_czech_test_bad_w2 utf8 372 4
ucs2_test_ci ucs2 358 8
utf8mb4_test_ci utf8mb4 326 8
utf8mb4_test_400_ci utf8mb4 328 8
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_tables.test b/mysql-test/suite/innodb/t/innodb-page_compression_tables.test
index 41d844d26b4..3a241810bbc 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_tables.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_tables.test
@@ -95,6 +95,20 @@ drop table innodb_normal;
drop table innodb_compact;
drop table innodb_dynamic;
+# MDEV-9820 introducing variable for having page compression turned on by default on InnoDB tables
+# test that innodb_compression_default works as expected, i.e. if it has a value of 1 (ON) tables are by default created with page_compressed=1;
+CREATE TABLE no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
+SET SESSION innodb_compression_default = 1;
+CREATE TABLE default_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB;
+CREATE TABLE explicit_no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB PAGE_COMPRESSED=0;
+SHOW CREATE TABLE no_compression;
+SHOW CREATE TABLE default_compression;
+SHOW CREATE TABLE explicit_no_compression;
+DROP TABLE no_compression;
+DROP TABLE default_compression;
+DROP TABLE explicit_no_compression;
+SET SESSION innodb_compression_default = 0;
+
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
diff --git a/mysql-test/suite/innodb/t/innodb_trx_weight.opt b/mysql-test/suite/innodb/t/innodb_trx_weight.opt
new file mode 100644
index 00000000000..bac39c99a74
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_trx_weight.opt
@@ -0,0 +1 @@
+--loose-innodb-lock-schedule-algorithm=FCFS
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_compress.result b/mysql-test/suite/rpl/r/rpl_binlog_compress.result
new file mode 100644
index 00000000000..d729611e885
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_binlog_compress.result
@@ -0,0 +1,76 @@
+include/master-slave.inc
+[connection master]
+set @old_log_bin_compress=@@log_bin_compress;
+set @old_log_bin_compress_min_len=@@log_bin_compress_min_len;
+set @old_binlog_format=@@binlog_format;
+set @old_binlog_row_image=@@binlog_row_image;
+set global log_bin_compress=on;
+set global log_bin_compress_min_len=10;
+drop table if exists t1;
+Warnings:
+Note 1051 Unknown table 'test.t1'
+CREATE TABLE t1 (pr_id int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, pr_page int(11) NOT NULL, pr_type varbinary(60) NOT NULL, test int, UNIQUE KEY pr_pagetype (pr_page,pr_type)) ENGINE=myisam AUTO_INCREMENT=136;
+set binlog_format=statement;
+insert into t1 (pr_page, pr_type, test) values(1,"one",0),(2,"two",0);
+replace into t1 (pr_page, pr_type,test) values(1,"one",2);
+update t1 set test=test+1 where pr_page > 1;
+delete from t1 where test=1;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+connection slave;
+connection slave;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+connection master;
+set binlog_format=row;
+insert into t1 (pr_page, pr_type, test) values(3,"three",0),(4,"four",4),(5, "five", 0);
+replace into t1 (pr_page, pr_type,test) values(3,"one",2);
+update t1 set test=test+1 where pr_page > 3;
+delete from t1 where test=1;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+140 4 four 5
+139 3 three 0
+142 3 one 2
+connection slave;
+connection slave;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+140 4 four 5
+139 3 three 0
+142 3 one 2
+connection master;
+set binlog_row_image=minimal;
+insert into t1 (pr_page, pr_type, test) values(6,"six",0),(7,"seven",7),(8, "eight", 0);
+replace into t1 (pr_page, pr_type,test) values(6,"six",2);
+update t1 set test=test+1 where pr_page > 6;
+delete from t1 where test=1;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+140 4 four 5
+139 3 three 0
+144 7 seven 8
+142 3 one 2
+146 6 six 2
+connection slave;
+connection slave;
+select * from t1;
+pr_id pr_page pr_type test
+138 1 one 2
+140 4 four 5
+139 3 three 0
+144 7 seven 8
+142 3 one 2
+146 6 six 2
+connection master;
+drop table t1;
+set global log_bin_compress=@old_log_bin_compress;
+set global log_bin_compress_min_len=@old_log_bin_compress_min_len;
+set binlog_format=@old_binlog_format;
+set binlog_row_image=@old_binlog_row_image;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_checksum.result b/mysql-test/suite/rpl/r/rpl_checksum.result
index 820224d99da..e74e5af9f84 100644
--- a/mysql-test/suite/rpl/r/rpl_checksum.result
+++ b/mysql-test/suite/rpl/r/rpl_checksum.result
@@ -79,7 +79,7 @@ connection slave;
set @@global.debug_dbug='d,simulate_slave_unaware_checksum';
start slave;
include/wait_for_slave_io_error.inc [errno=1236]
-Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'master-bin.000009' at 368, the last event read from 'master-bin.000010' at 4, the last byte read from 'master-bin.000010' at 249.''
+Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'master-bin.000009' at 375, the last event read from 'master-bin.000010' at 4, the last byte read from 'master-bin.000010' at 256.''
select count(*) as zero from t1;
zero
0
diff --git a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
index 6c709945111..3b5f67efe78 100644
--- a/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
+++ b/mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
@@ -410,6 +410,7 @@ LOCK TABLES t11 WRITE;
SET SESSION BINLOG_FORMAT=ROW;
INSERT INTO t11 VALUES('Several Species of Small Furry Animals Gathered Together in a Cave and Grooving With a Pict');
SET SESSION BINLOG_FORMAT=STATEMENT;
+ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
INSERT INTO t11 VALUES('Careful With That Axe, Eugene');
UNLOCK TABLES;
SELECT * FROM t11;
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_compress.test b/mysql-test/suite/rpl/t/rpl_binlog_compress.test
new file mode 100644
index 00000000000..ef1e45084b6
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_binlog_compress.test
@@ -0,0 +1,61 @@
+#
+# Test of compressed binlog with replication
+#
+
+source include/master-slave.inc;
+
+set @old_log_bin_compress=@@log_bin_compress;
+set @old_log_bin_compress_min_len=@@log_bin_compress_min_len;
+set @old_binlog_format=@@binlog_format;
+set @old_binlog_row_image=@@binlog_row_image;
+
+set global log_bin_compress=on;
+set global log_bin_compress_min_len=10;
+
+drop table if exists t1;
+CREATE TABLE t1 (pr_id int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, pr_page int(11) NOT NULL, pr_type varbinary(60) NOT NULL, test int, UNIQUE KEY pr_pagetype (pr_page,pr_type)) ENGINE=myisam AUTO_INCREMENT=136;
+
+set binlog_format=statement;
+insert into t1 (pr_page, pr_type, test) values(1,"one",0),(2,"two",0);
+replace into t1 (pr_page, pr_type,test) values(1,"one",2);
+update t1 set test=test+1 where pr_page > 1;
+delete from t1 where test=1;
+
+select * from t1;
+sync_slave_with_master;
+connection slave;
+select * from t1;
+connection master;
+
+
+set binlog_format=row;
+insert into t1 (pr_page, pr_type, test) values(3,"three",0),(4,"four",4),(5, "five", 0);
+replace into t1 (pr_page, pr_type,test) values(3,"one",2);
+update t1 set test=test+1 where pr_page > 3;
+delete from t1 where test=1;
+
+select * from t1;
+sync_slave_with_master;
+connection slave;
+select * from t1;
+connection master;
+
+
+set binlog_row_image=minimal;
+insert into t1 (pr_page, pr_type, test) values(6,"six",0),(7,"seven",7),(8, "eight", 0);
+replace into t1 (pr_page, pr_type,test) values(6,"six",2);
+update t1 set test=test+1 where pr_page > 6;
+delete from t1 where test=1;
+
+select * from t1;
+sync_slave_with_master;
+connection slave;
+select * from t1;
+connection master;
+drop table t1;
+
+set global log_bin_compress=@old_log_bin_compress;
+set global log_bin_compress_min_len=@old_log_bin_compress_min_len;
+set binlog_format=@old_binlog_format;
+set binlog_row_image=@old_binlog_row_image;
+--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test b/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
index 575fdb2e89d..e5e2f7a381d 100644
--- a/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
+++ b/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
@@ -524,6 +524,7 @@ CREATE TABLE t11 (song VARCHAR(255));
LOCK TABLES t11 WRITE;
SET SESSION BINLOG_FORMAT=ROW;
INSERT INTO t11 VALUES('Several Species of Small Furry Animals Gathered Together in a Cave and Grooving With a Pict');
+--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
SET SESSION BINLOG_FORMAT=STATEMENT;
INSERT INTO t11 VALUES('Careful With That Axe, Eugene');
UNLOCK TABLES;
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
index 8e364e6fd50..d87d52c850a 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
@@ -537,6 +537,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST none,zlib,lz4,lzo,lzma,bzip2,snappy
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME INNODB_COMPRESSION_DEFAULT
+SESSION_VALUE OFF
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Is compression the default for new tables
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_COMPRESSION_FAILURE_THRESHOLD_PCT
SESSION_VALUE NULL
GLOBAL_VALUE 5
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
index 335716e3df3..b435844b4b5 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
@@ -1619,6 +1619,34 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME LOG_BIN_COMPRESS
+SESSION_VALUE NULL
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Whether the binary log can be compressed
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_BIN_COMPRESS_MIN_LEN
+SESSION_VALUE NULL
+GLOBAL_VALUE 256
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 256
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT Minimum length of sql statement(in statement mode) or record(in row mode)that can be compressed.
+NUMERIC_MIN_VALUE 10
+NUMERIC_MAX_VALUE 1024
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME LOG_BIN_TRUST_FUNCTION_CREATORS
SESSION_VALUE NULL
GLOBAL_VALUE ON
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
index 7ed7f1a7c10..34ea2e09f3c 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
@@ -1,5 +1,5 @@
---- suite/sys_vars/r/sysvars_server_notembedded.result 2016-10-21 18:47:47.000000000 +0300
-+++ suite/sys_vars/r/sysvars_server_notembedded.reject 2016-10-24 02:02:03.000000000 +0300
+--- suite/sys_vars/r/sysvars_server_notembedded.result 2016-11-03 17:27:47.664855681 +0100
++++ suite/sys_vars/r/sysvars_server_notembedded.reject 2016-11-03 17:23:05.686196749 +0100
@@ -57,7 +57,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
@@ -296,7 +296,7 @@
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -1877,7 +1877,7 @@
+@@ -1905,7 +1905,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -305,7 +305,7 @@
VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1919,7 +1919,7 @@
+@@ -1947,7 +1947,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -314,7 +314,7 @@
VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1975,7 +1975,7 @@
+@@ -2003,7 +2003,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4194304
VARIABLE_SCOPE SESSION
@@ -323,7 +323,7 @@
VARIABLE_COMMENT Max packet length to send to or receive from the server
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -1985,14 +1985,14 @@
+@@ -2013,14 +2013,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_CACHE_SIZE
SESSION_VALUE NULL
@@ -341,7 +341,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2003,7 +2003,7 @@
+@@ -2031,7 +2031,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -350,7 +350,7 @@
VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 1073741824
-@@ -2013,14 +2013,14 @@
+@@ -2041,14 +2041,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_STMT_CACHE_SIZE
SESSION_VALUE NULL
@@ -368,7 +368,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2031,7 +2031,7 @@
+@@ -2059,7 +2059,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 151
VARIABLE_SCOPE GLOBAL
@@ -377,7 +377,7 @@
VARIABLE_COMMENT The number of simultaneous clients allowed
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -2045,7 +2045,7 @@
+@@ -2073,7 +2073,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -386,7 +386,7 @@
VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2059,7 +2059,7 @@
+@@ -2087,7 +2087,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -395,7 +395,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -2087,7 +2087,7 @@
+@@ -2115,7 +2115,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 64
VARIABLE_SCOPE SESSION
@@ -404,7 +404,7 @@
VARIABLE_COMMENT Max number of errors/warnings to store for a statement
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -2104,7 +2104,7 @@
+@@ -2132,7 +2132,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't allow creation of heap tables bigger than this
NUMERIC_MIN_VALUE 16384
@@ -413,7 +413,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2115,7 +2115,7 @@
+@@ -2143,7 +2143,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -422,7 +422,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -2143,7 +2143,7 @@
+@@ -2171,7 +2171,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -431,7 +431,7 @@
VARIABLE_COMMENT Max number of bytes in sorted records
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2157,7 +2157,7 @@
+@@ -2185,7 +2185,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -440,7 +440,7 @@
VARIABLE_COMMENT The maximum BLOB length to send to server from mysql_send_long_data API. Deprecated option; use max_allowed_packet instead.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -2171,7 +2171,7 @@
+@@ -2199,7 +2199,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16382
VARIABLE_SCOPE GLOBAL
@@ -449,7 +449,7 @@
VARIABLE_COMMENT Maximum number of prepared statements in the server
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2185,7 +2185,7 @@
+@@ -2213,7 +2213,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -458,7 +458,7 @@
VARIABLE_COMMENT Maximum number of iterations when executing recursive queries
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2213,7 +2213,7 @@
+@@ -2241,7 +2241,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -467,7 +467,7 @@
VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2227,7 +2227,7 @@
+@@ -2255,7 +2255,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -476,7 +476,7 @@
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2241,7 +2241,7 @@
+@@ -2269,7 +2269,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -485,7 +485,7 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -2269,7 +2269,7 @@
+@@ -2297,7 +2297,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32
VARIABLE_SCOPE SESSION
@@ -494,7 +494,7 @@
VARIABLE_COMMENT Unused, will be removed.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2297,7 +2297,7 @@
+@@ -2325,7 +2325,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE GLOBAL
@@ -503,7 +503,7 @@
VARIABLE_COMMENT After this many write locks, allow some read locks to run in between
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2311,7 +2311,7 @@
+@@ -2339,7 +2339,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -512,7 +512,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -2325,7 +2325,7 @@
+@@ -2353,7 +2353,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8
VARIABLE_SCOPE GLOBAL
@@ -521,7 +521,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2339,7 +2339,7 @@
+@@ -2367,7 +2367,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -530,7 +530,7 @@
VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2353,7 +2353,7 @@
+@@ -2381,7 +2381,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -539,7 +539,7 @@
VARIABLE_COMMENT Size of buffer to use when using MRR with range access
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -2367,10 +2367,10 @@
+@@ -2395,10 +2395,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE SESSION
@@ -552,7 +552,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2381,7 +2381,7 @@
+@@ -2409,7 +2409,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -561,7 +561,7 @@
VARIABLE_COMMENT Block size to be used for MyISAM index pages
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 16384
-@@ -2395,7 +2395,7 @@
+@@ -2423,7 +2423,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 6
VARIABLE_SCOPE GLOBAL
@@ -570,7 +570,7 @@
VARIABLE_COMMENT Default pointer size to be used for MyISAM tables
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 7
-@@ -2405,9 +2405,9 @@
+@@ -2433,9 +2433,9 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MAX_SORT_FILE_SIZE
SESSION_VALUE NULL
@@ -582,7 +582,7 @@
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't use the fast sort index method to created index if the temporary file would get bigger than this
-@@ -2419,14 +2419,14 @@
+@@ -2447,14 +2447,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MMAP_SIZE
SESSION_VALUE NULL
@@ -600,7 +600,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2451,10 +2451,10 @@
+@@ -2479,10 +2479,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -613,7 +613,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2468,7 +2468,7 @@
+@@ -2496,7 +2496,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE
NUMERIC_MIN_VALUE 4096
@@ -622,7 +622,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2521,7 +2521,7 @@
+@@ -2549,7 +2549,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -631,7 +631,7 @@
VARIABLE_COMMENT Buffer length for TCP/IP and socket communication
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1048576
-@@ -2535,7 +2535,7 @@
+@@ -2563,7 +2563,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 30
VARIABLE_SCOPE SESSION
@@ -640,7 +640,7 @@
VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2549,7 +2549,7 @@
+@@ -2577,7 +2577,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE SESSION
@@ -649,7 +649,7 @@
VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2563,7 +2563,7 @@
+@@ -2591,7 +2591,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 60
VARIABLE_SCOPE SESSION
@@ -658,7 +658,7 @@
VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2633,7 +2633,7 @@
+@@ -2661,7 +2661,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -667,7 +667,7 @@
VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1
-@@ -2647,7 +2647,7 @@
+@@ -2675,7 +2675,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 62
VARIABLE_SCOPE SESSION
@@ -676,7 +676,7 @@
VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 62
-@@ -2661,7 +2661,7 @@
+@@ -2689,7 +2689,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE SESSION
@@ -685,7 +685,7 @@
VARIABLE_COMMENT Controls number of record samples to check condition selectivity
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 4294967295
-@@ -2689,7 +2689,7 @@
+@@ -2717,7 +2717,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -694,7 +694,7 @@
VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5
-@@ -2717,7 +2717,7 @@
+@@ -2745,7 +2745,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -703,7 +703,7 @@
VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2731,7 +2731,7 @@
+@@ -2759,7 +2759,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -712,7 +712,7 @@
VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 200
-@@ -2745,7 +2745,7 @@
+@@ -2773,7 +2773,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -721,7 +721,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2759,7 +2759,7 @@
+@@ -2787,7 +2787,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -730,7 +730,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2773,7 +2773,7 @@
+@@ -2801,7 +2801,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -739,7 +739,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2787,7 +2787,7 @@
+@@ -2815,7 +2815,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -748,7 +748,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2801,7 +2801,7 @@
+@@ -2829,7 +2829,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -757,7 +757,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2815,7 +2815,7 @@
+@@ -2843,7 +2843,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -766,7 +766,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2829,7 +2829,7 @@
+@@ -2857,7 +2857,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -775,7 +775,7 @@
VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2843,7 +2843,7 @@
+@@ -2871,7 +2871,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 80
VARIABLE_SCOPE GLOBAL
@@ -784,7 +784,7 @@
VARIABLE_COMMENT Maximum number of condition instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2857,7 +2857,7 @@
+@@ -2885,7 +2885,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -793,7 +793,7 @@
VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2871,7 +2871,7 @@
+@@ -2899,7 +2899,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -802,7 +802,7 @@
VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2885,7 +2885,7 @@
+@@ -2913,7 +2913,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -811,7 +811,7 @@
VARIABLE_COMMENT Maximum number of file instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2899,7 +2899,7 @@
+@@ -2927,7 +2927,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE GLOBAL
@@ -820,7 +820,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented files.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2913,7 +2913,7 @@
+@@ -2941,7 +2941,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -829,7 +829,7 @@
VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2927,7 +2927,7 @@
+@@ -2955,7 +2955,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 200
VARIABLE_SCOPE GLOBAL
@@ -838,7 +838,7 @@
VARIABLE_COMMENT Maximum number of mutex instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2941,7 +2941,7 @@
+@@ -2969,7 +2969,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -847,7 +847,7 @@
VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2955,7 +2955,7 @@
+@@ -2983,7 +2983,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 40
VARIABLE_SCOPE GLOBAL
@@ -856,7 +856,7 @@
VARIABLE_COMMENT Maximum number of rwlock instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2969,7 +2969,7 @@
+@@ -2997,7 +2997,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -865,7 +865,7 @@
VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2983,7 +2983,7 @@
+@@ -3011,7 +3011,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -874,7 +874,7 @@
VARIABLE_COMMENT Maximum number of socket instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2997,7 +2997,7 @@
+@@ -3025,7 +3025,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -883,7 +883,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3011,7 +3011,7 @@
+@@ -3039,7 +3039,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 150
VARIABLE_SCOPE GLOBAL
@@ -892,7 +892,7 @@
VARIABLE_COMMENT Maximum number of stage instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3025,7 +3025,7 @@
+@@ -3053,7 +3053,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 185
VARIABLE_SCOPE GLOBAL
@@ -901,7 +901,7 @@
VARIABLE_COMMENT Maximum number of statement instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3039,7 +3039,7 @@
+@@ -3067,7 +3067,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -910,7 +910,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3053,7 +3053,7 @@
+@@ -3081,7 +3081,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -919,7 +919,7 @@
VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3067,7 +3067,7 @@
+@@ -3095,7 +3095,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -928,7 +928,7 @@
VARIABLE_COMMENT Maximum number of thread instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3081,7 +3081,7 @@
+@@ -3109,7 +3109,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -937,7 +937,7 @@
VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3095,7 +3095,7 @@
+@@ -3123,7 +3123,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -946,7 +946,7 @@
VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3109,7 +3109,7 @@
+@@ -3137,7 +3137,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -955,7 +955,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1024
-@@ -3123,7 +3123,7 @@
+@@ -3151,7 +3151,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -964,7 +964,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -3137,7 +3137,7 @@
+@@ -3165,7 +3165,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -973,7 +973,7 @@
VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3207,7 +3207,7 @@
+@@ -3235,7 +3235,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE SESSION
@@ -982,7 +982,7 @@
VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3235,7 +3235,7 @@
+@@ -3263,7 +3263,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 15
VARIABLE_SCOPE SESSION
@@ -991,7 +991,7 @@
VARIABLE_COMMENT Limit of query profiling memory
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -3249,7 +3249,7 @@
+@@ -3277,7 +3277,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 5
VARIABLE_SCOPE SESSION
@@ -1000,7 +1000,7 @@
VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3319,7 +3319,7 @@
+@@ -3347,7 +3347,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -1009,7 +1009,7 @@
VARIABLE_COMMENT Allocation block size for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3333,7 +3333,7 @@
+@@ -3361,7 +3361,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -1018,7 +1018,7 @@
VARIABLE_COMMENT Don't cache results that are bigger than this
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3347,7 +3347,7 @@
+@@ -3375,7 +3375,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE GLOBAL
@@ -1027,7 +1027,7 @@
VARIABLE_COMMENT The minimum size for blocks allocated by the query cache
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3364,7 +3364,7 @@
+@@ -3392,7 +3392,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The memory allocated to store results from old queries
NUMERIC_MIN_VALUE 0
@@ -1036,7 +1036,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3417,7 +3417,7 @@
+@@ -3445,7 +3445,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 24576
VARIABLE_SCOPE SESSION
@@ -1045,7 +1045,7 @@
VARIABLE_COMMENT Persistent buffer for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3431,7 +3431,7 @@
+@@ -3459,7 +3459,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1054,7 +1054,7 @@
VARIABLE_COMMENT Allocation block size for storing ranges during optimization
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 4294967295
-@@ -3448,7 +3448,7 @@
+@@ -3476,7 +3476,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Maximum speed(KB/s) to read binlog from master (0 = no limit)
NUMERIC_MIN_VALUE 0
@@ -1063,7 +1063,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3459,7 +3459,7 @@
+@@ -3487,7 +3487,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 131072
VARIABLE_SCOPE SESSION
@@ -1072,7 +1072,7 @@
VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -3487,7 +3487,7 @@
+@@ -3515,7 +3515,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -1081,7 +1081,7 @@
VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 2147483647
-@@ -3767,10 +3767,10 @@
+@@ -3795,10 +3795,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8388608
VARIABLE_SCOPE SESSION
@@ -1094,7 +1094,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3809,7 +3809,7 @@
+@@ -3837,7 +3837,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -1103,7 +1103,7 @@
VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -3991,7 +3991,7 @@
+@@ -4019,7 +4019,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1112,7 +1112,7 @@
VARIABLE_COMMENT Maximum number of parallel threads to use on slave for events in a single replication domain. When using multiple domains, this can be used to limit a single domain from grabbing all threads and thus stalling other domains. The default of 0 means to allow a domain to grab as many threads as it wants, up to the value of slave_parallel_threads.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4033,7 +4033,7 @@
+@@ -4061,7 +4061,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -1121,7 +1121,7 @@
VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -4061,7 +4061,7 @@
+@@ -4089,7 +4089,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 131072
VARIABLE_SCOPE GLOBAL
@@ -1130,7 +1130,7 @@
VARIABLE_COMMENT Limit on how much memory SQL threads should use per parallel replication thread when reading ahead in the relay log looking for opportunities for parallel replication. Only used when --slave-parallel-threads > 0.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2147483647
-@@ -4089,7 +4089,7 @@
+@@ -4117,7 +4117,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1139,7 +1139,7 @@
VARIABLE_COMMENT If non-zero, number of threads to spawn to apply in parallel events on the slave that were group-committed on the master or were logged with GTID in different replication domains. Note that these threads are in addition to the IO and SQL threads, which are always created by a replication slave
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4103,7 +4103,7 @@
+@@ -4131,7 +4131,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1148,7 +1148,7 @@
VARIABLE_COMMENT Alias for slave_parallel_threads
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4159,7 +4159,7 @@
+@@ -4187,7 +4187,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -1157,7 +1157,7 @@
VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout, before giving up and stopping
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -4187,7 +4187,7 @@
+@@ -4215,7 +4215,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL
@@ -1166,7 +1166,7 @@
VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -4246,7 +4246,7 @@
+@@ -4274,7 +4274,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size
NUMERIC_MIN_VALUE 1024
@@ -1175,7 +1175,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4551,7 +4551,7 @@
+@@ -4579,7 +4579,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1184,7 +1184,7 @@
VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 524288
-@@ -4649,7 +4649,7 @@
+@@ -4677,7 +4677,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 400
VARIABLE_SCOPE GLOBAL
@@ -1193,7 +1193,7 @@
VARIABLE_COMMENT The number of cached table definitions
NUMERIC_MIN_VALUE 400
NUMERIC_MAX_VALUE 524288
-@@ -4663,7 +4663,7 @@
+@@ -4691,7 +4691,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2000
VARIABLE_SCOPE GLOBAL
@@ -1202,7 +1202,7 @@
VARIABLE_COMMENT The number of cached open tables
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 524288
-@@ -4691,7 +4691,7 @@
+@@ -4719,7 +4719,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1211,7 +1211,7 @@
VARIABLE_COMMENT How many threads we should keep in a cache for reuse. These are freed after 5 minutes of idle time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -4705,7 +4705,7 @@
+@@ -4733,7 +4733,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -1220,7 +1220,7 @@
VARIABLE_COMMENT Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.This variable has no effect, and is deprecated. It will be removed in a future release.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 512
-@@ -4918,7 +4918,7 @@
+@@ -4946,7 +4946,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MySQL will automatically convert it to an on-disk MyISAM or Aria table
NUMERIC_MIN_VALUE 1024
@@ -1229,7 +1229,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4929,7 +4929,7 @@
+@@ -4957,7 +4957,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8192
VARIABLE_SCOPE SESSION
@@ -1238,7 +1238,7 @@
VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -4943,7 +4943,7 @@
+@@ -4971,7 +4971,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1247,7 +1247,7 @@
VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -5041,7 +5041,7 @@
+@@ -5069,7 +5069,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 28800
VARIABLE_SCOPE SESSION
@@ -1256,7 +1256,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -5145,7 +5145,7 @@
+@@ -5173,7 +5173,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME OPEN_FILES_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -1265,7 +1265,7 @@
VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -5158,7 +5158,7 @@
+@@ -5186,7 +5186,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1274,7 +1274,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -5168,7 +5168,7 @@
+@@ -5196,7 +5196,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1283,7 +1283,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -5253,7 +5253,7 @@
+@@ -5281,7 +5281,7 @@
VARIABLE_NAME LOG_TC_SIZE
GLOBAL_VALUE_ORIGIN AUTO
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index 6cc43cdc1dc..a7d0cc0f804 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -1759,6 +1759,34 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME LOG_BIN_COMPRESS
+SESSION_VALUE NULL
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Whether the binary log can be compressed
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_BIN_COMPRESS_MIN_LEN
+SESSION_VALUE NULL
+GLOBAL_VALUE 256
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 256
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT Minimum length of sql statement(in statement mode) or record(in row mode)that can be compressed.
+NUMERIC_MIN_VALUE 10
+NUMERIC_MAX_VALUE 1024
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME LOG_BIN_INDEX
SESSION_VALUE NULL
GLOBAL_VALUE
diff --git a/mysql-test/t/cte_recursive.test b/mysql-test/t/cte_recursive.test
index 8a07b3ae75a..63bcfbffeb9 100644
--- a/mysql-test/t/cte_recursive.test
+++ b/mysql-test/t/cte_recursive.test
@@ -1361,4 +1361,126 @@ select * from t1;
drop table t1,t2;
+--echo #
+--echo # MDEV-11278: non-mergeable view in the spec of recursive CTE
+--echo #
+
+create table t1 (a int);
+insert into t1 values
+ (0), (1), (2), (3), (4);
+create table t2 (a int);
+insert into t2 values
+ (1), (2), (3), (4), (5);
+
+create view v1 as
+ select a from t2 where a < 3
+ union
+ select a from t2 where a > 4;
+
+with recursive
+t1 as
+(
+select a from v1 where a=1
+union
+select v1.a from t1,v1 where t1.a+1=v1.a
+)
+select * from t1;
+
+drop view v1;
+drop table t1,t2;
+
+
+--echo #
+--echo # MDEV-11259: recursive CTE with concatenation operation
+--echo #
+
+DROP TABLE IF EXISTS edges;
+CREATE TABLE edges(
+ a int(10) unsigned NOT NULL,
+ b int(10) unsigned NOT NULL,
+ PRIMARY KEY (a,b),
+ KEY b(b)
+);
+
+INSERT INTO edges
+ VALUES (1,3),(2,1),(2,4),(3,4),(3,5),(3,6),(4,7),(5,1),(5,6),(6,1);
+
+DROP TABLE IF EXISTS edges2;
+CREATE VIEW edges2 (a, b) AS
+ SELECT a, b FROM edges UNION ALL SELECT b, a FROM edges;
+
+--sorted_result
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+ concat(a, '.', b, '.') AS path_string
+ FROM edges
+
+ UNION ALL
+
+ SELECT tc.a, e.b, tc.distance + 1,
+ concat(tc.path_string, e.b, '.') AS path_string
+ FROM edges AS e
+ JOIN transitive_closure AS tc
+ ON e.a = tc.b
+ WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT * FROM transitive_closure
+ORDER BY a, b, distance;
+
+--sorted_result
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+ concat(a, '.', b, '.') AS path_string
+ FROM edges
+ WHERE a = 1 -- source
+
+ UNION ALL
+
+ SELECT tc.a, e.b, tc.distance + 1,
+ concat(tc.path_string, e.b, '.') AS path_string
+ FROM edges AS e
+ JOIN transitive_closure AS tc ON e.a = tc.b
+ WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+ SELECT * FROM transitive_closure
+ WHERE b = 6 -- destination
+ORDER BY a, b, distance;
+
+--sorted_result
+WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
+( SELECT a, b, 1 AS distance,
+ concat(a, '.', b, '.') AS path_string
+ FROM edges2
+
+ UNION ALL
+
+ SELECT tc.a, e.b, tc.distance + 1,
+ concat(tc.path_string, e.b, '.') AS path_string
+ FROM edges2 AS e
+ JOIN transitive_closure AS tc ON e.a = tc.b
+ WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT * FROM transitive_closure
+ORDER BY a, b, distance;
+
+--sorted_result
+WITH RECURSIVE transitive_closure(a, b, distance, path_string)
+AS
+( SELECT a, b, 1 AS distance,
+ concat(a, '.', b, '.') AS path_string
+ FROM edges2
+
+ UNION ALL
+
+ SELECT tc.a, e.b, tc.distance + 1,
+ concat(tc.path_string, e.b, '.') AS path_string
+ FROM edges2 AS e
+ JOIN transitive_closure AS tc ON e.a = tc.b
+ WHERE tc.path_string NOT LIKE concat('%', e.b, '.%')
+)
+SELECT a, b, min(distance) AS dist FROM transitive_closure
+GROUP BY a, b
+ORDER BY a, dist, b;
+DROP VIEW edges2;
+DROP TABLE edges;
diff --git a/mysql-test/t/ctype_ldml.test b/mysql-test/t/ctype_ldml.test
index 956e48ba4af..1d58daa89e4 100644
--- a/mysql-test/t/ctype_ldml.test
+++ b/mysql-test/t/ctype_ldml.test
@@ -499,3 +499,106 @@ SELECT HEX(a), REPLACE(a,' ','<SP>') FROM t1 WHERE a='a';
SELECT HEX(a), REPLACE(a,' ','<SP>') FROM t1 ORDER BY a;
SELECT HEX(a), REPLACE(a,' ','<SP>') FROM t1 ORDER BY a DESC;
DROP TABLE t1;
+
+
+SET NAMES utf8 COLLATE utf8_czech_test_w2;
+CREATE TABLE t1 AS SELECT SPACE(10) AS c1 LIMIT 0;
+--source include/ctype_unicode_latin.inc
+INSERT INTO t1 VALUES ('a ');
+SELECT c1, HEX(WEIGHT_STRING(c1 LEVEL 1)), HEX(WEIGHT_STRING(c1 LEVEL 2)) FROM t1 ORDER BY c1, BINARY c1;
+SELECT c1, HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)), HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2)) FROM t1 WHERE c1 BETWEEN 'a' AND 'aZ' ORDER BY c1, BINARY c1;
+DROP TABLE t1;
+
+SELECT 'a' = 'a ';
+SELECT 'a' < 'á';
+SELECT 'áa' < 'ab';
+SELECT 'á' < 'ä';
+SELECT 'äa' < 'áb';
+SELECT 'c' < 'č';
+SELECT 'cb' < 'ča';
+SELECT 'd' < 'ď';
+SELECT 'ďa' < 'db';
+SELECT 'e' < 'é';
+SELECT 'éa' < 'eb';
+SELECT 'é' < 'ě';
+SELECT 'ěa' < 'éb';
+SELECT 'i' < 'í';
+SELECT 'ía' < 'ib';
+SELECT 'n' < 'ň';
+SELECT 'ňa' < 'nb';
+SELECT 'o' < 'ó';
+SELECT 'óa' < 'ob';
+SELECT 'ó' < 'ö';
+SELECT 'öa' < 'ób';
+SELECT 'r' < 'ř';
+SELECT 'rb' < 'řa';
+SELECT 's' < 'š';
+SELECT 'sb' < 'ša';
+SELECT 't' < 'ť';
+SELECT 'ťa' < 'tb';
+SELECT 'u' < 'ú';
+SELECT 'úa' < 'ub';
+SELECT 'ú' < 'ů';
+SELECT 'ůa' < 'úb';
+SELECT 'ů' < 'ü';
+SELECT 'üa' < 'ůb';
+SELECT 'y' < 'ý';
+SELECT 'ýa' < 'yb';
+SELECT 'z' < 'ž';
+SELECT 'zb' < 'ža';
+SELECT 'hž' < 'ch';
+SELECT 'chž'< 'i';
+
+
+
+SET NAMES utf8 COLLATE utf8_czech_test_nopad_w2;
+CREATE TABLE t1 AS SELECT SPACE(10) AS c1 LIMIT 0;
+--source include/ctype_unicode_latin.inc
+INSERT INTO t1 VALUES ('a ');
+SELECT c1, HEX(WEIGHT_STRING(c1 LEVEL 1)), HEX(WEIGHT_STRING(c1 LEVEL 2)) FROM t1 ORDER BY c1, BINARY c1;
+SELECT c1, HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 1)), HEX(WEIGHT_STRING(c1 AS CHAR(3) LEVEL 2)) FROM t1 WHERE c1 BETWEEN 'a' AND 'aZ' ORDER BY c1, BINARY c1;
+DROP TABLE t1;
+
+SELECT 'a' = 'a ';
+SELECT 'a' < 'á';
+SELECT 'áa' < 'ab';
+SELECT 'á' < 'ä';
+SELECT 'äa' < 'áb';
+SELECT 'c' < 'č';
+SELECT 'cb' < 'ča';
+SELECT 'd' < 'ď';
+SELECT 'ďa' < 'db';
+SELECT 'e' < 'é';
+SELECT 'éa' < 'eb';
+SELECT 'é' < 'ě';
+SELECT 'ěa' < 'éb';
+SELECT 'i' < 'í';
+SELECT 'ía' < 'ib';
+SELECT 'n' < 'ň';
+SELECT 'ňa' < 'nb';
+SELECT 'o' < 'ó';
+SELECT 'óa' < 'ob';
+SELECT 'ó' < 'ö';
+SELECT 'öa' < 'ób';
+SELECT 'r' < 'ř';
+SELECT 'rb' < 'řa';
+SELECT 's' < 'š';
+SELECT 'sb' < 'ša';
+SELECT 't' < 'ť';
+SELECT 'ťa' < 'tb';
+SELECT 'u' < 'ú';
+SELECT 'úa' < 'ub';
+SELECT 'ú' < 'ů';
+SELECT 'ůa' < 'úb';
+SELECT 'ů' < 'ü';
+SELECT 'üa' < 'ůb';
+SELECT 'y' < 'ý';
+SELECT 'ýa' < 'yb';
+SELECT 'z' < 'ž';
+SELECT 'zb' < 'ža';
+SELECT 'hž' < 'ch';
+SELECT 'chž'< 'i';
+
+
+--error ER_UNKNOWN_COLLATION
+SELECT 'a' COLLATE utf8_czech_test_bad_w2;
diff --git a/mysql-test/t/derived_cond_pushdown.test b/mysql-test/t/derived_cond_pushdown.test
index 9aef1d768be..01d8501016a 100644
--- a/mysql-test/t/derived_cond_pushdown.test
+++ b/mysql-test/t/derived_cond_pushdown.test
@@ -951,3 +951,40 @@ select * from
order by a limit 5) t where t.a not in (2,9);
drop table t1;
+
+--echo #
+--echo # MDEV-11072: pushdown of the condition obtained
+--echo # after constant row substitution
+--echo #
+
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT);
+CREATE OR REPLACE VIEW v2 AS SELECT * FROM t2;
+CREATE TABLE t3 (c INT);
+CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
+
+SELECT * FROM t1 WHERE a IN (
+ SELECT b FROM v2 WHERE b < a OR b IN (
+ SELECT c FROM v3 WHERE c = a
+ )
+);
+
+INSERT INTO t1 VALUES (2);
+INSERT INTO t2 VALUES (3), (2);
+INSERT INTO t3 VALUES (4), (1), (2), (7);
+
+SELECT * FROM t1 WHERE a IN (
+ SELECT b FROM v2 WHERE b < a OR b IN (
+ SELECT c FROM v3 WHERE c = a
+ )
+);
+
+EXPLAIN FORMAT=JSON
+SELECT * FROM t1 WHERE a IN (
+ SELECT b FROM v2 WHERE b < a OR b IN (
+ SELECT c FROM v3 WHERE c = a
+ )
+);
+
+DROP VIEW v2,v3;
+DROP TABLE t1,t2,t3;
diff --git a/mysql-test/t/dyncol.test b/mysql-test/t/dyncol.test
index 49b2c5542d3..f8f198be445 100644
--- a/mysql-test/t/dyncol.test
+++ b/mysql-test/t/dyncol.test
@@ -805,24 +805,24 @@ select column_json(column_create(1, "val", 2, column_create(3, "val2")));
--echo # Time encoding
--echo #
select hex(column_create("t", "800:46:06.23434" AS time)) as hex,
- column_json(column_create("t", "800:46:06.23434" AS time)) as json;
+ column_json(column_create("t", "800:46:06.23434" AS time)) as js;
select hex(column_create(1, "800:46:06.23434" AS time)) as hex,
- column_json(column_create(1, "800:46:06.23434" AS time)) as json;
+ column_json(column_create(1, "800:46:06.23434" AS time)) as js;
select hex(column_create("t", "800:46:06" AS time)) as hex,
- column_json(column_create("t", "800:46:06" AS time)) as json;
+ column_json(column_create("t", "800:46:06" AS time)) as js;
select hex(column_create(1, "800:46:06" AS time)) as hex,
- column_json(column_create(1, "800:46:06" AS time)) as json;
+ column_json(column_create(1, "800:46:06" AS time)) as js;
select hex(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as hex,
- column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as json;
+ column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as js;
select hex(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as hex,
- column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as json;
+ column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as js;
select hex(column_create("t", "2012-12-21 10:46:06" AS datetime)) as hex,
- column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as json;
+ column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as js;
select hex(column_create(1, "2012-12-21 10:46:06" AS datetime)) as hex,
- column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as json;
+ column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as js;
--echo #
--echo # MDEV-4849: Out of memory error and valgrind warnings on COLUMN_ADD
diff --git a/mysql-test/t/func_json.test b/mysql-test/t/func_json.test
index 3990ff24fc4..ffe48b0f9db 100644
--- a/mysql-test/t/func_json.test
+++ b/mysql-test/t/func_json.test
@@ -19,6 +19,11 @@ select json_array(1, "text", false, null);
select json_array_append('["a", "b"]', '$', FALSE);
select json_array_append('{"k1":1, "k2":["a", "b"]}', '$.k2', 2);
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[1]', 'x');
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[2]', 'x');
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[3]', 'x');
+SELECT JSON_ARRAY_INSERT('["a", {"b": [1, 2]}, [3, 4]]', '$[4]', 'x');
+
select json_contains('{"k1":123, "k2":345}', '123', '$.k1');
select json_contains('"you"', '"you"');
select json_contains('"youth"', '"you"');
@@ -37,6 +42,24 @@ select json_extract('{"key1":"asd", "key2":[2,3]}', "$.key1", "$.key2");
select json_extract('{"key1":5, "key2":[2,3]}', "$.key1", "$.key2");
select json_extract('{"key0":true, "key1":"qwe"}', "$.key1");
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.k1', 'word');
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.d[3]', 3);
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.a[2]', 2);
+select json_insert('{"a":1, "b":{"c":1}, "d":[1, 2]}', '$.b.c', 'word');
+
+select json_set('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]');
+
+select json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.c', '[true, false]');
+select json_replace('{ "a": 1, "b": [2, 3]}', '$.a', 10, '$.b', '[true, false]');
+
+set @j = '["a", ["b", "c"], "d"]';
+select json_remove(@j, '$[0]');
+select json_remove(@j, '$[1]');
+select json_remove(@j, '$[2]');
+set @j = '{"a": 1, "b": [2, 3]}';
+select json_remove(@j, '$.b');
+select json_remove(@j, '$.a');
+
select json_object("ki", 1, "mi", "ya");
select json_exists('{"key1":"xxxx", "key2":[1, 2, 3]}', "$.key2");
@@ -52,3 +75,23 @@ select json_type('[123, "k2", 345]');
select json_type("true");
select json_type('123');
+select json_keys('{"a":{"c":1, "d":2}, "b":2}');
+select json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.a");
+select json_keys('{"a":{"c":1, "d":2}, "b":2}', "$.b");
+
+SET @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';
+select json_search(@j, 'one', 'abc');
+select json_search(@j, 'all', 'abc');
+select json_search(@j, 'all', 'abc', NULL, '$[2]');
+select json_search(@j, 'all', 'abc', NULL, '$');
+select json_search(@j, 'all', '10', NULL, '$');
+select json_search(@j, 'all', '10', NULL, '$[*]');
+select json_search(@j, 'all', '10', NULL, '$[*][0].k');
+
+
+select json_unquote('"abc"');
+
+select json_object("a", json_object("b", "abcd"));
+select json_object("a", '{"b": "abcd"}');
+select json_object("a", cast('{"b": "abcd"}' as json));
+
diff --git a/mysql-test/t/innodb_mysql_lock.test b/mysql-test/t/innodb_mysql_lock.test
index cb57c092e40..85ba41860df 100644
--- a/mysql-test/t/innodb_mysql_lock.test
+++ b/mysql-test/t/innodb_mysql_lock.test
@@ -150,14 +150,16 @@ let $wait_condition=
--source include/wait_condition.inc
LOCK TABLES t1 READ;
SELECT release_lock('bug42147_lock');
+let $wait_condition=
+ SELECT COUNT(*) > 0 FROM information_schema.processlist
+ WHERE state = 'executing'
+ AND info = 'INSERT INTO t1 SELECT get_lock(\'bug42147_lock\', 60)';
+--source include/wait_condition.inc
+UNLOCK TABLES;
connection default;
--reap
-connection con2;
-UNLOCK TABLES;
-
-connection default;
disconnect con2;
DROP TABLE t1;
diff --git a/mysql-test/t/lock_sync.test b/mysql-test/t/lock_sync.test
index c090e3a1d93..07c16acc72a 100644
--- a/mysql-test/t/lock_sync.test
+++ b/mysql-test/t/lock_sync.test
@@ -406,6 +406,12 @@ let $restore_table= t2;
--echo # 2.8 REPLACE with a subquery.
--echo #
--echo # Same is true for this statement as well.
+
+--echo # Suppress warnings for REPLACE ... SELECT
+--disable_query_log
+call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+--enable_query_log
+
let $statement= replace into t2 select i+5 from t1;
let $restore_table= t2;
--source include/check_no_concurrent_insert.inc
@@ -873,116 +879,6 @@ set @@global.concurrent_insert= @old_concurrent_insert;
--echo #
---echo # Test for bug #45143 "All connections hang on concurrent ALTER TABLE".
---echo #
---echo # Concurrent execution of statements which required weak write lock
---echo # (TL_WRITE_ALLOW_WRITE) on several instances of the same table and
---echo # statements which tried to acquire stronger write lock (TL_WRITE,
---echo # TL_WRITE_ALLOW_READ) on this table might have led to deadlock.
-#
-# Suppress warnings for INSERTs that use get_lock().
-#
-disable_query_log;
-call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-enable_query_log;
-
---disable_warnings
-drop table if exists t1;
-drop view if exists v1;
---enable_warnings
---echo # Create auxiliary connections used through the test.
-connect (con_bug45143_1,localhost,root,,test,,);
-connect (con_bug45143_3,localhost,root,,test,,);
-connect (con_bug45143_2,localhost,root,,test,,);
-connection default;
---echo # Reset DEBUG_SYNC facility before using it.
-set debug_sync= 'RESET';
---echo # Turn off logging so calls to locking subsystem performed
---echo # for general_log table won't interfere with our test.
-set @old_general_log = @@global.general_log;
-set @@global.general_log= OFF;
-
-create table t1 (i int) engine=InnoDB;
---echo # We have to use view in order to make LOCK TABLES avoid
---echo # acquiring SNRW metadata lock on table.
-create view v1 as select * from t1;
-insert into t1 values (1);
---echo # Prepare user lock which will be used for resuming execution of
---echo # the first statement after it acquires TL_WRITE_ALLOW_WRITE lock.
-select get_lock("lock_bug45143_wait", 0);
-
-connection con_bug45143_1;
---echo # Sending:
---send insert into t1 values (get_lock("lock_bug45143_wait", 100));
-
-connection con_bug45143_2;
---echo # Wait until the above INSERT takes TL_WRITE_ALLOW_WRITE lock on 't1'
---echo # and then gets blocked on user lock 'lock_bug45143_wait'.
-let $wait_condition= select count(*)= 1 from information_schema.processlist
- where state= 'User lock' and
- info='insert into t1 values (get_lock("lock_bug45143_wait", 100))';
---source include/wait_condition.inc
---echo # Ensure that upcoming SELECT waits after acquiring TL_WRITE_ALLOW_WRITE
---echo # lock for the first instance of 't1'.
-set debug_sync='thr_multi_lock_after_thr_lock SIGNAL parked WAIT_FOR go';
---echo # Sending:
---send select count(*) > 0 from t1 as a, t1 as b for update;
-
-connection con_bug45143_3;
---echo # Wait until the above SELECT ... FOR UPDATE is blocked after
---echo # acquiring lock for the the first instance of 't1'.
-set debug_sync= 'now WAIT_FOR parked';
---echo # Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1':
---send lock table v1 write;
-
-connection default;
---echo # Wait until this LOCK TABLES statement starts waiting for table lock.
-let $wait_condition= select count(*)= 1 from information_schema.processlist
- where state= 'Waiting for table level lock' and
- info='lock table v1 write';
---source include/wait_condition.inc
---echo # Allow SELECT ... FOR UPDATE to resume.
---echo # Since it already has TL_WRITE_ALLOW_WRITE lock on the first instance
---echo # of 't1' it should be able to get lock on the second instance without
---echo # waiting, even although there is another thread which has such lock
---echo # on this table and also there is a thread waiting for a TL_WRITE on it.
-set debug_sync= 'now SIGNAL go';
-
-connection con_bug45143_2;
---echo # Reap SELECT ... FOR UPDATE
---reap
-
-connection default;
---echo # Resume execution of the INSERT statement.
-select release_lock("lock_bug45143_wait");
-
-connection con_bug45143_1;
---echo # Reap INSERT statement.
---echo # In Statement and Mixed replication mode we get here "Unsafe
---echo # for binlog" warnings. In row mode there are no warnings.
---echo # Hide the discrepancy.
---disable_warnings
---reap
---enable_warnings
-
-
-connection con_bug45143_3;
---echo # Reap LOCK TABLES statement.
---reap
-unlock tables;
-
-connection default;
---echo # Do clean-up.
-disconnect con_bug45143_1;
-disconnect con_bug45143_2;
-disconnect con_bug45143_3;
-set debug_sync= 'RESET';
-set @@global.general_log= @old_general_log;
-drop view v1;
-drop table t1;
-
-
---echo #
--echo # Bug#50821 Deadlock between LOCK TABLES and ALTER TABLE
--echo #
@@ -1051,55 +947,6 @@ SET DEBUG_SYNC="RESET";
--echo #
---echo # Bug#55930 Assertion `thd->transaction.stmt.is_empty() ||
---echo # thd->in_sub_stmt || (thd->state..
---echo #
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-CREATE TABLE t1(a INT) engine=InnoDB;
-INSERT INTO t1 VALUES (1), (2);
-
-connect (con1, localhost, root);
-connect (con2, localhost, root);
-
-connection con1;
-SET SESSION lock_wait_timeout= 1;
-SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL opti_recreate WAIT_FOR opti_analyze';
---echo # Sending:
---send OPTIMIZE TABLE t1
-
-connection con2;
-SET DEBUG_SYNC= 'now WAIT_FOR opti_recreate';
-SET DEBUG_SYNC= 'after_lock_tables_takes_lock SIGNAL thrlock WAIT_FOR release_thrlock';
---echo # Sending:
---send INSERT INTO t1 VALUES (3)
-
-connection default;
-SET DEBUG_SYNC= 'now WAIT_FOR thrlock';
-SET DEBUG_SYNC= 'now SIGNAL opti_analyze';
-
-connection con1;
---echo # Reaping: OPTIMIZE TABLE t1
---reap
-SET DEBUG_SYNC= 'now SIGNAL release_thrlock';
-disconnect con1;
---source include/wait_until_disconnected.inc
-
-connection con2;
---echo # Reaping: INSERT INTO t1 VALUES (3)
---reap
-disconnect con2;
---source include/wait_until_disconnected.inc
-
-connection default;
-DROP TABLE t1;
-SET DEBUG_SYNC= 'RESET';
-
-
---echo #
--echo # Bug#57130 crash in Item_field::print during SHOW CREATE TABLE or VIEW
--echo #
diff --git a/mysql-test/t/mdl_sync.test b/mysql-test/t/mdl_sync.test
index 0b6d6f58013..4aa191d3dfc 100644
--- a/mysql-test/t/mdl_sync.test
+++ b/mysql-test/t/mdl_sync.test
@@ -119,10 +119,6 @@ alter table t1 add index (not_exist);
--echo # lock.
--error ER_DUP_ENTRY
alter table t1 add primary key (c1);
---echo # Check that SNRW lock is compatible with S lock.
-lock table t1 write;
-insert into t1 values (1);
-unlock tables;
--echo # Check that X lock is incompatible with S lock.
--echo # Sending:
--send rename table t1 to t2;
@@ -172,35 +168,6 @@ connection mdl_con1;
alter table t1 drop column c2;
--echo #
connection default;
-handler t1 open;
---echo #
-connection mdl_con1;
---echo # Check that upgrade from SNRW to X is blocked by presence of S lock.
-lock table t1 write;
---echo # Sending:
---send alter table t1 add column c2 int;
---echo #
-connection mdl_con2;
---echo # Check that the above upgrade of SNRW to X in ALTER TABLE is blocked
---echo # because of S lock.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "alter table t1 add column c2 int";
---source include/wait_condition.inc
---echo #
-connection default;
---echo # Unblock ALTER TABLE.
-handler t1 close;
---echo #
-connection mdl_con1;
---echo # Reaping ALTER TABLE.
---reap
---echo # Restore the original state of the things.
-alter table t1 drop column c2;
-unlock tables;
---echo #
-connection default;
--echo #
--echo # 2) Acquire SH (shared high-priority) lock on the table.
--echo # We have to involve DEBUG_SYNC facility for this as usually
@@ -797,8 +764,6 @@ lock table t1 write;
--echo #
connection mdl_con1;
--echo # Check that S and SH locks are compatible with it.
-handler t1 open;
-handler t1 close;
select column_name from information_schema.columns where
table_schema='test' and table_name='t1';
--echo # Check that SR lock is incompatible with SNRW lock.
@@ -1293,8 +1258,6 @@ where state = "Waiting for table metadata lock" and
info = "lock table t1 write";
--source include/wait_condition.inc
--echo # Check that S and SH locks are compatible with pending SNRW
-handler t1 open t;
-handler t close;
select column_name from information_schema.columns where
table_schema='test' and table_name='t1';
--echo # Check that SR is incompatible with pending SNRW
@@ -2162,190 +2125,6 @@ disconnect mdl_con3;
set debug_sync= 'RESET';
drop table t1, t2;
-
---echo #
---echo # Additional coverage for some scenarios in which not quite
---echo # correct use of S metadata locks by HANDLER statement might
---echo # have caused deadlocks.
---echo #
---disable_warnings
-drop table if exists t1, t2;
---enable_warnings
-connect(handler_con1,localhost,root,,);
-connect(handler_con2,localhost,root,,);
-connection default;
-create table t1 (i int);
-create table t2 (j int);
-insert into t1 values (1);
-
---echo #
---echo # First, check scenario in which we upgrade SNRW lock to X lock
---echo # on a table while having HANDLER READ trying to acquire TL_READ
---echo # on the same table.
---echo #
-handler t1 open;
---echo #
-connection handler_con1;
-lock table t1 write;
---echo # Upgrade SNRW to X lock.
---echo # Sending:
---send alter table t1 add column j int;
---echo #
-connection handler_con2;
---echo # Wait until ALTER is blocked during upgrade.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "alter table t1 add column j int";
---source include/wait_condition.inc
---echo #
-connection default;
---echo # The below statement should not cause deadlock.
---send handler t1 read first;
---echo #
-connection handler_con1;
---echo # Reap ALTER TABLE.
---reap
-unlock tables;
---echo #
-connection default;
---echo # Reap HANDLER READ.
---reap
-handler t1 close;
-
---echo #
---echo # Now, check scenario in which upgrade of SNRW lock to X lock
---echo # can be blocked by HANDLER which is open in connection currently
---echo # waiting to get table-lock owned by connection doing upgrade.
---echo #
-handler t1 open;
---echo #
-connection handler_con1;
-lock table t1 write, t2 read;
---echo #
-connection default;
---echo # Execute statement which will be blocked on table-level lock
---echo # owned by connection 'handler_con1'.
---echo # Sending:
---send insert into t2 values (1);
---echo #
-connection handler_con1;
---echo # Wait until INSERT is blocked on table-level lock.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table level lock" and
- info = "insert into t2 values (1)";
---source include/wait_condition.inc
---echo # Sending 'alter table t1 drop column j'. It should not cause
---echo # deadlock.
-send alter table t1 drop column j;
-connection handler_con2;
---echo # Wait until ALTER is blocked during upgrade.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "alter table t1 drop column j";
---source include/wait_condition.inc
---echo #
-connection default;
---echo # Reap INSERT.
---error ER_LOCK_ABORTED
---reap
-handler t1 close;
---echo #
-connection handler_con1;
---echo # Reaping 'alter table t1 drop column j'
---reap
-unlock tables;
-connection default;
-
---echo # Then, check the scenario in which upgrade of SNRW lock to X
---echo # lock is blocked by HANDLER which is open in connection currently
---echo # waiting to get SW lock on the same table.
---echo #
-handler t1 open;
---echo #
-connection handler_con1;
-lock table t1 write;
---echo #
-connection default;
---echo # The below insert should be blocked because active SNRW lock on 't1'.
---echo # Sending:
---send insert into t1 values (1);
---echo #
-connection handler_con1;
---echo # Wait until INSERT is blocked because of SNRW lock.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "insert into t1 values (1)";
---source include/wait_condition.inc
---echo # The below ALTER TABLE will be blocked because of presence of HANDLER.
---echo # Sending:
---send alter table t1 add column j int;
---echo #
-connection default;
---echo # INSERT should be chosen as victim for resolving deadlock.
---echo # Reaping INSERT.
---error ER_LOCK_DEADLOCK
---reap
---echo # Close HANDLER to unblock ALTER TABLE.
-handler t1 close;
---echo #
-connection handler_con1;
---echo # Reaping ALTER TABLE.
---reap
-unlock tables;
---echo #
-connection default;
-
---echo #
---echo # Finally, test in which upgrade of SNRW lock to X lock is blocked
---echo # by HANDLER which is open in connection currently waiting to get
---echo # SR lock on the table on which lock is upgraded.
---echo #
-handler t1 open;
---echo #
-connection handler_con1;
-lock table t1 write, t2 write;
---echo #
-connection default;
---echo # The below insert should be blocked because active SNRW lock on 't1'.
---echo # Sending:
---send insert into t2 values (1);
---echo #
-connection handler_con1;
---echo # Wait until INSERT is blocked because of SNRW lock.
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Waiting for table metadata lock" and
- info = "insert into t2 values (1)";
---source include/wait_condition.inc
---echo # The below ALTER TABLE will be blocked because of presence of HANDLER.
---echo # Sending:
---send alter table t1 drop column j;
---echo #
-connection default;
---echo # INSERT should be chosen as victim for resolving deadlock.
---echo # Reaping INSERT.
---error ER_LOCK_DEADLOCK
---reap
---echo # Close HANDLER to unblock ALTER TABLE.
-handler t1 close;
---echo #
-connection handler_con1;
---echo # Reaping ALTER TABLE.
---reap
-unlock tables;
---echo #
-connection default;
-
---echo # Clean-up.
-disconnect handler_con1;
-disconnect handler_con2;
-drop tables t1, t2;
-
-
--echo #
--echo # Test coverage for basic deadlock detection in metadata
--echo # locking subsystem.
diff --git a/mysql-test/t/mysqlbinlog_row_compressed.test b/mysql-test/t/mysqlbinlog_row_compressed.test
new file mode 100644
index 00000000000..1a7ce093986
--- /dev/null
+++ b/mysql-test/t/mysqlbinlog_row_compressed.test
@@ -0,0 +1,68 @@
+#
+# Test for compressed row event
+#
+
+--source include/have_log_bin.inc
+--source include/have_binlog_format_row.inc
+
+#
+#
+# mysqlbinlog: compressed row event
+#
+#
+
+SET GLOBAL log_bin_compress=on;
+SET GLOBAL log_bin_compress_min_len=10;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1));
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1));
+INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "");
+INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL);
+INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A");
+INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A");
+INSERT INTO t2 SELECT * FROM t1;
+UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL;
+DELETE FROM t1;
+DELETE FROM t2;
+
+--let $binlog = query_get_value(SHOW MASTER STATUS, File, 1)
+--let $datadir = `SELECT @@datadir`
+
+FLUSH BINARY LOGS;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/
+--exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog
+
+--echo
+--echo Test mysqlbinlog | mysql type point-in-time recovery with compressed events.
+--echo
+
+FLUSH BINARY LOGS;
+--let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1)
+CREATE TABLE t3 (a INT PRIMARY KEY, b INT, c VARCHAR(100));
+INSERT INTO t3 VALUES (0, 10, "hello");
+BEGIN;
+INSERT INTO t3 VALUES (1, 10, "cat"), (2, 10, "mouse"), (3, 10, "dog");
+INSERT INTO t3 VALUES (4, 10, "goodbye");
+COMMIT;
+UPDATE t3 SET b=b+100 where a<>1;
+DELETE FROM t3 WHERE a=2;
+SET @old_image=@@binlog_row_image;
+SET binlog_row_image=minimal;
+INSERT INTO t3 VALUES (5, 20, "red"), (6, 30, "green"), (7, 40, "blue");
+INSERT INTO t3 VALUES (8, 20, "rigel");
+UPDATE t3 SET c = concat("colour of ", c) WHERE a > 5;
+UPDATE t3 SET b=b*2 WHERE a IN (5,6,7);
+DELETE FROM t3 WHERE a=6;
+SET binlog_row_image=@old_image;
+SELECT * FROM t3 ORDER BY a;
+FLUSH LOGS;
+DROP TABLE t3;
+
+--let $MYSQLD_DATADIR= `select @@datadir`
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$binlog_file | $MYSQL
+
+SELECT * FROM t3 ORDER BY a;
+
+DROP TABLE t1,t2,t3;
+SET GLOBAL log_bin_compress=off;
+SET GLOBAL log_bin_compress_min_len=256;
diff --git a/mysql-test/t/mysqlbinlog_stmt_compressed.test b/mysql-test/t/mysqlbinlog_stmt_compressed.test
new file mode 100644
index 00000000000..c4331ddf229
--- /dev/null
+++ b/mysql-test/t/mysqlbinlog_stmt_compressed.test
@@ -0,0 +1,59 @@
+#
+# Test for compressed query event
+#
+
+--source include/have_log_bin.inc
+--source include/have_binlog_format_statement.inc
+
+#
+#
+# mysqlbinlog: compressed query event
+#
+#
+
+SET GLOBAL log_bin_compress=on;
+SET GLOBAL log_bin_compress_min_len=10;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1));
+CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1));
+INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "");
+INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL);
+INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A");
+INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A");
+INSERT INTO t2 SELECT * FROM t1;
+UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL;
+DELETE FROM t1;
+DELETE FROM t2;
+
+--let $binlog = query_get_value(SHOW MASTER STATUS, File, 1)
+--let $datadir = `SELECT @@datadir`
+
+FLUSH BINARY LOGS;
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--replace_regex /\d{6} *\d*:\d\d:\d\d/<date>/ /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /mapped to number \d*/mapped to number num/ /CRC32 0x[0-9a-f]+/CRC32 XXX/
+--exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog
+
+--echo
+--echo Test mysqlbinlog | mysql type point-in-time recovery with compressed events.
+--echo
+
+FLUSH BINARY LOGS;
+--let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1)
+CREATE TABLE t3 (a INT PRIMARY KEY, b INT, c VARCHAR(100));
+INSERT INTO t3 VALUES (0, 10, "hello");
+BEGIN;
+INSERT INTO t3 VALUES (1, 10, "cat"), (2, 10, "mouse"), (3, 10, "dog");
+INSERT INTO t3 VALUES (4, 10, "goodbye");
+COMMIT;
+DELETE FROM t3 WHERE a=2;
+SELECT * FROM t3 ORDER BY a;
+FLUSH LOGS;
+DROP TABLE t3;
+
+--let $MYSQLD_DATADIR= `select @@datadir`
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$binlog_file | $MYSQL
+
+SELECT * FROM t3 ORDER BY a;
+
+DROP TABLE t1,t2,t3;
+SET GLOBAL log_bin_compress=off;
+SET GLOBAL log_bin_compress_min_len=256;
diff --git a/mysql-test/t/partition_debug_sync.test b/mysql-test/t/partition_debug_sync.test
index 11af9b06cdd..f085ea3fb83 100644
--- a/mysql-test/t/partition_debug_sync.test
+++ b/mysql-test/t/partition_debug_sync.test
@@ -82,43 +82,3 @@ connection default;
SET DEBUG_SYNC= 'RESET';
--echo End of 5.1 tests
-
---echo #
---echo # Coverage test for non pruned ha_partition::store_lock()
---echo #
-CREATE TABLE t1 (a int) ENGINE = InnoDB;
-CREATE TABLE t2 (a int PRIMARY KEY)
-ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 3;
-
-HANDLER t1 OPEN;
-
-connect (con1, localhost, root,,);
-
-LOCK TABLES t1 WRITE, t2 READ;
-
-connection default;
-
-SET DEBUG_SYNC="wait_for_lock SIGNAL locking";
-send INSERT INTO t2 VALUES (1), (2), (3);
-
-connection con1;
-SET DEBUG_SYNC="now WAIT_FOR locking";
-
-send ALTER TABLE t1 ADD COLUMN b int;
-
-connection default;
---error ER_LOCK_ABORTED
---reap
-
-SELECT 1;
-
-connection con1;
---reap
-
-UNLOCK TABLES;
---disconnect con1
-
-connection default;
-SET DEBUG_SYNC = 'RESET';
-
-DROP TABLE t1, t2;
diff --git a/mysql-test/t/truncate_coverage.test b/mysql-test/t/truncate_coverage.test
index 0834f7a3eca..3351ce84232 100644
--- a/mysql-test/t/truncate_coverage.test
+++ b/mysql-test/t/truncate_coverage.test
@@ -17,86 +17,6 @@ DROP TABLE IF EXISTS t1;
--echo # Bug#20667 - Truncate table fails for a write locked table
--echo #
########
-# Attack wait_while_table_is_used(). Kill query while trying to
-# upgrade MDL.
-#
-CREATE TABLE t1 (c1 INT);
-INSERT INTO t1 VALUES (1);
-#
-# Acquire a shared metadata lock on table by opening HANDLER for it and wait.
-# TRUNCATE shall block on this metadata lock.
-# We can't use normal DML as such statements would also block LOCK TABLES.
-#
---connect (con1, localhost, root,,)
-HANDLER t1 OPEN;
-#
-# Get connection id of default connection.
-# Lock the table and start TRUNCATE, which will block on MDL upgrade.
-#
---connection default
-let $ID= `SELECT @id := CONNECTION_ID()`;
-LOCK TABLE t1 WRITE;
-SET DEBUG_SYNC='mdl_upgrade_lock SIGNAL waiting';
-send TRUNCATE TABLE t1;
-#
-# Get the default connection ID into a variable in an invisible statement.
-# Kill the TRUNCATE query. This shall result in an error return
-# from wait_while_table_is_used().
-#
---connect (con2, localhost, root,,)
-SET DEBUG_SYNC='now WAIT_FOR waiting';
-let $invisible_assignment_in_select = `SELECT @id := $ID`;
-KILL QUERY @id;
---disconnect con2
---connection default
---error ER_QUERY_INTERRUPTED
-reap;
-UNLOCK TABLES;
---connection con1
---echo # Release shared metadata lock by closing HANDLER.
-HANDLER t1 CLOSE;
---disconnect con1
---connection default
-DROP TABLE t1;
-SET DEBUG_SYNC='RESET';
-########
-# Attack reopen_tables(). Remove form file.
-#
-CREATE TABLE t1 (c1 INT);
-INSERT INTO t1 VALUES (1);
-#
-# Acquire a shared metadata lock on table by opening HANDLER for it and wait.
-# TRUNCATE shall block on this metadata lock.
-# We can't use normal DML as such statements would also block LOCK TABLES.
-#
---connect (con1, localhost, root,,)
-HANDLER t1 OPEN;
-#
-# Lock the table and start TRUNCATE, which will block on MDL upgrade.
-#
---connection default
-LOCK TABLE t1 WRITE;
-SET DEBUG_SYNC='mdl_upgrade_lock SIGNAL waiting';
-send TRUNCATE TABLE t1;
-#
-# Remove datafile.
-# Commit to let TRUNCATE continue.
-#
---connect (con2, localhost, root,,)
-SET DEBUG_SYNC='now WAIT_FOR waiting';
---remove_file $MYSQLD_DATADIR/test/t1.frm
---disconnect con2
---connection con1
-HANDLER t1 CLOSE;
---disconnect con1
---connection default
---error ER_NO_SUCH_TABLE
-reap;
-UNLOCK TABLES;
---error ER_BAD_TABLE_ERROR
-DROP TABLE t1;
-SET DEBUG_SYNC='RESET';
-########
# Attack acquire_exclusive_locks(). Hold a global read lock.
# Non-LOCK TABLE case.
#