
[Commits] 08ef3c3: MDEV-21614 Wrong query results with optimizer_switch="split_materialized=on"
by IgorBabaev 08 Feb '20
by IgorBabaev 08 Feb '20
08 Feb '20
revision-id: 08ef3c3ee2832db89f4d088ff407b794f31cfc50 (mariadb-10.3.18-153-g08ef3c3)
parent(s): bc43bf3e430c20bc2178e584215bd443054709d6
author: Igor Babaev
committer: Igor Babaev
timestamp: 2020-02-07 19:42:11 -0800
message:
MDEV-21614 Wrong query results with optimizer_switch="split_materialized=on"
Do not materialize a semi-join nest if it contains a materialized derived
table /view that potentially can be subject to the split optimization.
Splitting of materialization of such nest would help, but currently there
is no code to support this technique.
---
mysql-test/main/derived_cond_pushdown.result | 89 ++++++++++++++++++++++++++++
mysql-test/main/derived_cond_pushdown.test | 43 ++++++++++++++
sql/opt_split.cc | 11 +++-
3 files changed, 142 insertions(+), 1 deletion(-)
diff --git a/mysql-test/main/derived_cond_pushdown.result b/mysql-test/main/derived_cond_pushdown.result
index 19c4ee8..1ae78ae 100644
--- a/mysql-test/main/derived_cond_pushdown.result
+++ b/mysql-test/main/derived_cond_pushdown.result
@@ -16829,4 +16829,93 @@ id username id userid logindate
2 user2 3 2 2017-06-19 12:17:02
set join_cache_level=default;
DROP TABLE t1,t2;
+#
+# MDEV-21614: potentially splittable materialized derived/view
+# within materialized semi-join
+#
+create table t1 (
+id int not null auto_increment primary key,
+a int not null
+) engine=myisam;
+create table t2 (
+id int not null auto_increment primary key,
+ro_id int not null,
+flag int not null, key (ro_id)
+) engine=myisam;
+insert into t1(a) select seq+100 from seq_1_to_20;
+insert into t2(ro_id,flag) select seq, 1 from seq_1_to_20;
+insert into t2(ro_id,flag) select seq, 0 from seq_1_to_20;
+create view v1 as
+select t1.* from t1 left join t2 on (t1.id = t2.ro_id AND t2.flag = 1)
+group by t1.id;
+select id, a from t1 where id in (select id from v1);
+id a
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+10 110
+11 111
+12 112
+13 113
+14 114
+15 115
+16 116
+17 117
+18 118
+19 119
+20 120
+explain extended select id, a from t1 where id in (select id from v1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 20 100.00
+1 PRIMARY <derived3> ref key0 key0 4 test.t1.id 2 100.00 FirstMatch(t1)
+3 LATERAL DERIVED t1 eq_ref PRIMARY PRIMARY 4 test.t1.id 1 100.00
+3 LATERAL DERIVED t2 ref ro_id ro_id 4 test.t1.id 1 100.00 Using where
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` semi join (`test`.`v1`) where `v1`.`id` = `test`.`t1`.`id`
+select id, a from t1
+where id in (select id
+from (select t1.* from t1 left join t2
+on (t1.id = t2.ro_id AND t2.flag = 1)
+group by t1.id) dt);
+id a
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+10 110
+11 111
+12 112
+13 113
+14 114
+15 115
+16 116
+17 117
+18 118
+19 119
+20 120
+explain extended select id, a from t1
+where id in (select id
+from (select t1.* from t1 left join t2
+on (t1.id = t2.ro_id AND t2.flag = 1)
+group by t1.id) dt);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 20 100.00
+1 PRIMARY <derived3> ref key0 key0 4 test.t1.id 2 100.00 FirstMatch(t1)
+3 LATERAL DERIVED t1 eq_ref PRIMARY PRIMARY 4 test.t1.id 1 100.00
+3 LATERAL DERIVED t2 ref ro_id ro_id 4 test.t1.id 1 100.00 Using where
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` semi join ((/* select#3 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` left join `test`.`t2` on(`test`.`t2`.`ro_id` = `test`.`t1`.`id` and `test`.`t2`.`flag` = 1) where `test`.`t1`.`id` = `test`.`t1`.`id` group by `test`.`t1`.`id`) `dt`) where `dt`.`id` = `test`.`t1`.`id`
+drop view v1;
+drop table t1,t2;
# End of 10.3 tests
diff --git a/mysql-test/main/derived_cond_pushdown.test b/mysql-test/main/derived_cond_pushdown.test
index e3a7306..525122e 100644
--- a/mysql-test/main/derived_cond_pushdown.test
+++ b/mysql-test/main/derived_cond_pushdown.test
@@ -1,3 +1,4 @@
+--source include/have_sequence.inc
--source include/default_optimizer_switch.inc
let $no_pushdown= set statement optimizer_switch='condition_pushdown_for_derived=off' for;
set @@join_buffer_size=256*1024;
@@ -3328,4 +3329,46 @@ set join_cache_level=default;
DROP TABLE t1,t2;
+
+--echo #
+--echo # MDEV-21614: potentially splittable materialized derived/view
+--echo # within materialized semi-join
+--echo #
+
+create table t1 (
+ id int not null auto_increment primary key,
+ a int not null
+) engine=myisam;
+
+create table t2 (
+ id int not null auto_increment primary key,
+ ro_id int not null,
+ flag int not null, key (ro_id)
+) engine=myisam;
+
+insert into t1(a) select seq+100 from seq_1_to_20;
+insert into t2(ro_id,flag) select seq, 1 from seq_1_to_20;
+insert into t2(ro_id,flag) select seq, 0 from seq_1_to_20;
+
+create view v1 as
+select t1.* from t1 left join t2 on (t1.id = t2.ro_id AND t2.flag = 1)
+ group by t1.id;
+
+let $q1=
+select id, a from t1 where id in (select id from v1);
+eval $q1;
+eval explain extended $q1;
+
+let $q2=
+select id, a from t1
+ where id in (select id
+ from (select t1.* from t1 left join t2
+ on (t1.id = t2.ro_id AND t2.flag = 1)
+ group by t1.id) dt);
+eval $q2;
+eval explain extended $q2;
+
+drop view v1;
+drop table t1,t2;
+
--echo # End of 10.3 tests
diff --git a/sql/opt_split.cc b/sql/opt_split.cc
index cfac0c9..6f8248c 100644
--- a/sql/opt_split.cc
+++ b/sql/opt_split.cc
@@ -307,7 +307,7 @@ struct SplM_field_ext_info: public SplM_field_info
8. P contains some references on the columns of the joined tables C
occurred also in the select list of this join
9. There are defined some keys usable for ref access of fields from C
- with available statistics.
+ with available statistics.
@retval
true if the answer is positive
@@ -477,6 +477,15 @@ bool JOIN::check_for_splittable_materialized()
/* Attach this info to the table T */
derived->table->set_spl_opt_info(spl_opt_info);
+ /*
+ If this is specification of a materialized derived table T that is
+ potentially splittable and is used in the from list of the right operand
+ of an IN predicand transformed to a semi-join then the embedding semi-join
+ nest is not allowed to be materialized.
+ */
+ if (derived && derived->is_materialized_derived() &&
+ derived->embedding && derived->embedding->sj_subq_pred)
+ derived->embedding->sj_subq_pred->types_allow_materialization= FALSE;
return true;
}
1
0

[Commits] b3ded21922f: ha_partition: add comments, comment out unused member variables
by Sergei Petrunia 04 Feb '20
by Sergei Petrunia 04 Feb '20
04 Feb '20
revision-id: b3ded21922fc684c3c1aeb4ad57161bc2fec5859 (mariadb-10.3.21-38-gb3ded21922f)
parent(s): b0fa30808622fe12d474a70af1838906e60b9897
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2020-02-05 00:54:16 +0300
message:
ha_partition: add comments, comment out unused member variables
---
sql/ha_partition.cc | 2 +-
sql/ha_partition.h | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 90 insertions(+), 3 deletions(-)
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index a7942f493d7..130c7f7e4d5 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -6235,7 +6235,7 @@ static range_seq_t partition_multi_range_key_init(void *init_params,
ha_partition *partition= hld->partition;
uint i= hld->part_id;
DBUG_ENTER("partition_multi_range_key_init");
- partition->m_mrr_range_init_flags= flags;
+ // not used: partition->m_mrr_range_init_flags= flags;
hld->partition_part_key_multi_range= partition->m_part_mrr_range_first[i];
DBUG_RETURN(init_params);
}
diff --git a/sql/ha_partition.h b/sql/ha_partition.h
index 1085eca72cc..fc6c8c4d570 100644
--- a/sql/ha_partition.h
+++ b/sql/ha_partition.h
@@ -184,17 +184,61 @@ class Partition_share : public Handler_share
bool is_subpart);
};
+
+/*
+ List of ranges to be scanned by ha_partition's MRR implementation
+
+ This object is
+ - A KEY_MULTI_RANGE structure (the MRR range)
+ - Storage for the range endpoints that the KEY_MULTI_RANGE has pointers to
+ - list of such ranges (connected through the "next" pointer).
+*/
+
typedef struct st_partition_key_multi_range
{
+ /*
+ Number of the range. The ranges are numbered in the order RANGE_SEQ_IF has
+ emitted them, starting from 1. The numbering in used by ordered MRR scans.
+ */
uint id;
uchar *key[2];
+ /*
+ Sizes of allocated memory in key[]. These may be larger then the actual
+ values as this structure is reused across MRR scans
+ */
uint length[2];
+
+ /*
+ The range.
+ key_multi_range.ptr is a pointer to the this PARTITION_KEY_MULTI_RANGE
+ object
+ */
KEY_MULTI_RANGE key_multi_range;
+
+ // Range id from the SQL layer
range_id_t ptr;
+
+ // The next element in the list of MRR ranges.
st_partition_key_multi_range *next;
} PARTITION_KEY_MULTI_RANGE;
+/*
+ List of ranges to be scanned in a certain [sub]partition.
+
+ The idea is that there's a list of ranges to be scanned in the table
+ (formed by PARTITION_KEY_MULTI_RANGE structures),
+ and for each [sub]partition, we only need to scan a subset of that list.
+
+ PKMR1 --> PKMR2 --> PKMR3 -->... // list of PARTITION_KEY_MULTI_RANGE
+ ^ ^
+ | |
+ PPKMR1 ----------> PPKMR2 -->... // list of PARTITION_PART_KEY_MULTI_RANGE
+
+ This way, per-partition lists of PARTITION_PART_KEY_MULTI_RANGE have pointers
+ to the elements of the global list of PARTITION_KEY_MULTI_RANGE.
+*/
+
typedef struct st_partition_part_key_multi_range
{
PARTITION_KEY_MULTI_RANGE *partition_key_multi_range;
@@ -203,10 +247,23 @@ typedef struct st_partition_part_key_multi_range
class ha_partition;
+
+/*
+ The structure holding information about range sequence to be used with one
+ partition.
+ (pointer to this is used as seq_init_param for RANGE_SEQ_IF structure when
+ invoking MRR for an individual partition)
+*/
+
typedef struct st_partition_part_key_multi_range_hld
{
+ /* Owner object */
ha_partition *partition;
+
+ // id of the the partition this structure is for
uint32 part_id;
+
+ // Current range we're iterating through.
PARTITION_PART_KEY_MULTI_RANGE *partition_part_key_multi_range;
} PARTITION_PART_KEY_MULTI_RANGE_HLD;
@@ -810,21 +867,51 @@ class ha_partition :public handler
uint m_mrr_new_full_buffer_size;
MY_BITMAP m_mrr_used_partitions;
uint *m_stock_range_seq;
- uint m_current_range_seq;
+ // not used: uint m_current_range_seq;
+
+ // Value of mrr_mode passed to ha_partition::multi_range_read_init
uint m_mrr_mode;
+
+ // Value of n_ranges passed to ha_partition::multi_range_read_init
uint m_mrr_n_ranges;
+
+ /*
+ Ordered MRR mode: m_range_info[N] has the range_id of the last record that
+ we've got from partition N.
+ */
range_id_t *m_range_info;
+
+ // TRUE <=> This ha_partition::multi_range_read_next() call is the first one
bool m_multi_range_read_first;
- uint m_mrr_range_init_flags;
+ // not used: uint m_mrr_range_init_flags;
+
+ /* Number of elements in the list pointed by m_mrr_range_first. Not used */
uint m_mrr_range_length;
+
+ // Linked list of ranges to scan
PARTITION_KEY_MULTI_RANGE *m_mrr_range_first;
PARTITION_KEY_MULTI_RANGE *m_mrr_range_current;
+
+ /*
+ For each partition: number of ranges MRR scan will scan in the partition
+ */
uint *m_part_mrr_range_length;
+
+ /*
+ For each partition: List of ranges to scan in this partition.
+ */
PARTITION_PART_KEY_MULTI_RANGE **m_part_mrr_range_first;
PARTITION_PART_KEY_MULTI_RANGE **m_part_mrr_range_current;
PARTITION_PART_KEY_MULTI_RANGE_HLD *m_partition_part_key_multi_range_hld;
+
+ /*
+ Sequence of ranges to be scanned (TODO: why not stores this in
+ handler::mrr_{iter,funcs}?)
+ */
range_seq_t m_seq;
RANGE_SEQ_IF *m_seq_if;
+
+ // Range iterator structure to be supplied to partitions
RANGE_SEQ_IF m_part_seq_if;
virtual int multi_range_key_create_key(
1
0

[Commits] b356da6: Merge branch '10.2' of github.com:MariaDB/server into 10.2
by IgorBabaev 24 Jan '20
by IgorBabaev 24 Jan '20
24 Jan '20
revision-id: b356da61aa891a314e0d60df31ae2febf545a612 (mariadb-10.2.14-73-gb356da6)
parent(s): f3dda8e2002dc2ad630c07bda0d8c00be7269907 683a49889c312e0c39fc34d61577efcb11560d29
author: Igor Babaev
committer: Igor Babaev
timestamp: 2020-01-23 22:52:47 -0800
message:
Merge branch '10.2' of github.com:MariaDB/server into 10.2
.clang-format | 117 +
.gitattributes | 1 +
.gitignore | 14 +-
BUILD/FINISH.sh | 2 +-
BUILD/SETUP.sh | 23 +-
BUILD/autorun.sh | 2 +-
BUILD/check-cpu | 2 +-
BUILD/cleanup | 2 +-
BUILD/cmake_configure.sh | 2 +-
BUILD/compile-alpha | 2 +-
BUILD/compile-amd64-debug-max | 2 +-
BUILD/compile-amd64-gcov | 2 +-
BUILD/compile-amd64-gprof | 2 +-
BUILD/compile-amd64-max | 2 +-
BUILD/compile-amd64-valgrind-max | 2 +-
BUILD/compile-bintar | 2 +-
BUILD/compile-darwin-mwcc | 2 +-
BUILD/compile-dist | 2 +-
BUILD/compile-hpux11-parisc2-aCC | 2 +-
BUILD/compile-ia64-debug-max | 2 +-
BUILD/compile-innodb | 2 +-
BUILD/compile-irix-mips64-mipspro | 2 +-
BUILD/compile-pentium | 2 +-
BUILD/compile-pentium-cybozu | 2 +-
BUILD/compile-pentium-debug | 2 +-
BUILD/compile-pentium-debug-max | 2 +-
BUILD/compile-pentium-debug-max-no-embedded | 2 +-
BUILD/compile-pentium-debug-openssl | 2 +-
BUILD/compile-pentium-debug-yassl | 2 +-
BUILD/compile-pentium-gcov | 2 +-
BUILD/compile-pentium-gprof | 2 +-
BUILD/compile-pentium-icc | 2 +-
BUILD/compile-pentium-icc-valgrind-max | 4 +-
BUILD/compile-pentium-icc-yassl | 2 +-
BUILD/compile-pentium-max | 2 +-
BUILD/compile-pentium-valgrind-max | 4 +-
BUILD/compile-pentium64-asan-max | 4 +-
BUILD/compile-pentium64-debug | 2 +-
BUILD/compile-pentium64-debug-max | 2 +-
BUILD/compile-pentium64-gcov | 2 +-
BUILD/compile-pentium64-gprof | 2 +-
BUILD/compile-pentium64-max | 2 +-
BUILD/compile-pentium64-valgrind-max | 4 +-
BUILD/compile-pentium64-wsrep | 2 +-
BUILD/compile-ppc | 2 +-
BUILD/compile-ppc-debug | 2 +-
BUILD/compile-ppc-debug-max | 2 +-
BUILD/compile-ppc-max | 2 +-
BUILD/compile-solaris-amd64-debug | 2 +-
BUILD/compile-solaris-amd64-forte | 2 +-
BUILD/compile-solaris-sparc | 2 +-
BUILD/compile-solaris-sparc-forte | 4 +-
BUILD/util.sh | 2 +-
CMakeLists.txt | 49 +-
COPYING | 4 +-
COPYING.thirdparty | 1692 -
CREDITS | 4 +-
Docs/README-wsrep | 37 +-
README.md | 29 +-
THIRDPARTY | 1692 +
VERSION | 2 +-
appveyor.yml | 4 +-
client/CMakeLists.txt | 9 +-
client/client_priv.h | 2 +-
client/completion_hash.cc | 2 +-
client/completion_hash.h | 2 +-
client/echo.c | 2 +-
client/my_readline.h | 2 +-
client/mysql.cc | 21 +-
client/mysql_plugin.c | 10 +-
client/mysql_upgrade.c | 2 +-
client/mysqladmin.cc | 7 +-
client/mysqlbinlog.cc | 60 +-
client/mysqlcheck.c | 11 +-
client/mysqldump.c | 89 +-
client/mysqlimport.c | 22 +-
client/mysqlshow.c | 4 +-
client/mysqlslap.c | 6 +-
client/mysqltest.cc | 316 +-
client/readline.cc | 2 +-
client/sql_string.cc.dontuse | 2 +-
client/sql_string.h.dontuse | 2 +-
cmake/CPackRPM.cmake | 32 -
cmake/Internal/CPack/CPackRPM.cmake | 68 +
cmake/abi_check.cmake | 2 +-
cmake/bison.cmake | 2 +-
cmake/build_configurations/mysql_release.cmake | 12 +-
cmake/build_depends.cmake | 44 +
cmake/character_sets.cmake | 2 +-
cmake/check_compiler_flag.cmake | 3 +-
cmake/compile_flags.cmake | 2 +-
cmake/configure.pl | 2 +-
cmake/cpack_rpm.cmake | 84 +-
cmake/cpack_source_ignore_files.cmake | 22 +-
cmake/cpu_info.cmake | 2 +-
cmake/create_initial_db.cmake.in | 2 +-
cmake/do_abi_check.cmake | 2 +-
cmake/dtrace.cmake | 6 +-
cmake/dtrace_prelink.cmake | 2 +-
cmake/info_bin.cmake | 2 +-
cmake/info_macros.cmake.in | 2 +-
cmake/info_src.cmake | 2 +-
cmake/install_layout.cmake | 35 +-
cmake/install_macros.cmake | 34 +-
cmake/libutils.cmake | 14 +-
cmake/maintainer.cmake | 11 +-
cmake/make_dist.cmake.in | 2 +-
cmake/mariadb_connector_c.cmake | 14 +-
cmake/merge_archives_unix.cmake.in | 2 +-
cmake/misc.cmake | 6 +
cmake/mysql_add_executable.cmake | 5 +-
cmake/mysql_version.cmake | 27 +-
cmake/os/AIX.cmake | 2 +-
cmake/os/Cygwin.cmake | 2 +-
cmake/os/Darwin.cmake | 2 +-
cmake/os/FreeBSD.cmake | 2 +-
cmake/os/HP-UX.cmake | 2 +-
cmake/os/Linux.cmake | 8 +-
cmake/os/OS400.cmake | 2 +-
cmake/os/SunOS.cmake | 2 +-
cmake/os/Windows.cmake | 17 +-
cmake/os/WindowsCache.cmake | 2 +-
cmake/package_name.cmake | 5 +-
cmake/plugin.cmake | 14 +-
cmake/readline.cmake | 4 +-
cmake/sign.cmake.in | 22 +-
cmake/ssl.cmake | 11 +-
cmake/stack_direction.c | 2 +-
cmake/submodules.cmake | 18 +-
cmake/systemd.cmake | 24 +-
cmake/tags.cmake | 2 +-
cmake/versioninfo.rc.in | 2 +-
cmake/wsrep.cmake | 4 +-
cmake/zlib.cmake | 23 +-
config.h.cmake | 18 +-
configure.cmake | 26 +-
dbug/CMakeLists.txt | 2 +-
dbug/dbug.c | 152 +-
dbug/dbug_add_tags.pl | 2 +-
dbug/tests.c | 8 +
debian/additions/debian-start | 2 +-
debian/additions/innotop/innotop | 6 +-
debian/additions/innotop/innotop.1 | 2 +-
debian/additions/my.cnf | 2 -
debian/autobake-deb.sh | 40 +-
debian/control | 12 +-
debian/copyright | 2 +-
debian/libmariadb3.install | 1 +
debian/mariadb-plugin-mroonga.prerm | 2 +-
debian/mariadb-plugin-tokudb.install | 1 +
debian/mariadb-server-10.2.install | 5 +
debian/mariadb-server-10.2.postinst | 29 +-
debian/mariadb-server-10.2.triggers | 2 +
...pts__mysql_create_system_tables__no_test.dpatch | 8 +-
...41_scripts__mysql_install_db.sh__no_test.dpatch | 21 +-
debian/po/ca.po | 4 +-
debian/po/cs.po | 4 +-
debian/po/da.po | 4 +-
debian/po/es.po | 4 +-
debian/po/pt_BR.po | 4 +-
debian/po/tr.po | 4 +-
debian/rules | 6 +-
extra/CMakeLists.txt | 5 +-
extra/charset2html.c | 2 +-
extra/comp_err.c | 2 +-
extra/innochecksum.cc | 134 +-
extra/mariabackup/CMakeLists.txt | 30 +-
extra/mariabackup/backup_copy.cc | 606 +-
extra/mariabackup/backup_mysql.cc | 265 +-
extra/mariabackup/backup_mysql.h | 3 +-
extra/mariabackup/backup_wsrep.h | 2 +-
extra/mariabackup/changed_page_bitmap.cc | 33 +-
extra/mariabackup/changed_page_bitmap.h | 2 +-
extra/mariabackup/common.h | 73 +-
extra/mariabackup/crc/CMakeLists.txt | 2 +-
extra/mariabackup/crc/config.h.cmake | 2 +-
extra/mariabackup/crc/crc-intel-pclmul.c | 4 +-
extra/mariabackup/crc/crc-intel-pclmul.h | 2 +-
extra/mariabackup/crc/crc_glue.c | 2 +-
extra/mariabackup/crc/crc_glue.h | 2 +-
extra/mariabackup/datasink.c | 137 -
extra/mariabackup/datasink.cc | 137 +
extra/mariabackup/datasink.h | 2 +-
extra/mariabackup/ds_archive.c | 280 -
extra/mariabackup/ds_archive.cc | 280 +
extra/mariabackup/ds_archive.h | 2 +-
extra/mariabackup/ds_buffer.c | 189 -
extra/mariabackup/ds_buffer.cc | 189 +
extra/mariabackup/ds_buffer.h | 2 +-
extra/mariabackup/ds_compress.c | 462 -
extra/mariabackup/ds_compress.cc | 463 +
extra/mariabackup/ds_compress.h | 2 +-
extra/mariabackup/ds_local.cc | 3 +-
extra/mariabackup/ds_local.h | 2 +-
extra/mariabackup/ds_stdout.c | 121 -
extra/mariabackup/ds_stdout.cc | 121 +
extra/mariabackup/ds_stdout.h | 2 +-
extra/mariabackup/ds_tmpfile.c | 247 -
extra/mariabackup/ds_tmpfile.cc | 243 +
extra/mariabackup/ds_tmpfile.h | 2 +-
extra/mariabackup/ds_xbstream.c | 223 -
extra/mariabackup/ds_xbstream.cc | 223 +
extra/mariabackup/ds_xbstream.h | 2 +-
extra/mariabackup/encryption_plugin.cc | 61 +-
extra/mariabackup/fil_cur.cc | 247 +-
extra/mariabackup/fil_cur.h | 7 +-
extra/mariabackup/innobackupex.cc | 8 +-
extra/mariabackup/innobackupex.h | 2 +-
extra/mariabackup/read_filt.cc | 2 +-
extra/mariabackup/read_filt.h | 2 +-
extra/mariabackup/write_filt.cc | 13 +-
extra/mariabackup/write_filt.h | 2 +-
extra/mariabackup/wsrep.cc | 14 +-
extra/mariabackup/xb0xb.h | 2 +-
extra/mariabackup/xb_regex.h | 2 +-
extra/mariabackup/xbcloud.cc | 2 +-
extra/mariabackup/xbstream.c | 564 -
extra/mariabackup/xbstream.cc | 563 +
extra/mariabackup/xbstream.h | 4 +-
extra/mariabackup/xbstream_read.c | 228 -
extra/mariabackup/xbstream_read.cc | 228 +
extra/mariabackup/xbstream_write.c | 294 -
extra/mariabackup/xbstream_write.cc | 294 +
extra/mariabackup/xtrabackup.cc | 1810 +-
extra/mariabackup/xtrabackup.h | 25 +-
extra/my_print_defaults.c | 2 +-
extra/mysql_waitpid.c | 2 +-
extra/perror.c | 2 +-
extra/readline/CMakeLists.txt | 2 +-
extra/readline/COPYING | 4 +-
extra/readline/ansi_stdlib.h | 2 +-
extra/readline/bind.c | 2 +-
extra/readline/callback.c | 2 +-
extra/readline/chardefs.h | 2 +-
extra/readline/compat.c | 2 +-
extra/readline/complete.c | 2 +-
extra/readline/configure.in | 2 +-
extra/readline/display.c | 2 +-
extra/readline/emacs_keymap.c | 2 +-
extra/readline/funmap.c | 2 +-
extra/readline/histexpand.c | 2 +-
extra/readline/histfile.c | 2 +-
extra/readline/histlib.h | 2 +-
extra/readline/history.c | 2 +-
extra/readline/history.h | 2 +-
extra/readline/histsearch.c | 2 +-
extra/readline/input.c | 2 +-
extra/readline/isearch.c | 2 +-
extra/readline/keymaps.c | 2 +-
extra/readline/keymaps.h | 2 +-
extra/readline/kill.c | 2 +-
extra/readline/macro.c | 2 +-
extra/readline/mbutil.c | 2 +-
extra/readline/misc.c | 2 +-
extra/readline/nls.c | 2 +-
extra/readline/parens.c | 2 +-
extra/readline/posixdir.h | 2 +-
extra/readline/posixjmp.h | 2 +-
extra/readline/posixstat.h | 2 +-
extra/readline/readline.c | 2 +-
extra/readline/readline.h | 2 +-
extra/readline/rlconf.h | 2 +-
extra/readline/rldefs.h | 2 +-
extra/readline/rlmbutil.h | 2 +-
extra/readline/rlprivate.h | 2 +-
extra/readline/rlshell.h | 2 +-
extra/readline/rlstdc.h | 2 +-
extra/readline/rltty.c | 2 +-
extra/readline/rltty.h | 2 +-
extra/readline/rltypedefs.h | 2 +-
extra/readline/rlwinsize.h | 2 +-
extra/readline/savestring.c | 2 +-
extra/readline/search.c | 2 +-
extra/readline/shell.c | 2 +-
extra/readline/signals.c | 2 +-
extra/readline/tcap.h | 2 +-
extra/readline/terminal.c | 2 +-
extra/readline/text.c | 2 +-
extra/readline/tilde.c | 2 +-
extra/readline/tilde.h | 2 +-
extra/readline/undo.c | 2 +-
extra/readline/util.c | 2 +-
extra/readline/vi_keymap.c | 2 +-
extra/readline/vi_mode.c | 2 +-
extra/readline/xmalloc.c | 2 +-
extra/readline/xmalloc.h | 2 +-
extra/replace.c | 2 +-
extra/resolve_stack_dump.c | 2 +-
extra/resolveip.c | 2 +-
extra/yassl/CMakeLists.txt | 2 +-
extra/yassl/COPYING | 4 +-
extra/yassl/examples/client/client.cpp | 2 +-
extra/yassl/examples/echoclient/echoclient.cpp | 2 +-
extra/yassl/examples/echoserver/echoserver.cpp | 2 +-
extra/yassl/examples/server/server.cpp | 2 +-
extra/yassl/include/buffer.hpp | 2 +-
extra/yassl/include/cert_wrapper.hpp | 2 +-
extra/yassl/include/crypto_wrapper.hpp | 2 +-
extra/yassl/include/factory.hpp | 2 +-
extra/yassl/include/handshake.hpp | 2 +-
extra/yassl/include/lock.hpp | 2 +-
extra/yassl/include/log.hpp | 2 +-
extra/yassl/include/openssl/crypto.h | 2 +-
extra/yassl/include/openssl/des.h | 2 +-
extra/yassl/include/openssl/des_old.h | 2 +-
extra/yassl/include/openssl/engine.h | 2 +-
extra/yassl/include/openssl/err.h | 2 +-
extra/yassl/include/openssl/evp.h | 2 +-
.../yassl/include/openssl/generate_prefix_files.pl | 2 +-
extra/yassl/include/openssl/hmac.h | 2 +-
extra/yassl/include/openssl/lhash.h | 2 +-
extra/yassl/include/openssl/md4.h | 2 +-
extra/yassl/include/openssl/md5.h | 2 +-
extra/yassl/include/openssl/objects.h | 2 +-
extra/yassl/include/openssl/opensslv.h | 2 +-
extra/yassl/include/openssl/pem.h | 2 +-
extra/yassl/include/openssl/pkcs12.h | 2 +-
extra/yassl/include/openssl/prefix_crypto.h | 2 +-
extra/yassl/include/openssl/prefix_ssl.h | 2 +-
extra/yassl/include/openssl/rand.h | 2 +-
extra/yassl/include/openssl/rsa.h | 2 +-
extra/yassl/include/openssl/sha.h | 2 +-
extra/yassl/include/openssl/ssl.h | 2 +-
extra/yassl/include/openssl/transport_types.h | 2 +-
extra/yassl/include/openssl/x509.h | 2 +-
extra/yassl/include/openssl/x509v3.h | 2 +-
extra/yassl/include/socket_wrapper.hpp | 2 +-
extra/yassl/include/timer.hpp | 2 +-
extra/yassl/include/yassl.hpp | 2 +-
extra/yassl/include/yassl_error.hpp | 2 +-
extra/yassl/include/yassl_imp.hpp | 2 +-
extra/yassl/include/yassl_int.hpp | 2 +-
extra/yassl/include/yassl_types.hpp | 2 +-
extra/yassl/src/buffer.cpp | 2 +-
extra/yassl/src/cert_wrapper.cpp | 2 +-
extra/yassl/src/crypto_wrapper.cpp | 2 +-
extra/yassl/src/handshake.cpp | 2 +-
extra/yassl/src/lock.cpp | 2 +-
extra/yassl/src/log.cpp | 2 +-
extra/yassl/src/make.bat | 2 +-
extra/yassl/src/socket_wrapper.cpp | 2 +-
extra/yassl/src/ssl.cpp | 2 +-
extra/yassl/src/timer.cpp | 2 +-
extra/yassl/src/yassl.cpp | 2 +-
extra/yassl/src/yassl_error.cpp | 2 +-
extra/yassl/src/yassl_imp.cpp | 2 +-
extra/yassl/src/yassl_int.cpp | 2 +-
extra/yassl/taocrypt/CMakeLists.txt | 2 +-
extra/yassl/taocrypt/COPYING | 4 +-
extra/yassl/taocrypt/benchmark/benchmark.cpp | 2 +-
extra/yassl/taocrypt/benchmark/make.bat | 2 +-
extra/yassl/taocrypt/include/aes.hpp | 2 +-
extra/yassl/taocrypt/include/algebra.hpp | 2 +-
extra/yassl/taocrypt/include/arc4.hpp | 2 +-
extra/yassl/taocrypt/include/asn.hpp | 2 +-
extra/yassl/taocrypt/include/block.hpp | 2 +-
extra/yassl/taocrypt/include/blowfish.hpp | 2 +-
extra/yassl/taocrypt/include/coding.hpp | 2 +-
extra/yassl/taocrypt/include/des.hpp | 2 +-
extra/yassl/taocrypt/include/dh.hpp | 2 +-
extra/yassl/taocrypt/include/dsa.hpp | 2 +-
extra/yassl/taocrypt/include/error.hpp | 2 +-
extra/yassl/taocrypt/include/file.hpp | 2 +-
extra/yassl/taocrypt/include/hash.hpp | 2 +-
extra/yassl/taocrypt/include/hc128.hpp | 2 +-
extra/yassl/taocrypt/include/hmac.hpp | 2 +-
extra/yassl/taocrypt/include/integer.hpp | 2 +-
extra/yassl/taocrypt/include/kernelc.hpp | 2 +-
extra/yassl/taocrypt/include/md2.hpp | 2 +-
extra/yassl/taocrypt/include/md4.hpp | 2 +-
extra/yassl/taocrypt/include/md5.hpp | 2 +-
extra/yassl/taocrypt/include/misc.hpp | 2 +-
extra/yassl/taocrypt/include/modarith.hpp | 2 +-
extra/yassl/taocrypt/include/modes.hpp | 2 +-
extra/yassl/taocrypt/include/pwdbased.hpp | 2 +-
extra/yassl/taocrypt/include/rabbit.hpp | 2 +-
extra/yassl/taocrypt/include/random.hpp | 2 +-
extra/yassl/taocrypt/include/ripemd.hpp | 2 +-
extra/yassl/taocrypt/include/rsa.hpp | 2 +-
extra/yassl/taocrypt/include/runtime.hpp | 2 +-
extra/yassl/taocrypt/include/sha.hpp | 2 +-
extra/yassl/taocrypt/include/twofish.hpp | 2 +-
extra/yassl/taocrypt/include/type_traits.hpp | 2 +-
extra/yassl/taocrypt/include/types.hpp | 2 +-
extra/yassl/taocrypt/mySTL/algorithm.hpp | 2 +-
extra/yassl/taocrypt/mySTL/helpers.hpp | 2 +-
extra/yassl/taocrypt/mySTL/list.hpp | 2 +-
extra/yassl/taocrypt/mySTL/memory.hpp | 2 +-
extra/yassl/taocrypt/mySTL/memory_array.hpp | 2 +-
extra/yassl/taocrypt/mySTL/pair.hpp | 2 +-
extra/yassl/taocrypt/mySTL/stdexcept.hpp | 2 +-
extra/yassl/taocrypt/mySTL/vector.hpp | 2 +-
extra/yassl/taocrypt/src/aes.cpp | 2 +-
extra/yassl/taocrypt/src/aestables.cpp | 2 +-
extra/yassl/taocrypt/src/algebra.cpp | 2 +-
extra/yassl/taocrypt/src/arc4.cpp | 2 +-
extra/yassl/taocrypt/src/asn.cpp | 2 +-
extra/yassl/taocrypt/src/bftables.cpp | 2 +-
extra/yassl/taocrypt/src/blowfish.cpp | 2 +-
extra/yassl/taocrypt/src/coding.cpp | 2 +-
extra/yassl/taocrypt/src/des.cpp | 4 +-
extra/yassl/taocrypt/src/dh.cpp | 2 +-
extra/yassl/taocrypt/src/dsa.cpp | 2 +-
extra/yassl/taocrypt/src/file.cpp | 2 +-
extra/yassl/taocrypt/src/hash.cpp | 2 +-
extra/yassl/taocrypt/src/hc128.cpp | 2 +-
extra/yassl/taocrypt/src/integer.cpp | 2 +-
extra/yassl/taocrypt/src/make.bat | 2 +-
extra/yassl/taocrypt/src/md2.cpp | 2 +-
extra/yassl/taocrypt/src/md4.cpp | 2 +-
extra/yassl/taocrypt/src/md5.cpp | 2 +-
extra/yassl/taocrypt/src/misc.cpp | 2 +-
extra/yassl/taocrypt/src/rabbit.cpp | 2 +-
extra/yassl/taocrypt/src/random.cpp | 2 +-
extra/yassl/taocrypt/src/ripemd.cpp | 2 +-
extra/yassl/taocrypt/src/rsa.cpp | 2 +-
extra/yassl/taocrypt/src/sha.cpp | 2 +-
extra/yassl/taocrypt/src/tftables.cpp | 2 +-
extra/yassl/taocrypt/src/twofish.cpp | 2 +-
extra/yassl/taocrypt/test/make.bat | 2 +-
extra/yassl/taocrypt/test/memory.cpp | 2 +-
extra/yassl/taocrypt/test/test.cpp | 2 +-
extra/yassl/testsuite/make.bat | 2 +-
extra/yassl/testsuite/test.hpp | 2 +-
extra/yassl/testsuite/testsuite.cpp | 2 +-
include/CMakeLists.txt | 2 +-
include/atomic/gcc_builtins.h | 2 +-
include/atomic/generic-msvc.h | 2 +-
include/atomic/solaris.h | 2 +-
include/atomic/x86-gcc.h | 2 +-
include/big_endian.h | 2 +-
include/byte_order_generic.h | 2 +-
include/byte_order_generic_x86.h | 2 +-
include/byte_order_generic_x86_64.h | 2 +-
include/decimal.h | 2 +-
include/errmsg.h | 2 +-
include/ft_global.h | 2 +-
include/handler_ername.h | 2 +-
include/hash.h | 4 +-
include/heap.h | 4 +-
include/intrusive_list.h | 188 +
include/json_lib.h | 6 +
include/keycache.h | 2 +-
include/lf.h | 2 +-
include/little_endian.h | 2 +-
include/m_ctype.h | 30 +-
include/m_string.h | 2 +-
include/maria.h | 5 +-
include/my_alarm.h | 2 +-
include/my_alloc.h | 2 +-
include/my_atomic.h | 4 +-
include/my_attribute.h | 2 +-
include/my_base.h | 3 +-
include/my_bit.h | 12 +-
include/my_bitmap.h | 2 +-
include/my_byteorder.h | 2 +-
include/my_check_opt.h | 2 +-
include/my_compare.h | 2 +-
include/my_compiler.h | 2 +-
include/my_cpu.h | 2 +-
include/my_crypt.h | 2 +-
include/my_dbug.h | 2 +-
include/my_decimal_limits.h | 2 +-
include/my_default.h | 2 +-
include/my_dir.h | 2 +-
include/my_getopt.h | 2 +-
include/my_global.h | 30 +-
include/my_handler_errors.h | 2 +-
include/my_libwrap.h | 2 +-
include/my_list.h | 2 +-
include/my_md5.h | 2 +-
include/my_net.h | 2 +-
include/my_nosys.h | 2 +-
include/my_pthread.h | 8 +-
include/my_rdtsc.h | 2 +-
include/my_rnd.h | 2 +-
include/my_service_manager.h | 4 +-
include/my_stacktrace.h | 2 +-
include/my_sys.h | 8 +-
include/my_time.h | 4 +-
include/my_tree.h | 4 +-
include/my_uctype.h | 2 +-
include/my_user.h | 2 +-
include/my_valgrind.h | 25 +-
include/my_xml.h | 2 +-
include/myisam.h | 2 +-
include/myisamchk.h | 2 +-
include/myisammrg.h | 2 +-
include/myisampack.h | 2 +-
include/mysql.h | 4 +-
include/mysql.h.pp | 2 +-
include/mysql/auth_dialog_client.h | 2 +-
include/mysql/client_plugin.h | 28 +-
include/mysql/plugin.h | 2 +-
include/mysql/plugin_audit.h | 2 +-
include/mysql/plugin_auth.h | 2 +-
include/mysql/plugin_auth_common.h | 2 +-
include/mysql/plugin_encryption.h | 2 +-
include/mysql/plugin_ftparser.h | 2 +-
include/mysql/plugin_password_validation.h | 2 +-
include/mysql/psi/mysql_file.h | 15 +-
include/mysql/psi/mysql_idle.h | 15 +-
include/mysql/psi/mysql_socket.h | 30 +-
include/mysql/psi/mysql_stage.h | 15 +-
include/mysql/psi/mysql_statement.h | 15 +-
include/mysql/psi/mysql_table.h | 15 +-
include/mysql/psi/mysql_thread.h | 15 +-
include/mysql/psi/psi.h | 15 +-
include/mysql/psi/psi_abi_v0.h | 15 +-
include/mysql/psi/psi_abi_v1.h | 15 +-
include/mysql/psi/psi_abi_v2.h | 15 +-
include/mysql/psi/psi_base.h | 2 +-
include/mysql/psi/psi_memory.h | 2 +-
include/mysql/service_base64.h | 2 +-
include/mysql/service_debug_sync.h | 2 +-
include/mysql/service_encryption.h | 2 +-
include/mysql/service_encryption_scheme.h | 2 +-
include/mysql/service_kill_statement.h | 6 +-
include/mysql/service_logger.h | 2 +-
include/mysql/service_md5.h | 2 +-
include/mysql/service_my_crypt.h | 2 +-
include/mysql/service_my_print_error.h | 2 +-
include/mysql/service_my_snprintf.h | 2 +-
include/mysql/service_progress_report.h | 2 +-
include/mysql/service_sha1.h | 2 +-
include/mysql/service_sha2.h | 2 +-
include/mysql/service_thd_alloc.h | 2 +-
include/mysql/service_thd_autoinc.h | 2 +-
include/mysql/service_thd_error_context.h | 2 +-
include/mysql/service_thd_rnd.h | 2 +-
include/mysql/service_thd_specifics.h | 2 +-
include/mysql/service_thd_timezone.h | 2 +-
include/mysql/service_thd_wait.h | 2 +-
include/mysql/service_wsrep.h | 22 +-
include/mysql/services.h | 2 +-
include/mysql_async.h | 2 +-
include/mysql_com.h | 3 +-
include/mysql_com_server.h | 2 +-
include/mysql_embed.h | 2 +-
include/mysql_time.h | 2 +-
include/mysys_err.h | 2 +-
include/password.h | 2 +-
include/probes_mysql.d.base | 2 +-
include/probes_mysql.h | 2 +-
include/rijndael.h | 2 +-
include/service_versions.h | 4 +-
include/sql_common.h | 6 +-
include/ssl_compat.h | 6 +-
include/sslopt-case.h | 4 +-
include/sslopt-longopts.h | 2 +-
include/sslopt-vars.h | 2 +-
include/t_ctype.h | 2 +-
include/thr_alarm.h | 2 +-
include/thr_lock.h | 2 +-
include/thr_timer.h | 2 +-
include/thread_pool_priv.h | 4 +-
include/typelib.h | 2 +-
include/violite.h | 4 +-
include/waiting_threads.h | 2 +-
include/welcome_copyright_notice.h | 2 +-
include/wqueue.h | 2 +-
include/wsrep.h | 22 +-
libmariadb | 2 +-
libmysqld/CMakeLists.txt | 5 +-
libmysqld/client_settings.h | 2 +-
libmysqld/emb_qcache.cc | 2 +-
libmysqld/emb_qcache.h | 2 +-
libmysqld/embedded_priv.h | 2 +-
libmysqld/examples/CMakeLists.txt | 4 +-
libmysqld/examples/builder-sample/emb_sample.bpr | 2 +-
libmysqld/examples/builder-sample/emb_sample.cpp | 2 +-
libmysqld/examples/builder-sample/emb_samples.cpp | 2 +-
libmysqld/examples/builder-sample/emb_samples.h | 2 +-
libmysqld/examples/test-run | 2 +-
libmysqld/lib_sql.cc | 17 +-
libmysqld/libmysql.c | 2 +-
libmysqld/libmysqld.c | 2 +-
libservices/CMakeLists.txt | 2 +-
libservices/base64_service.c | 2 +-
libservices/debug_sync_service.c | 2 +-
libservices/encryption_scheme_service.c | 2 +-
libservices/encryption_service.c | 2 +-
libservices/kill_statement_service.c | 2 +-
libservices/logger_service.c | 2 +-
libservices/my_md5_service.c | 2 +-
libservices/my_print_error_service.c | 2 +-
libservices/my_sha1_service.c | 2 +-
libservices/my_sha2_service.c | 2 +-
libservices/my_snprintf_service.c | 2 +-
libservices/progress_report_service.c | 2 +-
libservices/thd_alloc_service.c | 2 +-
libservices/thd_autoinc_service.c | 2 +-
libservices/thd_error_context_service.c | 2 +-
libservices/thd_rnd_service.c | 2 +-
libservices/thd_specifics_service.c | 2 +-
libservices/thd_timezone_service.c | 2 +-
libservices/thd_wait_service.c | 2 +-
libservices/wsrep_service.c | 2 +-
man/CMakeLists.txt | 9 +-
man/comp_err.1 | 2 +-
man/innochecksum.1 | 2 +-
man/make_win_bin_dist.1 | 2 +-
man/mariabackup.1 | 16 +
man/mbstream.1 | 16 +
man/msql2mysql.1 | 2 +-
man/my_print_defaults.1 | 2 +-
man/my_safe_process.1 | 2 +-
man/myisam_ftdump.1 | 2 +-
man/myisamchk.1 | 2 +-
man/myisamlog.1 | 2 +-
man/myisampack.1 | 2 +-
man/mysql-stress-test.pl.1 | 2 +-
man/mysql-test-run.pl.1 | 8 +-
man/mysql.1 | 2 +-
man/mysql.server.1 | 2 +-
man/mysql_client_test.1 | 2 +-
man/mysql_config.1 | 2 +-
man/mysql_convert_table_format.1 | 2 +-
man/mysql_embedded.1 | 1 +
man/mysql_find_rows.1 | 2 +-
man/mysql_fix_extensions.1 | 2 +-
man/mysql_install_db.1 | 21 +-
man/mysql_ldb.1 | 16 +
man/mysql_plugin.1 | 2 +-
man/mysql_secure_installation.1 | 2 +-
man/mysql_setpermission.1 | 2 +-
man/mysql_tzinfo_to_sql.1 | 2 +-
man/mysql_upgrade.1 | 2 +-
man/mysql_waitpid.1 | 2 +-
man/mysqlaccess.1 | 2 +-
man/mysqladmin.1 | 2 +-
man/mysqlbinlog.1 | 2 +-
man/mysqlcheck.1 | 2 +-
man/mysqld.8 | 2 +-
man/mysqld_multi.1 | 2 +-
man/mysqld_safe.1 | 2 +-
man/mysqldump.1 | 2 +-
man/mysqldumpslow.1 | 26 +-
man/mysqlhotcopy.1 | 2 +-
man/mysqlimport.1 | 20 +-
man/mysqlshow.1 | 2 +-
man/mysqlslap.1 | 2 +-
man/mysqltest.1 | 2 +-
man/perror.1 | 2 +-
man/replace.1 | 2 +-
man/resolve_stack_dump.1 | 2 +-
man/resolveip.1 | 2 +-
man/tokuft_logdump.1 | 16 -
man/tokuft_logprint.1 | 16 +
man/tokuftdump.1 | 2 +-
man/wsrep_sst_mariabackup.1 | 16 +
man/wsrep_sst_rsync.1 | 4 +-
man/wsrep_sst_rsync_wan.1 | 16 +
mysql-test/CMakeLists.txt | 2 +-
mysql-test/README | 4 +-
mysql-test/collections/10.0-compatible.list | 594 +
mysql-test/dgcov.pl | 2 +-
mysql-test/disabled.def | 4 +-
mysql-test/extra/binlog_tests/binlog.test | 1 -
.../extra/binlog_tests/binlog_cache_stat.test | 7 +
mysql-test/extra/binlog_tests/binlog_index.inc | 4 +-
mysql-test/extra/binlog_tests/binlog_ioerr.inc | 3 +-
.../extra/binlog_tests/binlog_row_annotate.inc | 13 +-
.../extra/binlog_tests/ctype_ucs_binlog.test | 3 +-
mysql-test/extra/binlog_tests/drop_temp_table.test | 94 +-
.../extra/binlog_tests/mysqlbinlog_row_engine.inc | 8 +-
mysql-test/extra/rpl_tests/check_type.inc | 8 +
.../extra/rpl_tests/create_recursive_construct.inc | 2 +
mysql-test/extra/rpl_tests/rpl_blackhole.test | 2 +-
.../extra/rpl_tests/rpl_blackhole_basic.test | 97 +
mysql-test/extra/rpl_tests/rpl_checksum.inc | 12 +-
mysql-test/extra/rpl_tests/rpl_corruption.inc | 17 +-
.../rpl_tests/rpl_drop_create_temp_table.test | 4 +
mysql-test/extra/rpl_tests/rpl_foreign_key.test | 60 -
.../rpl_tests/rpl_implicit_commit_binlog.test | 430 +-
mysql-test/extra/rpl_tests/rpl_incident.inc | 6 +-
.../extra/rpl_tests/rpl_init_slave_errors.inc | 3 +-
.../rpl_tests/rpl_lower_case_table_names.test | 141 +
mysql-test/extra/rpl_tests/rpl_parallel.inc | 20 +-
mysql-test/extra/rpl_tests/rpl_row_001.test | 4 +-
.../extra/rpl_tests/rpl_stop_middle_group.test | 4 +-
mysql-test/extra/rpl_tests/type_conversions.test | 91 +
mysql-test/include/alter_table_mdev539.inc | 4 +-
mysql-test/include/autoinc_mdev15353.inc | 29 +
mysql-test/include/binlog_inject_error.inc | 4 +-
.../include/binlog_parallel_replication_marks.test | 11 +-
mysql-test/include/check-testcase.test | 5 +-
mysql-test/include/common-tests.inc | 10 +-
mysql-test/include/ctype_like_escape.inc | 6 +
mysql-test/include/ctype_mdev13118.inc | 15 +
mysql-test/include/ctype_utf8_ilseq.inc | 1 +
mysql-test/include/ctype_utf8mb4.inc | 3 +
mysql-test/include/default_charset.inc | 15 +
mysql-test/include/default_group_order.cnf | 11 +
mysql-test/include/default_my.cnf | 3 +-
mysql-test/include/default_mysqld.cnf | 3 +-
mysql-test/include/default_optimizer_switch.inc | 18 +
mysql-test/include/force_restart.inc | 14 +
mysql-test/include/galera_resume.inc | 9 +
mysql-test/include/galera_suspend.inc | 14 +
mysql-test/include/grant_cache.inc | 11 +-
mysql-test/include/have_32bit.inc | 9 +
mysql-test/include/have_64bit.inc | 9 +
.../include/have_aria_used_for_temp_tables.inc | 4 +
mysql-test/include/have_file_key_management.inc | 4 +
mysql-test/include/have_garbd.inc | 4 +
mysql-test/include/have_hostname_cache.inc | 6 +
mysql-test/include/have_mariabackup.inc | 4 +
mysql-test/include/have_openssl.inc | 7 +-
mysql-test/include/have_perfschema.inc | 2 +-
mysql-test/include/have_xtrabackup.inc | 4 +
mysql-test/include/index_merge1.inc | 52 +-
mysql-test/include/index_merge2.inc | 44 +-
mysql-test/include/index_merge_2sweeps.inc | 22 +-
mysql-test/include/index_merge_ror.inc | 13 +-
mysql-test/include/index_merge_ror_cpk.inc | 16 +-
.../include/innodb_encrypt_tables.combinations | 14 +
mysql-test/include/innodb_encrypt_tables.inc | 4 +
mysql-test/include/mix2.inc | 2 +-
mysql-test/include/mtr_check.sql | 2 +-
mysql-test/include/mtr_warnings.sql | 2 +-
mysql-test/include/restore_charset.inc | 13 +
mysql-test/include/search_pattern_in_file.inc | 16 +-
mysql-test/include/set_binlog_format_mixed.sql | 2 +-
mysql-test/include/set_binlog_format_row.sql | 2 +-
mysql-test/include/set_binlog_format_statement.sql | 2 +-
mysql-test/include/wait_condition_with_debug.inc | 69 +
mysql-test/include/wait_for_slave_param.inc | 2 +-
mysql-test/include/wait_until_connected_again.inc | 2 +-
mysql-test/lib/My/Config.pm | 32 +-
mysql-test/lib/My/ConfigFactory.pm | 10 +-
mysql-test/lib/My/CoreDump.pm | 2 +-
mysql-test/lib/My/File/Path.pm | 2 +-
mysql-test/lib/My/Find.pm | 2 +-
mysql-test/lib/My/Handles.pm | 14 +-
mysql-test/lib/My/Options.pm | 2 +-
mysql-test/lib/My/Platform.pm | 2 +-
mysql-test/lib/My/SafeProcess.pm | 8 +-
mysql-test/lib/My/SafeProcess/Base.pm | 2 +-
mysql-test/lib/My/SafeProcess/CMakeLists.txt | 12 +-
mysql-test/lib/My/SafeProcess/safe_kill_win.cc | 2 +-
mysql-test/lib/My/SafeProcess/safe_process.cc | 18 +-
mysql-test/lib/My/SafeProcess/safe_process_win.cc | 2 +-
.../lib/My/SafeProcess/wsrep_check_version.c | 123 +
mysql-test/lib/My/SysInfo.pm | 2 +-
mysql-test/lib/My/Test.pm | 2 +-
mysql-test/lib/generate-ssl-certs.sh | 39 +-
mysql-test/lib/mtr_cases.pm | 2 +-
mysql-test/lib/mtr_gprof.pl | 2 +-
mysql-test/lib/mtr_io.pl | 2 +-
mysql-test/lib/mtr_match.pm | 2 +-
mysql-test/lib/mtr_misc.pl | 2 +-
mysql-test/lib/mtr_process.pl | 2 +-
mysql-test/lib/mtr_report.pm | 28 +-
mysql-test/lib/mtr_results.pm | 2 +-
mysql-test/lib/mtr_stress.pl | 2 +-
mysql-test/lib/mtr_unique.pm | 2 +-
mysql-test/lib/t/Base.t | 2 +-
mysql-test/lib/t/Find.t | 2 +-
mysql-test/lib/t/Options.t | 2 +-
mysql-test/lib/t/Platform.t | 2 +-
mysql-test/lib/t/SafeProcess.t | 2 +-
mysql-test/lib/t/SafeProcessStress.pl | 2 +-
mysql-test/lib/t/copytree.t | 2 +-
mysql-test/lib/t/dummyd.pl | 2 +-
mysql-test/lib/t/rmtree.t | 2 +-
mysql-test/lib/t/testMyConfig.t | 2 +-
mysql-test/lib/t/testMyConfigFactory.t | 2 +-
mysql-test/lib/t/test_child.pl | 2 +-
mysql-test/lib/v1/My/Config.pm | 2 +-
mysql-test/lib/v1/mtr_cases.pl | 2 +-
mysql-test/lib/v1/mtr_gcov.pl | 2 +-
mysql-test/lib/v1/mtr_gprof.pl | 2 +-
mysql-test/lib/v1/mtr_im.pl | 2 +-
mysql-test/lib/v1/mtr_io.pl | 2 +-
mysql-test/lib/v1/mtr_match.pl | 2 +-
mysql-test/lib/v1/mtr_misc.pl | 2 +-
mysql-test/lib/v1/mtr_process.pl | 2 +-
mysql-test/lib/v1/mtr_report.pl | 2 +-
mysql-test/lib/v1/mtr_stress.pl | 2 +-
mysql-test/lib/v1/mtr_timer.pl | 2 +-
mysql-test/lib/v1/mtr_unique.pl | 2 +-
mysql-test/lib/v1/mysql-test-run.pl | 4 +-
mysql-test/mysql-stress-test.pl | 2 +-
mysql-test/mysql-test-run.pl | 767 +-
mysql-test/purify.supp | 2 +-
mysql-test/r/alter_table.result | 203 +-
mysql-test/r/alter_table_errors.result | 35 +
mysql-test/r/analyze_stmt.result | 7 +-
mysql-test/r/analyze_stmt_orderby.result | 2 +-
mysql-test/r/assign_key_cache-5405.result | 19 -
mysql-test/r/assign_key_cache.result | 13 +
mysql-test/r/assign_key_cache_debug.result | 19 +
mysql-test/r/auto_increment.result | 152 +
mysql-test/r/auto_increment_ranges_innodb.result | 14 +
mysql-test/r/bigint.result | 11 +
mysql-test/r/bootstrap.result | 3 +-
mysql-test/r/cache_temporal_4265.result | 3 +-
mysql-test/r/cast.result | 3 +-
mysql-test/r/charset_client_win.result | 2 +
mysql-test/r/check.result | 50 +
mysql-test/r/check_constraint.result | 89 +-
mysql-test/r/check_constraint_innodb.result | 9 +
mysql-test/r/compare.result | 20 +
mysql-test/r/compound.result | 1 +
mysql-test/r/compress.result | 9 +-
mysql-test/r/connect.result | 14 +-
mysql-test/r/connect_debug.result | 20 +
mysql-test/r/constraints.result | 113 +-
mysql-test/r/contributors.result | 4 +-
mysql-test/r/create.result | 12 +-
mysql-test/r/create_drop_binlog.result | 4 +
mysql-test/r/create_drop_event.result | 5 +
mysql-test/r/create_drop_role.result | 9 +
mysql-test/r/create_drop_server.result | 4 +-
mysql-test/r/create_or_replace.result | 43 +-
mysql-test/r/create_or_replace2.result | 4 +-
mysql-test/r/create_replace_tmp.result | 4 +
mysql-test/r/create_w_max_indexes_128.result | 256 +-
mysql-test/r/cte_nonrecursive.result | 229 +
mysql-test/r/cte_recursive.result | 447 +
mysql-test/r/cte_recursive_not_embedded.result | 23 +
mysql-test/r/ctype_big5.result | 140 +-
mysql-test/r/ctype_binary.result | 25 +-
mysql-test/r/ctype_cp1251.result | 2 +-
mysql-test/r/ctype_cp932_binlog_stm.result | 128 +-
mysql-test/r/ctype_create.result | 4 +
mysql-test/r/ctype_eucjpms.result | 151 +-
mysql-test/r/ctype_euckr.result | 181 +-
mysql-test/r/ctype_gb2312.result | 140 +-
mysql-test/r/ctype_gbk.result | 489 +-
mysql-test/r/ctype_latin1.result | 54 +-
mysql-test/r/ctype_latin1_de.result | 6 +-
mysql-test/r/ctype_many.result | 4 +-
mysql-test/r/ctype_recoding.result | 4 +-
mysql-test/r/ctype_sjis.result | 140 +-
mysql-test/r/ctype_tis620.result | 12 +
mysql-test/r/ctype_uca.result | 73 +-
mysql-test/r/ctype_uca_innodb.result | 31 +-
mysql-test/r/ctype_ucs.result | 40 +-
mysql-test/r/ctype_ujis.result | 169 +-
mysql-test/r/ctype_ujis_ucs2.result | 150 +-
mysql-test/r/ctype_utf16.result | 41 +-
mysql-test/r/ctype_utf16_uca.result | 6 +
mysql-test/r/ctype_utf16le.result | 45 +-
mysql-test/r/ctype_utf32.result | 53 +-
mysql-test/r/ctype_utf32_uca.result | 6 +
mysql-test/r/ctype_utf8.result | 132 +-
mysql-test/r/ctype_utf8_def_upgrade.result | 99 +
mysql-test/r/ctype_utf8mb4.result | 88 +-
mysql-test/r/ctype_utf8mb4_heap.result | 27 +-
mysql-test/r/ctype_utf8mb4_innodb.result | 29 +-
mysql-test/r/ctype_utf8mb4_myisam.result | 29 +-
mysql-test/r/ddl_i18n_koi8r.result | 84 +-
mysql-test/r/ddl_i18n_utf8.result | 84 +-
mysql-test/r/default.result | 36 +-
mysql-test/r/default_session.result | 28 +
mysql-test/r/delayed.result | 4 +-
mysql-test/r/derived.result | 44 +
mysql-test/r/derived_cond_pushdown.result | 1993 +-
mysql-test/r/derived_opt.result | 35 +-
mysql-test/r/derived_view.result | 471 +-
mysql-test/r/distinct.result | 30 +
mysql-test/r/drop_bad_db_type.result | 7 +-
mysql-test/r/dyncol.result | 6 +-
mysql-test/r/engine_error_in_alter-8453.result | 5 +-
mysql-test/r/error_simulation.result | 16 +-
mysql-test/r/events_1.result | 72 +-
mysql-test/r/events_2.result | 30 +
mysql-test/r/events_bugs.result | 61 +-
mysql-test/r/events_grant.result | 10 +
mysql-test/r/events_logs_tests.result | 5 +-
mysql-test/r/events_restart.result | 26 +-
mysql-test/r/events_trans.result | 9 +
mysql-test/r/explain_slowquerylog.result | 4 +
mysql-test/r/flush.result | 23 +
mysql-test/r/flush2.result | 15 +-
mysql-test/r/flush_read_lock.result | 2 +
mysql-test/r/foreign_key.result | 26 +
mysql-test/r/fulltext.result | 8 +-
mysql-test/r/func_compress.result | 5 +-
mysql-test/r/func_concat.result | 20 +
mysql-test/r/func_default.result | 10 +-
mysql-test/r/func_gconcat.result | 30 +-
mysql-test/r/func_group.result | 10 +-
mysql-test/r/func_group_innodb.result | 24 +
mysql-test/r/func_hybrid_type.result | 40 +-
mysql-test/r/func_isnull.result | 20 +
mysql-test/r/func_json.result | 189 +-
mysql-test/r/func_math.result | 146 +-
mysql-test/r/func_misc.result | 30 +
mysql-test/r/func_regexp_pcre.result | 18 +-
mysql-test/r/func_regexp_pcre_debug.result | 3 +-
mysql-test/r/func_set.result | 4 +-
mysql-test/r/func_str.result | 112 +-
mysql-test/r/func_time.result | 269 +-
mysql-test/r/func_weight_string.result | 3 +-
mysql-test/r/function_defaults.result | 52 +
mysql-test/r/gis-loaddata.result | 25 +
mysql-test/r/gis-precise.result | 7 +
mysql-test/r/gis.result | 56 +-
mysql-test/r/gis2.result | 38 -
mysql-test/r/gis_notembedded.result | 45 +
mysql-test/r/grant.result | 42 +-
mysql-test/r/grant2.result | 11 +-
mysql-test/r/grant4.result | 21 +
mysql-test/r/grant5.result | 7 +
mysql-test/r/grant_cache_no_prot.result | 9 +-
mysql-test/r/grant_cache_ps_prot.result | 9 +-
mysql-test/r/grant_not_windows.result | 8 +
mysql-test/r/greedy_optimizer.result | 8 +-
mysql-test/r/group_by.result | 33 +-
mysql-test/r/group_min_max.result | 49 +-
mysql-test/r/having.result | 17 +
mysql-test/r/host_cache_size_functionality.result | 7 +-
mysql-test/r/huge_frm-6224.result | 6 +
mysql-test/r/implicit_commit.result | 4 +-
mysql-test/r/index_merge_innodb.result | 78 +-
mysql-test/r/index_merge_myisam.result | 93 +-
mysql-test/r/information_schema-big.result | 8 +-
mysql-test/r/information_schema.result | 4 +-
mysql-test/r/information_schema_all_engines.result | 8 +-
mysql-test/r/information_schema_db.result | 79 +
mysql-test/r/information_schema_parameters.result | 4 +-
mysql-test/r/information_schema_prepare.result | 4 +
mysql-test/r/information_schema_stats.result | 3 +-
mysql-test/r/init_connection_query_cache.result | 3 +-
mysql-test/r/innodb_ext_key.result | 3 +
mysql-test/r/innodb_icp.result | 6 +-
mysql-test/r/innodb_mrr_cpk.result | 2 +-
mysql-test/r/insert.result | 32 +-
mysql-test/r/insert_debug.result | 29 +
mysql-test/r/insert_select.result | 9 +
mysql-test/r/join.result | 1754 +-
mysql-test/r/join_cache.result | 334 +-
mysql-test/r/join_nested.result | 33 +
mysql-test/r/join_nested_jcl6.result | 42 +-
mysql-test/r/join_outer.result | 229 +-
mysql-test/r/join_outer_innodb.result | 2 +-
mysql-test/r/join_outer_jcl6.result | 239 +-
mysql-test/r/kill.result | 16 +
mysql-test/r/limit.result | 16 +
mysql-test/r/loaddata.result | 111 +-
mysql-test/r/loadxml.result | 20 +
mysql-test/r/lock.result | 6 +-
mysql-test/r/lock_multi.result | 12 +-
mysql-test/r/lock_sync.result | 4 +
mysql-test/r/log_slow.result | 38 +
mysql-test/r/log_slow_debug.result | 138 +
mysql-test/r/log_state.result | 3 +-
mysql-test/r/log_tables.result | 9 +-
mysql-test/r/lowercase_fs_off.result | 63 +
mysql-test/r/lowercase_table.result | 4 +
mysql-test/r/lowercase_table_qcache.result | 3 +-
mysql-test/r/max_statement_time.result | 3 +
mysql-test/r/mdev13607.result | 30 +-
mysql-test/r/mdev375.result | 5 +-
mysql-test/r/mdev6830.result | 2 +
mysql-test/r/mdev_19276.result | 11 +
mysql-test/r/merge-big.result | 2 +-
mysql-test/r/merge.result | 8 +-
mysql-test/r/merge_debug.result | 2 +-
mysql-test/r/multi_update.result | 53 +-
mysql-test/r/multi_update2.result | 25 -
mysql-test/r/multi_update_big.result | 25 +
mysql-test/r/multi_update_debug.result | 16 +
mysql-test/r/multi_update_innodb.result | 57 +
mysql-test/r/myisam.result | 23 +
mysql-test/r/myisam_debug.result | 4 +-
mysql-test/r/myisam_icp.result | 2 +-
mysql-test/r/myisam_mrr.result | 1 +
mysql-test/r/myisam_recover.result | 3 +-
mysql-test/r/mysql.result | 32 +-
mysql-test/r/mysql_client_test.result | 10 +
mysql-test/r/mysql_not_windows.result | 2 +
mysql-test/r/mysql_tzinfo_to_sql_symlink.result | 104 +-
mysql-test/r/mysqlbinlog-innodb.result | 8 +-
mysql-test/r/mysqlbinlog.result | 56 +-
mysql-test/r/mysqlbinlog_row_big.result | 1 -
mysql-test/r/mysqlbinlog_row_compressed.result | 20 +-
mysql-test/r/mysqlbinlog_row_minimal.result | 135 +-
mysql-test/r/mysqlbinlog_stmt_compressed.result | 4 +-
mysql-test/r/mysqlcheck.result | 16 +-
mysql-test/r/mysqld--help.result | 10 +-
mysql-test/r/mysqldump-compat.result | 4 +
mysql-test/r/mysqldump.result | 137 +-
mysql-test/r/mysqlslap.result | 3 +
mysql-test/r/mysqltest_tracking_info.result | 31 +
mysql-test/r/named_pipe.result | 9 +-
mysql-test/r/olap.result | 78 +
mysql-test/r/openssl_1.result | 78 +-
mysql-test/r/order_by.result | 43 +
mysql-test/r/order_by_innodb.result | 27 +
mysql-test/r/order_by_zerolength-4285.result | 20 +
mysql-test/r/outfile_loaddata.result | 4 +-
mysql-test/r/partition.result | 102 +-
mysql-test/r/partition_alter.result | 6 +-
mysql-test/r/partition_debug_sync.result | 1 -
mysql-test/r/partition_explicit_prune.result | 19 +
mysql-test/r/partition_innodb.result | 88 +
mysql-test/r/partition_key_cache.result | 4 +-
mysql-test/r/partition_list.result | 210 +
mysql-test/r/plugin.result | 10 +
mysql-test/r/plugin_auth.result | 8 +-
mysql-test/r/plugin_not_embedded.result | 3 +
mysql-test/r/pool_of_threads.result | 12 +-
mysql-test/r/processlist.result | 7 +-
mysql-test/r/processlist_notembedded.result | 12 +
mysql-test/r/ps.result | 226 +-
mysql-test/r/ps_error.result | 73 +
mysql-test/r/ps_innodb.result | 64 +
mysql-test/r/query_cache.result | 11 +-
mysql-test/r/query_cache_debug.result | 14 +-
mysql-test/r/query_cache_innodb.result | 5 +-
mysql-test/r/query_cache_merge.result | 6 +-
mysql-test/r/query_cache_notembedded.result | 4 +-
mysql-test/r/query_cache_with_views.result | 6 +-
mysql-test/r/range.result | 52 +-
mysql-test/r/range_innodb.result | 43 +
mysql-test/r/range_interrupted-13751.result | 4 +-
mysql-test/r/range_mrr_icp.result | 52 +-
mysql-test/r/range_vs_index_merge.result | 2 +-
mysql-test/r/range_vs_index_merge_innodb.result | 2 +-
mysql-test/r/read_only.result | 16 +-
mysql-test/r/read_only_innodb.result | 8 -
mysql-test/r/rename.result | 70 +
mysql-test/r/reopen_temp_table.result | 53 +
mysql-test/r/repair.result | 4 +
mysql-test/r/repair_symlink-5543.result | 4 +-
mysql-test/r/reset_connection.result | 27 +
mysql-test/r/row-checksum-old.result | 16 +
mysql-test/r/row-checksum.result | 16 +
mysql-test/r/select.result | 7 +-
mysql-test/r/select_debug.result | 2 +
mysql-test/r/select_jcl6.result | 10 +-
mysql-test/r/select_pkeycache.result | 7 +-
mysql-test/r/selectivity.result | 362 +-
mysql-test/r/selectivity_innodb.result | 363 +-
mysql-test/r/session_tracker_last_gtid.result | 34 +
mysql-test/r/set_password.result | 181 +
mysql-test/r/set_password_plugin-9835.result | 160 -
mysql-test/r/set_statement.result | 10 +-
mysql-test/r/shm.result | 9 +-
mysql-test/r/show_check.result | 15 +-
mysql-test/r/show_explain.result | 178 +-
mysql-test/r/show_explain_non_select.result | 8 +-
mysql-test/r/show_explain_ps.result | 12 +-
mysql-test/r/show_grants_with_plugin-7985.result | 6 +-
mysql-test/r/slowlog_enospace-10508.result | 5 +-
mysql-test/r/sp-code.result | 3 +-
mysql-test/r/sp-error.result | 2 +-
mysql-test/r/sp-innodb.result | 34 +
mysql-test/r/sp-security.result | 29 +
mysql-test/r/sp-ucs2.result | 34 +-
mysql-test/r/sp-vars.result | 8 +-
mysql-test/r/sp.result | 134 +-
mysql-test/r/sp_notembedded.result | 6 +-
mysql-test/r/sp_trans.result | 2 +-
mysql-test/r/ssl-crl-revoked-crl.result | 1 -
mysql-test/r/ssl.result | 18 +-
mysql-test/r/ssl_cert_verify.result | 5 -
mysql-test/r/ssl_cipher.result | 63 +-
mysql-test/r/ssl_compress.result | 9 +-
mysql-test/r/ssl_crl.result | 24 +-
mysql-test/r/ssl_crl_clients-valid.result | 24 -
mysql-test/r/ssl_crl_clients.result | 6 +
mysql-test/r/ssl_crl_clients_valid.result | 16 -
mysql-test/r/ssl_crl_clrpath.result | 23 -
mysql-test/r/ssl_system_ca,bad.result | 1 +
mysql-test/r/ssl_system_ca.result | 2 +
mysql-test/r/ssl_verify_ip.result | 4 +
mysql-test/r/stat_tables-enospc.result | 6 +-
mysql-test/r/stat_tables.result | 310 +
mysql-test/r/stat_tables_innodb.result | 310 +
mysql-test/r/statistics.result | 38 +
mysql-test/r/statistics_close.result | 11 +
mysql-test/r/status2.result | 4 +-
mysql-test/r/strict.result | 184 +-
mysql-test/r/subselect-crash_15755.result | 317 +
mysql-test/r/subselect.result | 56 +-
mysql-test/r/subselect2.result | 24 +-
mysql-test/r/subselect3.result | 6 +-
mysql-test/r/subselect3_jcl6.result | 15 +-
mysql-test/r/subselect_cache.result | 2 +
mysql-test/r/subselect_exists2in.result | 12 +-
mysql-test/r/subselect_extra.result | 4 +-
mysql-test/r/subselect_extra_no_semijoin.result | 22 +
mysql-test/r/subselect_mat.result | 262 +-
mysql-test/r/subselect_mat_cost.result | 3 +-
mysql-test/r/subselect_mat_cost_bugs.result | 4 +-
mysql-test/r/subselect_no_exists_to_in.result | 62 +-
mysql-test/r/subselect_no_mat.result | 56 +-
mysql-test/r/subselect_no_opts.result | 56 +-
mysql-test/r/subselect_no_scache.result | 56 +-
mysql-test/r/subselect_no_semijoin.result | 111 +-
mysql-test/r/subselect_sj.result | 103 +-
mysql-test/r/subselect_sj2.result | 2 +-
mysql-test/r/subselect_sj2_jcl6.result | 6 +-
mysql-test/r/subselect_sj2_mat.result | 200 +-
mysql-test/r/subselect_sj_jcl6.result | 112 +-
mysql-test/r/subselect_sj_mat.result | 246 +-
mysql-test/r/subselect_sj_nonmerged.result | 6 +-
mysql-test/r/sum_distinct-big.result | 40 +-
mysql-test/r/system_mysql_db.result | 4 +-
mysql-test/r/system_mysql_db_fix40123.result | 4 +-
mysql-test/r/temp_table.result | 36 +
mysql-test/r/timezone2.result | 33 +
mysql-test/r/trigger.result | 45 +-
mysql-test/r/truncate-stale-6500.result | 3 +-
mysql-test/r/type_bit.result | 26 +
mysql-test/r/type_blob.result | 25 +
mysql-test/r/type_date.result | 80 +-
mysql-test/r/type_datetime.result | 141 +-
mysql-test/r/type_decimal.result | 49 +-
mysql-test/r/type_float.result | 42 +-
mysql-test/r/type_int.result | 50 +
mysql-test/r/type_json.result | 2 +-
mysql-test/r/type_newdecimal.result | 110 +-
mysql-test/r/type_num.result | 168 +-
mysql-test/r/type_time.result | 88 +-
mysql-test/r/type_timestamp.result | 4 +-
mysql-test/r/type_year.result | 18 +-
mysql-test/r/udf.result | 14 +
mysql-test/r/udf_query_cache.result | 3 +-
mysql-test/r/union.result | 61 +-
mysql-test/r/union_crash-714.result | 4 +-
mysql-test/r/uniques_crash-7912.result | 11 -
mysql-test/r/update.result | 13 +
mysql-test/r/update_innodb.result | 24 +
mysql-test/r/user_var-binlog.result | 2 +-
mysql-test/r/userstat-badlogin-4824.result | 3 +-
mysql-test/r/userstat.result | 12 +-
mysql-test/r/variables-notembedded.result | 17 +-
mysql-test/r/variables.result | 41 +-
mysql-test/r/view.result | 114 +-
mysql-test/r/view_alias.result | 10 +-
mysql-test/r/view_grant.result | 4 +
mysql-test/r/warnings.result | 68 +-
mysql-test/r/warnings_debug.result | 2 +
mysql-test/r/win.result | 797 +-
mysql-test/r/win_first_last_value.result | 20 +-
mysql-test/r/win_lead_lag.result | 11 +
mysql-test/r/win_percent_cume.result | 72 +-
mysql-test/r/win_rank.result | 81 +-
mysql-test/r/xtradb_mrr.result | 1 +
mysql-test/std_data/binlog_before_20574.bin | Bin 0 -> 1022 bytes
mysql-test/std_data/ca-cert-verify.pem | 20 -
mysql-test/std_data/cacert.pem | 110 +-
mysql-test/std_data/cakey.pem | 52 +-
mysql-test/std_data/checkDBI_DBD-mysql.pl | 2 +-
mysql-test/std_data/client-cert.crl | 12 +
mysql-test/std_data/client-cert.pem | 102 +-
mysql-test/std_data/client-key.pem | 38 +-
mysql-test/std_data/crl-ca-cert.pem | 63 -
mysql-test/std_data/crl-client-cert.pem | 62 -
mysql-test/std_data/crl-client-key.pem | 15 -
mysql-test/std_data/crl-client-revoked.crl | 10 -
mysql-test/std_data/crl-server-cert.pem | 62 -
mysql-test/std_data/crl-server-key.pem | 15 -
mysql-test/std_data/crldir/ed1f42db.r0 | 12 +
mysql-test/std_data/crldir/fc725416.r0 | 10 -
mysql-test/std_data/frm/mdev16518.frm | Bin 0 -> 8619 bytes
mysql-test/std_data/frm/t1.frm | Bin 0 -> 8584 bytes
mysql-test/std_data/ldml/latin1.xml | 2 +-
mysql-test/std_data/loaddata/mdev-15497.txt | 1 +
mysql-test/std_data/loaddata/mdev14628a.xml | 4 +
mysql-test/std_data/loaddata/mdev14628b.xml | 3 +
mysql-test/std_data/loaddata/nl.txt | 1 +
mysql-test/std_data/mdev17909#P#p20181029.MYD | Bin
mysql-test/std_data/mdev17909#P#p20181029.MYI | Bin 0 -> 1024 bytes
mysql-test/std_data/mdev17909#P#p20181128.MYD | Bin
mysql-test/std_data/mdev17909#P#p20181128.MYI | Bin 0 -> 1024 bytes
mysql-test/std_data/mdev17909.frm | Bin 0 -> 3284 bytes
mysql-test/std_data/mdev17909.par | Bin 0 -> 48 bytes
mysql-test/std_data/server-cert-verify-fail.pem | 19 -
mysql-test/std_data/server-cert-verify-pass.pem | 19 -
mysql-test/std_data/server-cert.crl | 12 +
mysql-test/std_data/server-cert.pem | 100 +-
mysql-test/std_data/server-key-verify-fail.pem | 27 -
mysql-test/std_data/server-key-verify-pass.pem | 27 -
mysql-test/std_data/server-key.pem | 38 +-
mysql-test/std_data/server-new-cert.pem | 81 +
mysql-test/std_data/server-new-key.pem | 27 +
mysql-test/std_data/server8k-cert.pem | 246 +-
mysql-test/std_data/server8k-key.pem | 194 +-
mysql-test/std_data/serversan-cert.pem | 98 +-
mysql-test/std_data/serversan-key.pem | 40 +-
.../maria100226_char_to_vchar_stored.MYD | Bin 0 -> 60 bytes
.../maria100226_char_to_vchar_stored.MYI | Bin 0 -> 1024 bytes
.../maria100226_char_to_vchar_stored.frm | Bin 0 -> 483 bytes
.../maria100226_char_to_vchar_virtual.MYD | Bin 0 -> 60 bytes
.../maria100226_char_to_vchar_virtual.MYI | Bin 0 -> 2048 bytes
.../maria100226_char_to_vchar_virtual.frm | Bin 0 -> 972 bytes
mysql-test/suite.pm | 36 +-
mysql-test/suite/archive/archive_eits.result | 24 +
mysql-test/suite/archive/archive_eits.test | 32 +
mysql-test/suite/archive/discover.result | 8 +
mysql-test/suite/archive/discover_5438.opt | 1 +
mysql-test/suite/archive/partition_archive.result | 4 +-
mysql-test/suite/archive/partition_archive.test | 3 +-
.../suite/binlog/include/check_binlog_size.inc | 31 +
.../suite/binlog/r/binlog_base64_flag.result | 21 +-
.../r/binlog_flush_binlogs_delete_domain.result | 12 +
mysql-test/suite/binlog/r/binlog_index.result | 3 +-
mysql-test/suite/binlog/r/binlog_innodb_stm.result | 17 +
.../binlog/r/binlog_invalid_read_in_rotate.result | 18 +
mysql-test/suite/binlog/r/binlog_ioerr.result | 3 +-
mysql-test/suite/binlog/r/binlog_mdev717.result | 2 +
.../suite/binlog/r/binlog_mixed_cache_stat.result | 6 +
.../suite/binlog/r/binlog_mysqlbinlog2.result | 504 +-
.../suite/binlog/r/binlog_mysqlbinlog_row.result | 2 +-
.../binlog/r/binlog_mysqlbinlog_row_frag.result | 24 +
.../binlog/r/binlog_mysqlbinlog_row_innodb.result | 8 +-
.../binlog/r/binlog_mysqlbinlog_row_myisam.result | 8 +-
.../binlog/r/binlog_mysqlbinlog_row_trans.result | 2 +-
.../binlog/r/binlog_mysqlbinlog_stop_never.result | 16 +
.../r/binlog_parallel_replication_marks_row.result | 2 -
.../suite/binlog/r/binlog_row_annotate.result | 12 +-
.../suite/binlog/r/binlog_row_cache_stat.result | 6 +
.../suite/binlog/r/binlog_row_ctype_ucs.result | 4 +-
.../suite/binlog/r/binlog_row_drop_tmp_tbl.result | 49 +-
.../binlog/r/binlog_row_mix_innodb_myisam.result | 2 -
.../binlog/r/binlog_row_mysqlbinlog_options.result | 4 +-
.../r/binlog_show_binlog_event_random_pos.result | 12 +
mysql-test/suite/binlog/r/binlog_sql_mode.result | 2 +
.../suite/binlog/r/binlog_stm_cache_stat.result | 6 +
.../suite/binlog/r/binlog_stm_ctype_ucs.result | 4 +-
.../suite/binlog/r/binlog_stm_drop_tmp_tbl.result | 45 +-
.../suite/binlog/r/binlog_tmp_table_row.result | 7 +
mysql-test/suite/binlog/r/binlog_unsafe.result | 2 +
.../suite/binlog/r/binlog_write_error.result | 51 +-
.../suite/binlog/r/flashback-largebinlog.result | 70 +
mysql-test/suite/binlog/r/flashback.result | 22 +-
mysql-test/suite/binlog/t/binlog_base64_flag.test | 22 +
.../t/binlog_flush_binlogs_delete_domain.test | 19 +
mysql-test/suite/binlog/t/binlog_innodb.opt | 1 +
mysql-test/suite/binlog/t/binlog_innodb_stm.test | 26 +
.../t/binlog_invalid_read_in_rotate.combinations | 5 +
.../binlog/t/binlog_invalid_read_in_rotate.test | 48 +
.../suite/binlog/t/binlog_max_extension.test | 18 +-
.../suite/binlog/t/binlog_mixed_cache_stat.opt | 1 +
mysql-test/suite/binlog/t/binlog_mysqlbinlog2.test | 49 +-
.../suite/binlog/t/binlog_mysqlbinlog_row.test | 2 +-
.../binlog/t/binlog_mysqlbinlog_row_frag.test | 46 +
.../binlog/t/binlog_mysqlbinlog_row_trans.test | 2 +-
.../binlog/t/binlog_mysqlbinlog_stop_never.test | 66 +
.../binlog/t/binlog_row_mysqlbinlog_options.test | 4 +-
...inlog_show_binlog_event_random_pos.combinations | 5 +
.../t/binlog_show_binlog_event_random_pos.test | 37 +
.../suite/binlog/t/binlog_tmp_table_row.test | 30 +
.../suite/binlog/t/binlog_variables_log_bin.test | 3 +-
.../suite/binlog/t/binlog_variables_relay_log.test | 3 +-
.../suite/binlog/t/flashback-largebinlog.test | 114 +
mysql-test/suite/binlog/t/flashback.test | 34 +-
.../suite/binlog_encryption/binlog_index.result | 3 +-
.../suite/binlog_encryption/binlog_ioerr.result | 3 +-
.../binlog_mdev_20574_old_binlog.result | 27 +
.../binlog_mdev_20574_old_binlog.test | 46 +
.../binlog_encryption/binlog_row_annotate.result | 15 +-
.../binlog_encryption/binlog_write_error.result | 51 +-
.../suite/binlog_encryption/encrypted_master.test | 1 +
.../suite/binlog_encryption/encrypted_slave.test | 1 +
.../suite/binlog_encryption/mysqlbinlog.result | 1 +
.../suite/binlog_encryption/mysqlbinlog.test | 3 +
.../suite/binlog_encryption/rpl_checksum.result | 11 +-
.../suite/binlog_encryption/rpl_corruption.result | 13 +-
.../suite/binlog_encryption/rpl_incident.result | 2 +
.../binlog_encryption/rpl_init_slave_errors.result | 3 +-
.../suite/binlog_encryption/rpl_parallel.result | 18 +-
.../rpl_parallel_ignored_errors.result | 50 +
.../rpl_parallel_ignored_errors.test | 1 +
.../suite/binlog_encryption/rpl_typeconv.result | 44 +
mysql-test/suite/binlog_encryption/testdata.opt | 1 -
mysql-test/suite/encryption/disabled.def | 2 -
mysql-test/suite/encryption/my.cnf | 1 +
.../r/compressed_import_tablespace.result | 39 +
.../encryption/r/corrupted_during_recovery.result | 19 +
.../suite/encryption/r/debug_key_management.result | 1 +
mysql-test/suite/encryption/r/file_creation.result | 26 +
mysql-test/suite/encryption/r/innochecksum.result | 2 +-
.../encryption/r/innodb-bad-key-change.result | 32 +-
.../encryption/r/innodb-bad-key-change2.result | 37 +-
.../encryption/r/innodb-bad-key-change3.result | 1 +
.../encryption/r/innodb-bad-key-change4.result | 12 +-
.../r/innodb-checksum-algorithm,32k.rdiff | 18 +-
.../r/innodb-checksum-algorithm,64k.rdiff | 18 +-
.../encryption/r/innodb-checksum-algorithm.result | 246 +-
.../encryption/r/innodb-compressed-blob.result | 7 +-
.../r/innodb-discard-import-change.result | 1 +
.../encryption/r/innodb-discard-import.result | 2 +
.../encryption/r/innodb-encryption-alter.result | 68 +-
.../encryption/r/innodb-encryption-disable.result | 6 +-
.../suite/encryption/r/innodb-force-corrupt.result | 12 +-
.../r/innodb-key-rotation-disable.result | 4 -
.../suite/encryption/r/innodb-missing-key.result | 8 +-
.../suite/encryption/r/innodb-redo-badkey.result | 7 +-
.../suite/encryption/r/innodb-redo-nokeys.result | 2 +-
.../suite/encryption/r/innodb-spatial-index.result | 2 +-
.../r/innodb_encrypt_key_rotation_age.result | 75 +
.../suite/encryption/r/innodb_encrypt_log.result | 2 +
.../r/innodb_encrypt_temporary_tables.result | 19 +
.../suite/encryption/r/innodb_encryption.result | 2 +
.../r/innodb_encryption_discard_import.result | 2 +
.../suite/encryption/r/innodb_lotoftables.result | 1221 -
mysql-test/suite/encryption/r/tempfiles.result | 3 +-
.../encryption/t/compressed_import_tablespace.opt | 3 +
.../encryption/t/compressed_import_tablespace.test | 46 +
.../encryption/t/corrupted_during_recovery.test | 65 +
mysql-test/suite/encryption/t/file_creation.opt | 1 +
mysql-test/suite/encryption/t/file_creation.test | 41 +
mysql-test/suite/encryption/t/innochecksum.test | 3 +-
.../suite/encryption/t/innodb-bad-key-change.test | 23 +-
.../suite/encryption/t/innodb-bad-key-change2.test | 28 +-
.../suite/encryption/t/innodb-bad-key-change4.test | 1 +
.../encryption/t/innodb-checksum-algorithm.test | 9 +-
.../suite/encryption/t/innodb-compressed-blob.test | 5 +-
.../suite/encryption/t/innodb-discard-import.test | 13 +-
.../encryption/t/innodb-encryption-alter.test | 64 +-
.../encryption/t/innodb-encryption-disable.test | 6 +-
.../suite/encryption/t/innodb-force-corrupt.test | 18 +-
.../encryption/t/innodb-key-rotation-disable.test | 5 -
.../suite/encryption/t/innodb-missing-key.test | 10 +-
.../suite/encryption/t/innodb-redo-badkey.test | 7 +-
.../suite/encryption/t/innodb-redo-nokeys.test | 2 +-
.../suite/encryption/t/innodb-spatial-index.test | 2 -
.../t/innodb_encrypt_key_rotation_age.opt | 2 +
.../t/innodb_encrypt_key_rotation_age.test | 82 +
.../encryption/t/innodb_encrypt_log_corruption.opt | 1 +
.../t/innodb_encrypt_temporary_tables.opt | 2 +
.../t/innodb_encrypt_temporary_tables.test | 23 +
.../suite/encryption/t/innodb_lotoftables.opt | 3 -
.../suite/encryption/t/innodb_lotoftables.test | 231 -
mysql-test/suite/encryption/t/tempfiles.test | 3 +-
.../funcs/r/in_number_boundary_error.result | 12 +-
.../r/in_number_decimal_boundary_error.result | 8 +-
.../suite/engines/iuds/r/insert_decimal.result | 12 +-
.../suite/engines/iuds/r/insert_number.result | 304 +-
mysql-test/suite/engines/iuds/r/insert_year.result | 16 +-
.../suite/engines/iuds/r/update_decimal.result | 4 +-
.../engines/iuds/r/update_delete_number.result | 17 +
mysql-test/suite/federated/have_federatedx.inc | 2 +-
mysql-test/suite/funcs_1/datadict/is_routines.inc | 2 +
mysql-test/suite/funcs_1/datadict/is_schemata.inc | 1 +
mysql-test/suite/funcs_1/datadict/is_tables.inc | 2 +
mysql-test/suite/funcs_1/datadict/is_triggers.inc | 6 +-
.../suite/funcs_1/datadict/processlist_priv.inc | 13 +
.../suite/funcs_1/datadict/processlist_val.inc | 7 +
mysql-test/suite/funcs_1/datadict/tables.inc | 2 +
mysql-test/suite/funcs_1/r/innodb_func_view.result | 72 +-
mysql-test/suite/funcs_1/r/is_basics_mixed.result | 2 +-
.../suite/funcs_1/r/is_check_constraints.result | 147 +
.../suite/funcs_1/r/is_columns_innodb.result | 4 +-
mysql-test/suite/funcs_1/r/is_columns_is.result | 10 +
.../suite/funcs_1/r/is_columns_is_embedded.result | 10 +
mysql-test/suite/funcs_1/r/is_columns_mysql.result | 16 +-
.../funcs_1/r/is_columns_mysql_embedded.result | 8 +-
.../suite/funcs_1/r/is_engines_archive.result | 2 +-
mysql-test/suite/funcs_1/r/is_engines_csv.result | 2 +-
.../suite/funcs_1/r/is_engines_federated.result | 2 +-
.../suite/funcs_1/r/is_engines_myisam.result | 2 +-
.../suite/funcs_1/r/is_routines_embedded.result | 12 +
mysql-test/suite/funcs_1/r/is_tables_is.result | 46 +
.../suite/funcs_1/r/is_tables_is_embedded.result | 46 +
mysql-test/suite/funcs_1/r/is_tables_mysql.result | 2 +-
.../funcs_1/r/is_tables_mysql_embedded.result | 4 +-
mysql-test/suite/funcs_1/r/is_triggers.result | 3 +-
.../suite/funcs_1/r/is_triggers_embedded.result | 3 +-
mysql-test/suite/funcs_1/r/memory_func_view.result | 72 +-
mysql-test/suite/funcs_1/r/myisam_func_view.result | 72 +-
mysql-test/suite/funcs_1/r/storedproc.result | 6 +-
.../suite/funcs_1/storedproc/storedproc_07.inc | 1 +
.../suite/funcs_1/storedproc/storedproc_08.inc | 1 +
mysql-test/suite/funcs_1/t/innodb_trig_03e.test | 1 +
mysql-test/suite/funcs_1/t/is_basics_mixed.test | 5 +-
.../suite/funcs_1/t/is_check_constraints.test | 117 +
mysql-test/suite/funcs_1/t/is_columns.test | 1 +
mysql-test/suite/funcs_1/t/is_columns_innodb.test | 3 +-
mysql-test/suite/funcs_1/t/is_columns_memory.test | 1 +
mysql-test/suite/funcs_1/t/is_columns_myisam.test | 2 +
.../suite/funcs_1/t/is_schemata_is_mysql_test.test | 1 +
mysql-test/suite/funcs_1/t/memory_trig_03e.test | 1 +
mysql-test/suite/funcs_1/t/myisam_trig_03e.test | 1 +
mysql-test/suite/funcs_1/t/storedproc.test | 2 +
.../suite/funcs_2/charset/charset_master.test | 8 +-
mysql-test/suite/funcs_2/r/innodb_charset.result | 4 +-
mysql-test/suite/funcs_2/r/memory_charset.result | 4 +-
mysql-test/suite/funcs_2/r/myisam_charset.result | 4 +-
mysql-test/suite/galera/disabled.def | 52 +-
mysql-test/suite/galera/galera_2nodes.cnf | 11 +-
.../suite/galera/galera_2nodes_as_master_slave.cnf | 83 -
.../galera_2nodes_as_master_with_repl_filter.cnf | 87 -
mysql-test/suite/galera/galera_4nodes.cnf | 4 +
mysql-test/suite/galera/include/galera_resume.inc | 9 -
.../suite/galera/include/have_mariabackup.inc | 4 -
.../suite/galera/include/have_xtrabackup.inc | 4 -
.../suite/galera/include/reset_query_cache.inc | 11 +
mysql-test/suite/galera/r/GAL-419.result | 6 +
mysql-test/suite/galera/r/MW-284.result | 11 +-
mysql-test/suite/galera/r/MW-286.result | 6 +-
mysql-test/suite/galera/r/MW-328A.result | 25 +-
mysql-test/suite/galera/r/MW-328B.result | 2 +-
mysql-test/suite/galera/r/MW-328C.result | 23 -
mysql-test/suite/galera/r/MW-329.result | 6 +-
mysql-test/suite/galera/r/MW-336.result | 19 +-
mysql-test/suite/galera/r/MW-369.result | 49 +-
mysql-test/suite/galera/r/MW-388.result | 16 +-
mysql-test/suite/galera/r/MW-402.result | 8 +-
mysql-test/suite/galera/r/MW-416.result | 111 +
mysql-test/suite/galera/r/MW-44.result | 18 -
mysql-test/suite/galera/r/MW-86-wait1.result | 11 +-
mysql-test/suite/galera/r/MW-86-wait8.result | 11 +-
mysql-test/suite/galera/r/galera#500.result | 14 +
mysql-test/suite/galera/r/galera#505.result | 8 +
.../r/galera_FK_duplicate_client_insert.result | 380 +
.../suite/galera/r/galera_as_slave_ctas.result | 28 +
.../suite/galera/r/galera_as_slave_gtid.result | 7 +
.../galera/r/galera_as_slave_gtid_myisam.result | 29 +
.../galera/r/galera_autoinc_sst_mariabackup.result | 47 +
.../r/galera_bf_background_statistics.result | 33 +
.../galera/r/galera_binlog_stmt_autoinc.result | 161 +
mysql-test/suite/galera/r/galera_defaults.result | 70 +-
.../suite/galera/r/galera_drop_database.result | 23 +
.../suite/galera/r/galera_encrypt_tmp_files.result | 37 +
mysql-test/suite/galera/r/galera_enum.result | 37 +-
mysql-test/suite/galera/r/galera_events.result | 2 +
mysql-test/suite/galera/r/galera_events2.result | 123 +
.../galera/r/galera_forced_binlog_format.result | 6 +-
.../suite/galera/r/galera_gcache_recover.result | 7 +
.../r/galera_gcache_recover_full_gcache.result | 7 +
.../galera/r/galera_gcache_recover_manytrx.result | 29 +
.../suite/galera/r/galera_gcs_fc_limit.result | 27 +-
.../suite/galera/r/galera_gcs_fragment.result | 13 +-
mysql-test/suite/galera/r/galera_gtid.result | 10 +-
.../galera/r/galera_gtid_slave_sst_rsync.result | 1 +
.../r/galera_ist_innodb_flush_logs,debug.rdiff | 103 +
.../galera/r/galera_ist_innodb_flush_logs.result | 104 +-
.../galera/r/galera_ist_mariabackup,debug.rdiff | 114 +
.../suite/galera/r/galera_ist_mariabackup.result | 287 +
...a_ist_mariabackup_innodb_flush_logs,debug.rdiff | 114 +
...galera_ist_mariabackup_innodb_flush_logs.result | 96 +
.../galera/r/galera_ist_mysqldump,debug.rdiff | 117 +
.../suite/galera/r/galera_ist_mysqldump.result | 121 +-
.../galera/r/galera_ist_restart_joiner.result | 1 -
.../suite/galera/r/galera_ist_rsync,debug.rdiff | 114 +
mysql-test/suite/galera/r/galera_ist_rsync.result | 108 -
.../galera/r/galera_ist_xtrabackup-v2,debug.rdiff | 114 +
.../suite/galera/r/galera_ist_xtrabackup-v2.result | 122 +-
.../suite/galera/r/galera_kill_applier.result | 15 +-
mysql-test/suite/galera/r/galera_kill_ddl.result | 11 +-
.../suite/galera/r/galera_kill_largechanges.result | 18 +-
.../suite/galera/r/galera_kill_nochanges.result | 16 +-
.../suite/galera/r/galera_kill_smallchanges.result | 6 +-
mysql-test/suite/galera/r/galera_load_data.result | 46 +
mysql-test/suite/galera/r/galera_log_bin.result | 94 +-
.../suite/galera/r/galera_log_output_csv.result | 2 +
mysql-test/suite/galera/r/galera_many_rows.result | 28 +-
mysql-test/suite/galera/r/galera_mdl_race.result | 16 +-
.../r/galera_parallel_autoinc_largetrx.result | 8 +-
.../r/galera_parallel_autoinc_manytrx.result | 33 +-
mysql-test/suite/galera/r/galera_partition.result | 424 +
.../suite/galera/r/galera_pc_ignore_sb.result | 7 +-
.../galera/r/galera_performance_schema.result | 44 +
.../galera/r/galera_prepared_statement.result | 2 +-
.../galera/r/galera_query_cache_sync_wait.result | 24 +-
.../suite/galera/r/galera_rsu_drop_pk.result | 50 +-
.../suite/galera/r/galera_shutdown_nonprim.result | 9 +
.../galera/r/galera_sst_mariabackup,debug.rdiff | 4 +-
.../galera_sst_mariabackup_encrypt_with_key.result | 3 +
.../r/galera_sst_mariabackup_table_options.result | 997 +
.../r/galera_sst_mysqldump_with_key,debug.rdiff | 117 +
.../galera/r/galera_sst_mysqldump_with_key.result | 122 +-
.../suite/galera/r/galera_sst_rsync2,debug.rdiff | 114 +
mysql-test/suite/galera/r/galera_sst_rsync2.result | 288 +
.../galera/r/galera_sst_rsync_data_dir,debug.rdiff | 114 +
.../galera/r/galera_sst_rsync_data_dir.result | 288 +
.../galera_sst_xtrabackup-v2_data_dir,debug.rdiff | 103 +
.../r/galera_sst_xtrabackup-v2_data_dir.result | 262 +
.../suite/galera/r/galera_suspend_slave.result | 2 +
.../suite/galera/r/galera_toi_ddl_fk_insert.result | 31 +-
.../suite/galera/r/galera_toi_truncate.result | 2 +
.../galera/r/galera_unicode_identifiers.result | 6 +-
.../galera/r/galera_var_auto_inc_control_on.result | 31 +-
.../suite/galera/r/galera_var_desync_on.result | 2 -
.../suite/galera/r/galera_var_dirty_reads.result | 7 +-
.../galera/r/galera_var_gtid_domain_id.result | 5 +
.../suite/galera/r/galera_var_node_address.result | 21 +-
.../suite/galera/r/galera_var_notify_cmd.result | 19 +-
.../galera/r/galera_var_reject_queries.result | 6 +-
.../galera/r/galera_var_retry_autocommit.result | 84 +-
.../suite/galera/r/galera_var_slave_threads.result | 83 +-
mysql-test/suite/galera/r/galera_wan.result | 6 +-
.../suite/galera/r/galera_wsrep_new_cluster.result | 2 +-
mysql-test/suite/galera/r/mdev_10518.result | 5 +
mysql-test/suite/galera/r/mysql-wsrep#332.result | 139 +
mysql-test/suite/galera/r/partition.result | 18 +-
mysql-test/suite/galera/r/query_cache.result | 43 +-
mysql-test/suite/galera/suite.pm | 52 +-
mysql-test/suite/galera/t/GAL-419.test | 3 +
mysql-test/suite/galera/t/MW-284.test | 16 +-
mysql-test/suite/galera/t/MW-286.test | 6 +-
mysql-test/suite/galera/t/MW-313-master.opt | 1 -
mysql-test/suite/galera/t/MW-313.cnf | 12 +
mysql-test/suite/galera/t/MW-328-footer.inc | 2 +-
mysql-test/suite/galera/t/MW-328A.test | 42 +-
mysql-test/suite/galera/t/MW-328B.test | 2 +-
mysql-test/suite/galera/t/MW-328C.test | 36 -
mysql-test/suite/galera/t/MW-328D.test | 1 -
mysql-test/suite/galera/t/MW-328E.test | 1 -
mysql-test/suite/galera/t/MW-329-master.opt | 1 -
mysql-test/suite/galera/t/MW-329.cnf | 9 +
mysql-test/suite/galera/t/MW-329.test | 5 +
mysql-test/suite/galera/t/MW-336.cnf | 8 +
mysql-test/suite/galera/t/MW-336.test | 45 +-
mysql-test/suite/galera/t/MW-388.test | 18 +-
mysql-test/suite/galera/t/MW-416.test | 132 +
mysql-test/suite/galera/t/MW-44.test | 22 +-
mysql-test/suite/galera/t/MW-86-wait1-master.opt | 1 -
mysql-test/suite/galera/t/MW-86-wait1.test | 5 +-
mysql-test/suite/galera/t/MW-86-wait8-master.opt | 1 -
mysql-test/suite/galera/t/MW-86-wait8.cnf | 10 +
mysql-test/suite/galera/t/MW-86-wait8.test | 5 +-
.../suite/galera/t/enforce_storage_engine2.cnf | 13 +
.../suite/galera/t/enforce_storage_engine2.opt | 2 -
mysql-test/suite/galera/t/galera#500.test | 38 +
mysql-test/suite/galera/t/galera#505.test | 26 +
.../t/galera_FK_duplicate_client_insert.test | 161 +
.../t/galera_applier_ftwrl_table_alter-master.opt | 1 -
.../galera/t/galera_applier_ftwrl_table_alter.cnf | 14 +
mysql-test/suite/galera/t/galera_as_slave_ctas.cnf | 5 +
.../suite/galera/t/galera_as_slave_ctas.test | 75 +
.../suite/galera/t/galera_as_slave_gtid.test | 10 +
.../suite/galera/t/galera_as_slave_gtid_myisam.cnf | 6 +
.../galera/t/galera_as_slave_gtid_myisam.test | 65 +
.../galera/t/galera_autoinc_sst_mariabackup.cnf | 12 +
.../galera/t/galera_autoinc_sst_mariabackup.test | 91 +
.../galera/t/galera_autoinc_sst_xtrabackup.cnf | 1 +
.../galera/t/galera_bf_background_statistics.cnf | 9 +
.../galera/t/galera_bf_background_statistics.test | 49 +
.../galera/t/galera_binlog_checksum-master.opt | 1 -
.../suite/galera/t/galera_binlog_checksum.cnf | 13 +
.../t/galera_binlog_event_max_size_max-master.opt | 1 -
.../galera/t/galera_binlog_event_max_size_max.cnf | 9 +
.../t/galera_binlog_event_max_size_min-master.opt | 1 -
.../galera/t/galera_binlog_event_max_size_min.cnf | 9 +
.../suite/galera/t/galera_binlog_stmt_autoinc.test | 232 +
mysql-test/suite/galera/t/galera_defaults.test | 36 +-
.../suite/galera/t/galera_drop_database.test | 47 +
.../suite/galera/t/galera_encrypt_tmp_files.cnf | 8 +
.../suite/galera/t/galera_encrypt_tmp_files.test | 57 +
mysql-test/suite/galera/t/galera_enum.test | 18 +-
mysql-test/suite/galera/t/galera_events2.test | 148 +
mysql-test/suite/galera/t/galera_flush-master.opt | 1 -
mysql-test/suite/galera/t/galera_flush.cnf | 10 +
mysql-test/suite/galera/t/galera_flush_local.cnf | 12 +
mysql-test/suite/galera/t/galera_flush_local.opt | 3 -
.../galera/t/galera_forced_binlog_format.test | 6 +
.../galera/t/galera_gcache_recover_manytrx.test | 13 +-
mysql-test/suite/galera/t/galera_gcs_fc_limit.test | 30 +-
mysql-test/suite/galera/t/galera_gcs_fragment.test | 7 +
mysql-test/suite/galera/t/galera_gtid-master.opt | 1 -
mysql-test/suite/galera/t/galera_gtid.cnf | 10 +
mysql-test/suite/galera/t/galera_gtid.test | 8 +-
.../galera/t/galera_gtid_slave_sst_rsync.test | 3 +
.../galera/t/galera_ist_innodb_flush_logs.cnf | 1 +
.../galera/t/galera_ist_innodb_flush_logs.test | 1 +
.../suite/galera/t/galera_ist_mariabackup.cnf | 12 +
.../suite/galera/t/galera_ist_mariabackup.test | 16 +
.../t/galera_ist_mariabackup_innodb_flush_logs.cnf | 14 +
.../galera_ist_mariabackup_innodb_flush_logs.test | 13 +
.../suite/galera/t/galera_ist_mysqldump.test | 7 +
.../suite/galera/t/galera_ist_xtrabackup-v2.cnf | 2 +
.../suite/galera/t/galera_ist_xtrabackup-v2.test | 5 +
mysql-test/suite/galera/t/galera_kill_applier.test | 26 +-
mysql-test/suite/galera/t/galera_kill_ddl.test | 13 +-
.../suite/galera/t/galera_kill_largechanges.test | 17 +-
.../suite/galera/t/galera_kill_nochanges.test | 22 +-
.../suite/galera/t/galera_kill_smallchanges.test | 11 +-
mysql-test/suite/galera/t/galera_load_data.cnf | 10 +
mysql-test/suite/galera/t/galera_load_data.test | 81 +
.../suite/galera/t/galera_log_bin-master.opt | 1 -
mysql-test/suite/galera/t/galera_log_bin.cnf | 10 +
mysql-test/suite/galera/t/galera_log_bin.test | 21 +-
.../suite/galera/t/galera_log_output_csv.test | 2 +
mysql-test/suite/galera/t/galera_many_rows.cnf | 5 +
mysql-test/suite/galera/t/galera_many_rows.test | 19 +-
.../suite/galera/t/galera_many_tables_pk.test | 4 +-
mysql-test/suite/galera/t/galera_mdev_13787.cnf | 9 +
mysql-test/suite/galera/t/galera_mdev_13787.opt | 1 -
mysql-test/suite/galera/t/galera_mdl_race.test | 17 +-
.../galera/t/galera_parallel_autoinc_largetrx.test | 11 +-
.../galera/t/galera_parallel_autoinc_manytrx.test | 89 +-
mysql-test/suite/galera/t/galera_partition.cnf | 18 +
mysql-test/suite/galera/t/galera_partition.test | 450 +
mysql-test/suite/galera/t/galera_pc_ignore_sb.test | 27 +-
.../suite/galera/t/galera_performance_schema.test | 58 +
.../suite/galera/t/galera_query_cache-master.opt | 1 -
mysql-test/suite/galera/t/galera_query_cache.cnf | 10 +
.../t/galera_query_cache_sync_wait-master.opt | 1 -
.../galera/t/galera_query_cache_sync_wait.cnf | 10 +
.../galera/t/galera_query_cache_sync_wait.test | 13 +-
mysql-test/suite/galera/t/galera_rsu_drop_pk.test | 28 +-
.../suite/galera/t/galera_sbr_binlog-master.opt | 1 -
mysql-test/suite/galera/t/galera_sbr_binlog.cnf | 7 +
.../suite/galera/t/galera_shutdown_nonprim.test | 36 +
mysql-test/suite/galera/t/galera_ssl.cnf | 4 +-
.../suite/galera/t/galera_ssl_compression.cnf | 4 +-
mysql-test/suite/galera/t/galera_ssl_upgrade.cnf | 4 +-
mysql-test/suite/galera/t/galera_ssl_upgrade.test | 2 +-
.../suite/galera/t/galera_sst_mariabackup.test | 1 +
.../t/galera_sst_mariabackup_encrypt_with_key.cnf | 12 +
.../t/galera_sst_mariabackup_encrypt_with_key.test | 14 +
.../t/galera_sst_mariabackup_table_options.cnf | 18 +
.../t/galera_sst_mariabackup_table_options.test | 229 +
.../suite/galera/t/galera_sst_mysqldump.test | 1 +
.../galera/t/galera_sst_mysqldump_with_key.cnf | 4 -
.../galera/t/galera_sst_mysqldump_with_key.test | 21 +-
mysql-test/suite/galera/t/galera_sst_rsync.test | 1 +
mysql-test/suite/galera/t/galera_sst_rsync2.cnf | 15 +
mysql-test/suite/galera/t/galera_sst_rsync2.test | 12 +
.../suite/galera/t/galera_sst_rsync_data_dir.cnf | 11 +
.../suite/galera/t/galera_sst_rsync_data_dir.test | 16 +
.../galera/t/galera_sst_xtrabackup-v2-options.cnf | 3 +-
.../suite/galera/t/galera_sst_xtrabackup-v2.cnf | 1 +
.../suite/galera/t/galera_sst_xtrabackup-v2.test | 1 +
.../galera/t/galera_sst_xtrabackup-v2_data_dir.cnf | 17 +
.../t/galera_sst_xtrabackup-v2_data_dir.test | 23 +
.../galera_sst_xtrabackup-v2_encrypt_with_key.cnf | 1 +
.../suite/galera/t/galera_suspend_slave.test | 3 +
.../suite/galera/t/galera_sync_wait_show.test | 2 +
.../suite/galera/t/galera_toi_ddl_fk_insert.test | 17 +-
mysql-test/suite/galera/t/galera_toi_truncate.test | 16 +-
mysql-test/suite/galera/t/galera_udf-master.opt | 2 -
mysql-test/suite/galera/t/galera_udf.cnf | 15 +
.../suite/galera/t/galera_unicode_identifiers.test | 12 +-
.../suite/galera/t/galera_v1_row_events-master.opt | 1 -
mysql-test/suite/galera/t/galera_v1_row_events.cnf | 13 +
.../galera/t/galera_var_auto_inc_control_on.cnf | 13 +
.../galera/t/galera_var_auto_inc_control_on.opt | 1 -
.../galera/t/galera_var_auto_inc_control_on.test | 29 +-
.../suite/galera/t/galera_var_desync_on.test | 7 +-
.../suite/galera/t/galera_var_dirty_reads.test | 10 +-
.../suite/galera/t/galera_var_gtid_domain_id.test | 7 +
.../suite/galera/t/galera_var_node_address.test | 18 +-
.../galera/t/galera_var_notify_cmd-master.opt | 1 -
.../suite/galera/t/galera_var_notify_cmd.cnf | 13 +
.../suite/galera/t/galera_var_notify_cmd.test | 10 +-
.../suite/galera/t/galera_var_reject_queries.test | 13 +-
.../galera/t/galera_var_retry_autocommit.test | 133 +-
.../suite/galera/t/galera_var_slave_threads.test | 50 +-
mysql-test/suite/galera/t/galera_var_sst_auth.cnf | 12 +
mysql-test/suite/galera/t/galera_var_sst_auth.opt | 1 -
mysql-test/suite/galera/t/galera_wan.test | 14 +-
.../galera/t/galera_wsrep_log_conficts-master.opt | 1 -
.../suite/galera/t/galera_wsrep_log_conficts.cnf | 12 +
.../galera/t/galera_wsrep_new_cluster-master.opt | 1 -
.../suite/galera/t/galera_wsrep_new_cluster.cnf | 10 +
mysql-test/suite/galera/t/mdev_10518.test | 7 +
.../suite/galera/t/mysql-wsrep#201-master.opt | 1 -
mysql-test/suite/galera/t/mysql-wsrep#201.cnf | 9 +
mysql-test/suite/galera/t/mysql-wsrep#332.test | 113 +
mysql-test/suite/galera/t/partition.test | 14 +-
mysql-test/suite/galera/t/query_cache.cnf | 9 +
mysql-test/suite/galera/t/query_cache.opt | 1 -
mysql-test/suite/galera/t/query_cache.test | 123 +-
mysql-test/suite/galera_3nodes/disabled.def | 1 -
mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf | 13 +-
mysql-test/suite/galera_3nodes/galera_3nodes.cnf | 7 +-
.../suite/galera_3nodes/include/galera_suspend.inc | 14 -
.../suite/galera_3nodes/include/have_ipv6.inc | 15 -
mysql-test/suite/galera_3nodes/r/GAL-501.result | 3 +
.../r/galera_certification_double_failure.result | 2 +-
.../r/galera_evs_suspect_timeout.result | 30 +-
.../suite/galera_3nodes/r/galera_garbd.result | 12 +
.../r/galera_innobackupex_backup.result | 6 +
.../galera_3nodes/r/galera_ipv6_mariabackup.result | 22 +
.../r/galera_ipv6_mariabackup_section.result | 18 +
.../galera_3nodes/r/galera_ipv6_mysqldump.result | 21 +-
.../suite/galera_3nodes/r/galera_ipv6_rsync.result | 3 +
.../r/galera_ipv6_rsync_section.result | 14 +
.../r/galera_ipv6_xtrabackup-v2.result | 4 +
.../r/galera_ist_gcache_rollover.result | 1 +
.../galera_3nodes/r/galera_load_data_ist.result | 36 +
.../galera_3nodes/r/galera_pc_bootstrap.result | 11 +
.../suite/galera_3nodes/r/galera_pc_weight.result | 53 +-
.../r/galera_safe_to_bootstrap.result | 27 +
.../galera_3nodes/r/galera_var_dirty_reads2.result | 9 +
mysql-test/suite/galera_3nodes/suite.pm | 40 +-
mysql-test/suite/galera_3nodes/t/GAL-501.opt | 1 +
mysql-test/suite/galera_3nodes/t/GAL-501.test | 2 +-
.../t/galera_evs_suspect_timeout.test | 49 +-
mysql-test/suite/galera_3nodes/t/galera_garbd.test | 21 +-
.../galera_3nodes/t/galera_innobackupex_backup.cnf | 4 +
.../t/galera_innobackupex_backup.test | 28 +-
.../galera_3nodes/t/galera_ipv6_mariabackup.cnf | 29 +
.../galera_3nodes/t/galera_ipv6_mariabackup.opt | 1 +
.../galera_3nodes/t/galera_ipv6_mariabackup.test | 60 +
.../t/galera_ipv6_mariabackup_section.cnf | 39 +
.../t/galera_ipv6_mariabackup_section.opt | 1 +
.../t/galera_ipv6_mariabackup_section.test | 70 +
.../galera_3nodes/t/galera_ipv6_mysqldump.cnf | 10 +-
.../galera_3nodes/t/galera_ipv6_mysqldump.opt | 1 +
.../galera_3nodes/t/galera_ipv6_mysqldump.test | 43 +-
.../suite/galera_3nodes/t/galera_ipv6_rsync.cnf | 10 +-
.../suite/galera_3nodes/t/galera_ipv6_rsync.opt | 1 +
.../suite/galera_3nodes/t/galera_ipv6_rsync.test | 2 +-
.../galera_3nodes/t/galera_ipv6_rsync_section.cnf | 31 +
.../galera_3nodes/t/galera_ipv6_rsync_section.opt | 1 +
.../galera_3nodes/t/galera_ipv6_rsync_section.test | 32 +
.../galera_3nodes/t/galera_ipv6_xtrabackup-v2.cnf | 3 +
.../galera_3nodes/t/galera_ipv6_xtrabackup-v2.opt | 1 +
.../galera_3nodes/t/galera_ipv6_xtrabackup-v2.test | 6 +-
.../galera_3nodes/t/galera_ist_gcache_rollover.cnf | 6 +-
.../t/galera_ist_gcache_rollover.test | 1 +
.../suite/galera_3nodes/t/galera_load_data_ist.cnf | 4 +
.../galera_3nodes/t/galera_load_data_ist.test | 124 +
.../suite/galera_3nodes/t/galera_pc_weight.test | 55 +-
.../galera_3nodes/t/galera_safe_to_bootstrap.test | 32 +-
.../galera_3nodes/t/galera_var_dirty_reads2.test | 14 +
.../suite/gcol/inc/gcol_column_def_options.inc | 1 -
mysql-test/suite/gcol/inc/gcol_keys.inc | 1 -
mysql-test/suite/gcol/inc/gcol_select.inc | 37 +-
.../gcol/r/gcol_column_def_options_innodb.result | 10 +-
.../gcol/r/gcol_column_def_options_myisam.result | 10 +-
mysql-test/suite/gcol/r/gcol_ins_upd_innodb.result | 12 +-
mysql-test/suite/gcol/r/gcol_ins_upd_myisam.result | 12 +-
mysql-test/suite/gcol/r/gcol_keys_innodb.result | 2 +-
.../suite/gcol/r/gcol_partition_innodb.result | 17 +
.../suite/gcol/r/innodb_virtual_basic.result | 16 +-
.../suite/gcol/r/innodb_virtual_debug.result | 44 +-
.../suite/gcol/r/innodb_virtual_debug_purge.result | 100 +-
mysql-test/suite/gcol/r/innodb_virtual_fk.result | 4 +-
.../suite/gcol/r/innodb_virtual_fk_restart.result | 9 +
.../suite/gcol/r/innodb_virtual_index.result | 69 +-
.../suite/gcol/r/innodb_virtual_purge.result | 17 +
mysql-test/suite/gcol/t/gcol_partition_innodb.test | 20 +
mysql-test/suite/gcol/t/innodb_virtual_basic.test | 14 +-
mysql-test/suite/gcol/t/innodb_virtual_debug.test | 49 +-
.../suite/gcol/t/innodb_virtual_debug_purge.opt | 2 +
.../suite/gcol/t/innodb_virtual_debug_purge.test | 167 +-
mysql-test/suite/gcol/t/innodb_virtual_fk.test | 2 -
.../suite/gcol/t/innodb_virtual_fk_restart.test | 9 +
mysql-test/suite/gcol/t/innodb_virtual_index.test | 60 +-
mysql-test/suite/gcol/t/innodb_virtual_purge.test | 35 +
mysql-test/suite/handler/handler.inc | 2 +
mysql-test/suite/handler/ps.result | 9 +
mysql-test/suite/handler/ps.test | 13 +
mysql-test/suite/heap/heap_auto_increment.result | 149 +
mysql-test/suite/heap/heap_auto_increment.test | 32 +
mysql-test/suite/heap/heap_btree.result | 4 +
mysql-test/suite/heap/heap_btree.test | 9 +
mysql-test/suite/innodb/include/crc32.pl | 33 +
.../include/have_undo_tablespaces.combinations | 2 +
.../suite/innodb/include/have_undo_tablespaces.inc | 4 +
.../innodb/include/innodb-page-compression.inc | 2 +
.../innodb/include/innodb_binlog.combinations | 3 +
mysql-test/suite/innodb/include/innodb_binlog.inc | 3 +
.../include/innodb_bulk_create_index_debug.inc | 89 +-
.../suite/innodb/include/truncate_recover.inc | 8 +
.../suite/innodb/include/wait_all_purged.inc | 10 +-
mysql-test/suite/innodb/r/add_constraint.result | 2 +-
.../suite/innodb/r/alter_candidate_key.result | 114 +
mysql-test/suite/innodb/r/alter_copy.result | 13 +-
mysql-test/suite/innodb/r/alter_crash.result | 29 +-
.../suite/innodb/r/alter_foreign_crash.result | 26 +
.../suite/innodb/r/alter_inplace_perfschema.result | 21 +
mysql-test/suite/innodb/r/alter_kill.result | 58 +
mysql-test/suite/innodb/r/alter_large_dml.result | 49 +
.../suite/innodb/r/alter_missing_tablespace.result | 31 +-
.../suite/innodb/r/alter_partitioned_debug.result | 27 +
.../suite/innodb/r/alter_partitioned_xa.result | 18 +
.../suite/innodb/r/alter_rename_files.result | 20 +
mysql-test/suite/innodb/r/alter_table.result | 31 +
.../suite/innodb/r/alter_varchar_change.result | 470 +
mysql-test/suite/innodb/r/analyze_table.result | 25 +
.../suite/innodb/r/auto_increment_dup.result | 49 +-
mysql-test/suite/innodb/r/blob-crash.result | 149 +
mysql-test/suite/innodb/r/blob-update-debug.result | 4 +-
.../suite/innodb/r/check_ibd_filesize,32k.rdiff | 25 +
.../suite/innodb/r/check_ibd_filesize,4k.rdiff | 25 +
.../suite/innodb/r/check_ibd_filesize,64k.rdiff | 25 +
.../suite/innodb/r/check_ibd_filesize,8k.rdiff | 25 +
.../suite/innodb/r/check_ibd_filesize.result | 20 +
.../innodb/r/corrupted_during_recovery.result | 19 +
.../suite/innodb/r/create_isl_with_direct.result | 1 +
mysql-test/suite/innodb/r/create_select.result | 10 +
mysql-test/suite/innodb/r/data_types.result | 23 +-
.../r/default_row_format_compatibility.result | 2 +-
.../r/default_row_format_create,redundant.rdiff | 11 +
.../innodb/r/default_row_format_create.result | 22 +-
mysql-test/suite/innodb/r/doublewrite.result | 2 +-
.../suite/innodb/r/drop_table_background.result | 15 +
mysql-test/suite/innodb/r/foreign-keys.result | 169 +
mysql-test/suite/innodb/r/foreign_key.result | 222 +-
mysql-test/suite/innodb/r/ibuf_not_empty.result | 1 +
.../innodb/r/information_schema_grants.result | 304 +
mysql-test/suite/innodb/r/innochecksum.result | 5 -
mysql-test/suite/innodb/r/innodb-16k.result | 465 -
mysql-test/suite/innodb/r/innodb-32k-crash.result | 4 +
mysql-test/suite/innodb/r/innodb-32k.result | 120 -
mysql-test/suite/innodb/r/innodb-64k-crash.result | 328 +-
.../suite/innodb/r/innodb-alter-debug.result | 41 +-
.../suite/innodb/r/innodb-alter-nullable.result | 152 +-
.../suite/innodb/r/innodb-alter-tempfile.result | 15 +-
mysql-test/suite/innodb/r/innodb-alter.result | 183 +-
mysql-test/suite/innodb/r/innodb-autoinc.result | 258 +-
mysql-test/suite/innodb/r/innodb-blob.result | 2 +-
.../innodb/r/innodb-change-buffer-recovery.result | 36 +-
.../suite/innodb/r/innodb-fk-warnings.result | 20 +-
mysql-test/suite/innodb/r/innodb-fk.result | 4 +-
mysql-test/suite/innodb/r/innodb-index,debug.rdiff | 10 +
.../suite/innodb/r/innodb-index-online.result | 2 +-
mysql-test/suite/innodb/r/innodb-index.result | 81 +-
mysql-test/suite/innodb/r/innodb-lock.result | 47 +-
mysql-test/suite/innodb/r/innodb-mdev-7513.result | 1 -
mysql-test/suite/innodb/r/innodb-mdev7046.result | 4 +-
.../suite/innodb/r/innodb-online-alter-gis.result | 20 +-
.../r/innodb-page_compression_default.result | 1 -
.../innodb/r/innodb-page_compression_snappy.result | 1 -
mysql-test/suite/innodb/r/innodb-read-view.result | 222 +
.../suite/innodb/r/innodb-replace-debug.result | 4 +-
.../r/innodb-stats-initialize-failure.result | 3 +-
.../suite/innodb/r/innodb-system-table-view.result | 162 +
.../suite/innodb/r/innodb-table-online.result | 11 -
mysql-test/suite/innodb/r/innodb-truncate.result | 13 +
.../suite/innodb/r/innodb-update-insert.result | 4 +-
.../innodb/r/innodb-virtual-columns-debug.result | 18 +
.../suite/innodb/r/innodb-virtual-columns.result | 15 +
mysql-test/suite/innodb/r/innodb-wl5522-1.result | 2 +-
mysql-test/suite/innodb/r/innodb-wl5522.result | 280 +-
.../suite/innodb/r/innodb-wl5980-alter.result | 31 +
.../suite/innodb/r/innodb-wl5980-debug.result | 27 +
mysql-test/suite/innodb/r/innodb_28867993.result | 9 +
.../innodb/r/innodb_buffer_pool_dump_pct.result | 22 +
.../suite/innodb/r/innodb_bug11754376.result | 2 +
.../suite/innodb/r/innodb_bug14676111.result | 6 +-
.../suite/innodb/r/innodb_bug14704286.result | 65 -
.../suite/innodb/r/innodb_bug30113362.result | 119 +
mysql-test/suite/innodb/r/innodb_bug54044.result | 6 -
mysql-test/suite/innodb/r/innodb_bug56947.result | 2 +
mysql-test/suite/innodb/r/innodb_bug68148.result | 1 -
mysql-test/suite/innodb/r/innodb_bug84958.result | 87 +
.../innodb/r/innodb_bulk_create_index_debug.result | 229 +-
.../suite/innodb/r/innodb_corrupt_bit.result | 2 +-
.../suite/innodb/r/innodb_defragment_small.result | 21 +-
.../suite/innodb/r/innodb_force_recovery.result | 31 +-
.../innodb/r/innodb_max_recordsize_32k.result | 55 +-
.../innodb/r/innodb_max_recordsize_64k.result | 74 +-
mysql-test/suite/innodb/r/innodb_mysql.result | 43 +-
.../suite/innodb/r/innodb_query_cache.result | 39 +
.../innodb/r/innodb_skip_innodb_is_tables.result | 18 +-
.../suite/innodb/r/innodb_stats_persistent.result | 31 +-
.../innodb/r/innodb_sys_semaphore_waits.result | 3 +-
mysql-test/suite/innodb/r/innodb_wl6326.result | 371 +
mysql-test/suite/innodb/r/innodb_wl6326_big.result | 449 +
.../suite/innodb/r/innodb_zip_innochecksum.result | 91 -
.../suite/innodb/r/innodb_zip_innochecksum2.result | 160 -
.../suite/innodb/r/innodb_zip_innochecksum3.result | 227 -
.../r/leaf_page_corrupted_during_recovery.result | 20 +
mysql-test/suite/innodb/r/log_alter_table.result | 8 +-
mysql-test/suite/innodb/r/log_file_name.result | 11 +-
mysql-test/suite/innodb/r/log_file_size.result | 2 +-
.../r/max_record_size,16k,compact,innodb.rdiff | 80 +
.../r/max_record_size,16k,dynamic,innodb.rdiff | 224 +
.../r/max_record_size,16k,innodb,redundant.rdiff | 80 +
.../r/max_record_size,32k,compact,innodb.rdiff | 121 +
.../r/max_record_size,32k,dynamic,innodb.rdiff | 366 +
.../r/max_record_size,32k,innodb,redundant.rdiff | 121 +
.../r/max_record_size,4k,compact,innodb.rdiff | 62 +
.../r/max_record_size,4k,dynamic,innodb.rdiff | 128 +
.../r/max_record_size,4k,innodb,redundant.rdiff | 62 +
.../r/max_record_size,64k,compact,innodb.rdiff | 203 +
.../r/max_record_size,64k,dynamic,innodb.rdiff | 501 +
.../r/max_record_size,64k,innodb,redundant.rdiff | 121 +
.../r/max_record_size,8k,compact,innodb.rdiff | 35 +
.../r/max_record_size,8k,dynamic,innodb.rdiff | 134 +
mysql-test/suite/innodb/r/max_record_size.result | 47 +
.../suite/innodb/r/missing_tablespaces.result | 11 +
mysql-test/suite/innodb/r/monitor.result | 30 +-
.../suite/innodb/r/page_id_innochecksum.result | 6 +
mysql-test/suite/innodb/r/page_reorganize.result | 27 +
mysql-test/suite/innodb/r/purge.result | 121 +
mysql-test/suite/innodb/r/recovery_shutdown.result | 9 +-
.../innodb/r/redo_log_during_checkpoint.result | 6 +-
mysql-test/suite/innodb/r/rename_table.result | 6 +
.../suite/innodb/r/rename_table_debug.result | 13 +
mysql-test/suite/innodb/r/restart.result | 1 -
.../suite/innodb/r/row_format_redundant.result | 3 +-
.../innodb/r/row_size_error_log_warnings_3.result | 45 +
mysql-test/suite/innodb/r/stat_tables.result | 15 +
mysql-test/suite/innodb/r/stored_fk.result | 74 +
mysql-test/suite/innodb/r/strict_mode.result | 157 +-
.../suite/innodb/r/table_flags,32k,debug.rdiff | 134 +
.../suite/innodb/r/table_flags,32k,release.rdiff | 105 +
mysql-test/suite/innodb/r/table_flags,32k.rdiff | 105 -
.../suite/innodb/r/table_flags,4k,debug.rdiff | 133 +
.../suite/innodb/r/table_flags,4k,release.rdiff | 92 +
mysql-test/suite/innodb/r/table_flags,4k.rdiff | 92 -
.../suite/innodb/r/table_flags,64k,debug.rdiff | 134 +
.../suite/innodb/r/table_flags,64k,release.rdiff | 105 +
mysql-test/suite/innodb/r/table_flags,64k.rdiff | 105 -
.../suite/innodb/r/table_flags,8k,debug.rdiff | 133 +
.../suite/innodb/r/table_flags,8k,release.rdiff | 92 +
mysql-test/suite/innodb/r/table_flags,8k.rdiff | 92 -
mysql-test/suite/innodb/r/table_flags,debug.rdiff | 133 +
mysql-test/suite/innodb/r/table_flags.result | 5 +
mysql-test/suite/innodb/r/temporary_table.result | 25 +
.../innodb/r/temporary_table_optimization.result | 18 +-
mysql-test/suite/innodb/r/truncate.result | 41 +
mysql-test/suite/innodb/r/truncate_crash.result | 14 +
mysql-test/suite/innodb/r/truncate_foreign.result | 58 +
mysql-test/suite/innodb/r/truncate_inject.result | 28 +-
mysql-test/suite/innodb/r/truncate_missing.result | 17 +
mysql-test/suite/innodb/r/trx_id_future.result | 13 +
mysql-test/suite/innodb/r/undo_log.result | 4 +
mysql-test/suite/innodb/r/undo_truncate.result | 61 +
.../suite/innodb/r/undo_truncate_recover.result | 16 +
mysql-test/suite/innodb/r/xa_debug.result | 362 +
mysql-test/suite/innodb/t/add_constraint.test | 1 -
mysql-test/suite/innodb/t/alter_candidate_key.test | 72 +
mysql-test/suite/innodb/t/alter_copy.opt | 1 +
mysql-test/suite/innodb/t/alter_copy.test | 21 +-
mysql-test/suite/innodb/t/alter_crash.opt | 1 +
mysql-test/suite/innodb/t/alter_crash.test | 100 +-
mysql-test/suite/innodb/t/alter_foreign_crash.test | 37 +
.../suite/innodb/t/alter_inplace_perfschema.opt | 2 +
.../suite/innodb/t/alter_inplace_perfschema.test | 42 +
mysql-test/suite/innodb/t/alter_kill-master.opt | 1 +
mysql-test/suite/innodb/t/alter_kill.test | 153 +
mysql-test/suite/innodb/t/alter_large_dml.opt | 2 +
mysql-test/suite/innodb/t/alter_large_dml.test | 53 +
.../suite/innodb/t/alter_missing_tablespace.test | 29 +-
.../suite/innodb/t/alter_partitioned_debug.test | 34 +
.../suite/innodb/t/alter_partitioned_xa.test | 31 +
mysql-test/suite/innodb/t/alter_rename_files.test | 31 +
mysql-test/suite/innodb/t/alter_table.test | 37 +
.../suite/innodb/t/alter_varchar_change.test | 343 +
mysql-test/suite/innodb/t/analyze_table.test | 42 +
mysql-test/suite/innodb/t/auto_increment_dup.test | 36 +-
mysql-test/suite/innodb/t/blob-crash.test | 208 +
mysql-test/suite/innodb/t/blob-update-debug.test | 4 +-
mysql-test/suite/innodb/t/check_ibd_filesize.test | 53 +
.../suite/innodb/t/corrupted_during_recovery.opt | 2 +
.../suite/innodb/t/corrupted_during_recovery.test | 64 +
mysql-test/suite/innodb/t/create_select.test | 28 +
mysql-test/suite/innodb/t/data_types.test | 22 +-
.../suite/innodb/t/default_row_format_create.test | 20 +-
mysql-test/suite/innodb/t/doublewrite.test | 6 +-
.../suite/innodb/t/drop_table_background.opt | 1 +
.../suite/innodb/t/drop_table_background.test | 20 +-
mysql-test/suite/innodb/t/foreign-keys.test | 180 +
mysql-test/suite/innodb/t/foreign_key.test | 228 +-
mysql-test/suite/innodb/t/ibuf_not_empty.test | 56 +-
.../suite/innodb/t/information_schema_grants.opt | 33 +
.../suite/innodb/t/information_schema_grants.test | 311 +
mysql-test/suite/innodb/t/innochecksum.test | 32 -
mysql-test/suite/innodb/t/innodb-16k.test | 478 -
mysql-test/suite/innodb/t/innodb-32k-crash.test | 2 +
mysql-test/suite/innodb/t/innodb-32k.test | 135 -
mysql-test/suite/innodb/t/innodb-64k-crash.test | 85 +-
mysql-test/suite/innodb/t/innodb-alter-debug.test | 57 +-
.../suite/innodb/t/innodb-alter-nullable.test | 101 +-
mysql-test/suite/innodb/t/innodb-alter-table.test | 2 +
.../suite/innodb/t/innodb-alter-tempfile.test | 40 +-
mysql-test/suite/innodb/t/innodb-alter.test | 140 +-
mysql-test/suite/innodb/t/innodb-autoinc.test | 72 +-
mysql-test/suite/innodb/t/innodb-blob.test | 4 +-
.../t/innodb-change-buffer-recovery-master.opt | 1 -
.../innodb/t/innodb-change-buffer-recovery.test | 43 +-
.../suite/innodb/t/innodb-corrupted-table.test | 1 +
mysql-test/suite/innodb/t/innodb-fk-warnings.test | 18 -
mysql-test/suite/innodb/t/innodb-fk.test | 2 -
mysql-test/suite/innodb/t/innodb-fkcheck.test | 1 +
mysql-test/suite/innodb/t/innodb-get-fk.test | 5 +-
mysql-test/suite/innodb/t/innodb-index-debug.test | 2 +
mysql-test/suite/innodb/t/innodb-index-online.test | 1 -
mysql-test/suite/innodb/t/innodb-index.test | 86 +-
mysql-test/suite/innodb/t/innodb-lock.test | 74 +-
mysql-test/suite/innodb/t/innodb-mdev-7513.test | 1 -
mysql-test/suite/innodb/t/innodb-mdev7046.test | 20 +-
.../suite/innodb/t/innodb-online-alter-gis.test | 31 +
.../innodb/t/innodb-page_compression_default.test | 2 -
.../innodb/t/innodb-page_compression_snappy.test | 2 -
.../innodb/t/innodb-page_compression_tables.test | 4 -
.../innodb/t/innodb-page_compression_zip.test | 2 +
mysql-test/suite/innodb/t/innodb-read-view.test | 208 +
.../suite/innodb/t/innodb-replace-debug.test | 4 +-
.../innodb/t/innodb-stats-initialize-failure.test | 5 +-
.../suite/innodb/t/innodb-system-table-view.opt | 12 +
.../suite/innodb/t/innodb-system-table-view.test | 136 +
mysql-test/suite/innodb/t/innodb-table-online.test | 4 -
mysql-test/suite/innodb/t/innodb-truncate.test | 19 +
.../innodb/t/innodb-virtual-columns-debug.test | 27 +
.../suite/innodb/t/innodb-virtual-columns.test | 11 +
mysql-test/suite/innodb/t/innodb-wl5522-debug.test | 3 +-
mysql-test/suite/innodb/t/innodb-wl5522.test | 254 +-
mysql-test/suite/innodb/t/innodb-wl5980-debug.test | 51 +
mysql-test/suite/innodb/t/innodb.test | 2 +-
mysql-test/suite/innodb/t/innodb_28867993.test | 12 +
.../innodb/t/innodb_buffer_pool_dump_pct.test | 99 +
mysql-test/suite/innodb/t/innodb_bug11754376.test | 3 +-
mysql-test/suite/innodb/t/innodb_bug14704286.test | 95 -
mysql-test/suite/innodb/t/innodb_bug27216817.test | 28 -
mysql-test/suite/innodb/t/innodb_bug30113362.opt | 1 +
mysql-test/suite/innodb/t/innodb_bug30113362.test | 236 +
mysql-test/suite/innodb/t/innodb_bug54044.test | 10 -
mysql-test/suite/innodb/t/innodb_bug56947.test | 2 +
mysql-test/suite/innodb/t/innodb_bug68148.test | 2 -
mysql-test/suite/innodb/t/innodb_bug84958.test | 93 +
.../innodb/t/innodb_bulk_create_index_flush.opt | 1 +
mysql-test/suite/innodb/t/innodb_corrupt_bit.test | 2 +-
.../suite/innodb/t/innodb_defragment_small.test | 23 +-
.../suite/innodb/t/innodb_force_recovery.test | 24 +-
.../suite/innodb/t/innodb_max_recordsize_32k.test | 49 -
.../suite/innodb/t/innodb_max_recordsize_64k.test | 72 -
mysql-test/suite/innodb/t/innodb_mysql.test | 46 +-
mysql-test/suite/innodb/t/innodb_query_cache.test | 47 +
.../suite/innodb/t/innodb_stats_persistent.test | 30 +-
.../suite/innodb/t/innodb_sys_semaphore_waits.test | 3 +-
mysql-test/suite/innodb/t/innodb_wl6326.opt | 1 +
mysql-test/suite/innodb/t/innodb_wl6326.test | 506 +
mysql-test/suite/innodb/t/innodb_wl6326_big.test | 716 +
.../suite/innodb/t/innodb_zip_innochecksum.opt | 4 -
.../suite/innodb/t/innodb_zip_innochecksum.test | 239 -
.../suite/innodb/t/innodb_zip_innochecksum2.opt | 4 -
.../suite/innodb/t/innodb_zip_innochecksum2.test | 118 -
.../suite/innodb/t/innodb_zip_innochecksum3.opt | 2 -
.../suite/innodb/t/innodb_zip_innochecksum3.test | 406 -
.../t/leaf_page_corrupted_during_recovery.opt | 2 +
.../t/leaf_page_corrupted_during_recovery.test | 57 +
mysql-test/suite/innodb/t/log_alter_table.opt | 1 +
mysql-test/suite/innodb/t/log_alter_table.test | 8 +-
mysql-test/suite/innodb/t/log_file_name.test | 14 +-
mysql-test/suite/innodb/t/log_file_name_debug.test | 4 +-
mysql-test/suite/innodb/t/log_file_size.test | 4 +-
mysql-test/suite/innodb/t/max_record_size.test | 1422 +
mysql-test/suite/innodb/t/mdev-15707.test | 2 +
mysql-test/suite/innodb/t/missing_tablespaces.test | 36 +
mysql-test/suite/innodb/t/monitor.test | 18 +-
.../suite/innodb/t/page_id_innochecksum.test | 53 +
mysql-test/suite/innodb/t/page_reorganize.test | 56 +
mysql-test/suite/innodb/t/purge.test | 117 +
mysql-test/suite/innodb/t/recovery_shutdown.test | 24 +
.../suite/innodb/t/redo_log_during_checkpoint.test | 6 +-
mysql-test/suite/innodb/t/rename_table.test | 14 +
mysql-test/suite/innodb/t/rename_table_debug.opt | 1 +
mysql-test/suite/innodb/t/rename_table_debug.test | 22 +
mysql-test/suite/innodb/t/restart.test | 1 -
.../innodb/t/row_size_error_log_warnings_3.test | 32 +
mysql-test/suite/innodb/t/stat_tables.test | 17 +
mysql-test/suite/innodb/t/stored_fk.test | 94 +
mysql-test/suite/innodb/t/strict_mode.test | 157 +-
.../innodb/t/table_definition_cache_debug.test | 2 +
mysql-test/suite/innodb/t/table_flags.test | 10 +
mysql-test/suite/innodb/t/temporary_table.test | 29 +
.../innodb/t/temporary_table_optimization.test | 8 +-
mysql-test/suite/innodb/t/truncate.opt | 1 +
mysql-test/suite/innodb/t/truncate.test | 52 +
mysql-test/suite/innodb/t/truncate_crash.opt | 1 +
mysql-test/suite/innodb/t/truncate_crash.test | 23 +
mysql-test/suite/innodb/t/truncate_debug.opt | 1 +
mysql-test/suite/innodb/t/truncate_foreign.opt | 1 +
mysql-test/suite/innodb/t/truncate_foreign.test | 68 +
mysql-test/suite/innodb/t/truncate_inject.opt | 1 +
mysql-test/suite/innodb/t/truncate_inject.test | 28 +-
mysql-test/suite/innodb/t/truncate_missing.opt | 1 +
mysql-test/suite/innodb/t/truncate_missing.test | 22 +
mysql-test/suite/innodb/t/truncate_purge_debug.opt | 1 +
mysql-test/suite/innodb/t/truncate_restart.opt | 1 +
mysql-test/suite/innodb/t/trx_id_future.test | 58 +
mysql-test/suite/innodb/t/undo_log.test | 3 +
mysql-test/suite/innodb/t/undo_truncate.test | 128 +
.../suite/innodb/t/undo_truncate_recover.opt | 1 +
.../suite/innodb/t/undo_truncate_recover.test | 46 +
mysql-test/suite/innodb/t/update_time.test | 2 +
mysql-test/suite/innodb/t/xa_debug.test | 46 +
mysql-test/suite/innodb_fts/r/basic.result | 300 +
.../suite/innodb_fts/r/concurrent_insert.result | 24 +
.../suite/innodb_fts/r/crash_recovery.result | 45 +
mysql-test/suite/innodb_fts/r/create.result | 20 +-
.../suite/innodb_fts/r/fts_kill_query.result | 9 +
mysql-test/suite/innodb_fts/r/fulltext2.result | 30 +
mysql-test/suite/innodb_fts/r/fulltext3.result | 9 +
.../suite/innodb_fts/r/innodb-fts-basic.result | 259 -
.../suite/innodb_fts/r/innodb_ft_aux_table.result | 121 +
.../suite/innodb_fts/r/innodb_fts_misc.result | 33 +-
mysql-test/suite/innodb_fts/r/sync_block.result | 4 +-
mysql-test/suite/innodb_fts/r/sync_ddl.result | 117 +
mysql-test/suite/innodb_fts/r/truncate.result | 31 -
mysql-test/suite/innodb_fts/t/basic.test | 265 +
.../suite/innodb_fts/t/concurrent_insert.test | 32 +
mysql-test/suite/innodb_fts/t/crash_recovery.test | 56 +
mysql-test/suite/innodb_fts/t/create.test | 16 +
mysql-test/suite/innodb_fts/t/fts_kill_query.test | 30 +
mysql-test/suite/innodb_fts/t/fulltext2.test | 31 +-
mysql-test/suite/innodb_fts/t/fulltext3.test | 9 +
.../suite/innodb_fts/t/innodb-fts-basic.test | 228 -
.../suite/innodb_fts/t/innodb_ft_aux_table.opt | 6 +
.../suite/innodb_fts/t/innodb_ft_aux_table.test | 43 +
mysql-test/suite/innodb_fts/t/innodb_fts_misc.test | 33 +-
mysql-test/suite/innodb_fts/t/sync_block.test | 4 +-
mysql-test/suite/innodb_fts/t/sync_ddl.test | 177 +
mysql-test/suite/innodb_fts/t/truncate.opt | 1 -
mysql-test/suite/innodb_fts/t/truncate.test | 50 -
mysql-test/suite/innodb_gis/r/1.result | 4 +-
.../suite/innodb_gis/r/create_spatial_index.result | 2 +-
mysql-test/suite/innodb_gis/r/gis.result | 4 +-
mysql-test/suite/innodb_gis/r/point_basic.result | 14 +-
.../suite/innodb_gis/r/rtree_add_index.result | 13 +
.../suite/innodb_gis/r/rtree_compress2.result | 2 +
.../innodb_gis/r/rtree_concurrent_srch.result | 4 +-
mysql-test/suite/innodb_gis/r/rtree_debug.result | 2 +-
.../suite/innodb_gis/t/create_spatial_index.test | 2 +-
mysql-test/suite/innodb_gis/t/point_basic.test | 6 -
mysql-test/suite/innodb_gis/t/rtree_add_index.test | 20 +
mysql-test/suite/innodb_gis/t/rtree_compress2.test | 2 +
.../suite/innodb_gis/t/rtree_concurrent_srch.test | 2 +-
mysql-test/suite/innodb_gis/t/rtree_debug.test | 2 +-
mysql-test/suite/innodb_gis/t/rtree_rollback1.test | 3 -
mysql-test/suite/innodb_gis/t/rtree_rollback2.test | 3 -
mysql-test/suite/innodb_gis/t/update_root.test | 2 +
.../include/have_undo_tablespaces.combinations | 2 -
.../innodb_undo/include/have_undo_tablespaces.inc | 4 -
.../suite/innodb_undo/include/truncate_recover.inc | 8 -
mysql-test/suite/innodb_undo/r/truncate.result | 11 -
.../innodb_undo/r/truncate_multi_client.result | 51 -
.../suite/innodb_undo/r/truncate_recover.result | 15 -
mysql-test/suite/innodb_undo/t/truncate.test | 72 -
.../suite/innodb_undo/t/truncate_multi_client.test | 77 -
.../suite/innodb_undo/t/truncate_recover.test | 50 -
mysql-test/suite/innodb_zip/r/16k.result | 717 -
mysql-test/suite/innodb_zip/r/4k.result | 424 -
mysql-test/suite/innodb_zip/r/8k.result | 454 -
mysql-test/suite/innodb_zip/r/bug53591.result | 1 +
mysql-test/suite/innodb_zip/r/cmp_per_index.result | 31 +-
.../suite/innodb_zip/r/innochecksum_2.result | 2 +
mysql-test/suite/innodb_zip/r/page_size,4k.rdiff | 487 +
mysql-test/suite/innodb_zip/r/page_size,8k.rdiff | 425 +
mysql-test/suite/innodb_zip/r/page_size.result | 609 +
.../innodb_zip/r/prefix_index_liftedlimit.result | 1 +
mysql-test/suite/innodb_zip/r/restart.result | 32 +-
mysql-test/suite/innodb_zip/r/wl5522_zip.result | 15 +-
mysql-test/suite/innodb_zip/t/16k-master.opt | 3 -
mysql-test/suite/innodb_zip/t/16k.test | 721 -
mysql-test/suite/innodb_zip/t/4k-master.opt | 3 -
mysql-test/suite/innodb_zip/t/4k.test | 442 -
mysql-test/suite/innodb_zip/t/8k-master.opt | 3 -
mysql-test/suite/innodb_zip/t/8k.test | 470 -
mysql-test/suite/innodb_zip/t/bug53591.test | 2 +
mysql-test/suite/innodb_zip/t/cmp_per_index.test | 26 +-
mysql-test/suite/innodb_zip/t/innochecksum.test | 4 +
mysql-test/suite/innodb_zip/t/page_size.opt | 3 +
mysql-test/suite/innodb_zip/t/page_size.test | 881 +
.../innodb_zip/t/prefix_index_liftedlimit.test | 2 +
mysql-test/suite/innodb_zip/t/restart.opt | 1 +
.../suite/innodb_zip/t/wl5522_debug_zip.test | 3 +-
mysql-test/suite/innodb_zip/t/wl6501_1.opt | 1 +
mysql-test/suite/innodb_zip/t/wl6501_crash_3.opt | 1 +
mysql-test/suite/innodb_zip/t/wl6501_crash_4.opt | 1 +
mysql-test/suite/innodb_zip/t/wl6501_crash_5.opt | 1 +
mysql-test/suite/innodb_zip/t/wl6501_scale_1.opt | 1 +
mysql-test/suite/json/r/json_no_table.result | 4 +-
mysql-test/suite/maria/alter.result | 73 +
mysql-test/suite/maria/alter.test | 67 +-
mysql-test/suite/maria/aria_pack_mdev14183.result | 22 +
mysql-test/suite/maria/aria_pack_mdev14183.test | 23 +
mysql-test/suite/maria/concurrent.result | 33 +
mysql-test/suite/maria/concurrent.test | 28 +
mysql-test/suite/maria/create.result | 33 +
mysql-test/suite/maria/create.test | 42 +
mysql-test/suite/maria/fulltext2.result | 86 +
mysql-test/suite/maria/fulltext2.test | 77 +
mysql-test/suite/maria/icp.result | 4 +-
mysql-test/suite/maria/icp.test | 1 +
mysql-test/suite/maria/kill.result | 13 +
mysql-test/suite/maria/kill.test | 14 +
mysql-test/suite/maria/lock.result | 44 +
mysql-test/suite/maria/lock.test | 60 +
mysql-test/suite/maria/maria-autoinc.result | 120 +
mysql-test/suite/maria/maria-autoinc.test | 8 +
mysql-test/suite/maria/maria-big.test | 2 +-
mysql-test/suite/maria/maria-gis-recovery.test | 1 +
mysql-test/suite/maria/maria-no-logging.test | 1 +
mysql-test/suite/maria/maria-recover.test | 1 +
mysql-test/suite/maria/maria-recovery.result | 38 +
mysql-test/suite/maria/maria-recovery.test | 31 +
mysql-test/suite/maria/maria.result | 33 +
mysql-test/suite/maria/maria.test | 34 +
mysql-test/suite/maria/maria3.result | 43 +-
mysql-test/suite/maria/maria3.test | 5 +-
mysql-test/suite/maria/temporary.result | 23 +
mysql-test/suite/maria/temporary.test | 20 +
.../suite/mariabackup/absolute_ibdata_paths.opt | 3 +-
.../suite/mariabackup/absolute_ibdata_paths.test | 26 +-
.../suite/mariabackup/apply-log-only-incr.test | 4 +-
mysql-test/suite/mariabackup/backup_grants.result | 6 +
mysql-test/suite/mariabackup/backup_grants.test | 31 +
mysql-test/suite/mariabackup/backup_ssl.result | 9 +
mysql-test/suite/mariabackup/backup_ssl.test | 16 +
mysql-test/suite/mariabackup/big_innodb_log.result | 30 +
mysql-test/suite/mariabackup/big_innodb_log.test | 88 +
.../suite/mariabackup/create_during_backup.result | 10 +
.../suite/mariabackup/create_during_backup.test | 26 +
...create_with_data_directory_during_backup.result | 10 +
.../create_with_data_directory_during_backup.test | 24 +
mysql-test/suite/mariabackup/disabled.def | 1 -
.../mariabackup/drop_table_during_backup.result | 18 +
.../mariabackup/drop_table_during_backup.test | 33 +
.../mariabackup/encrypted_page_compressed.opt | 6 +
.../mariabackup/encrypted_page_compressed.result | 6 +
.../mariabackup/encrypted_page_compressed.test | 47 +
.../mariabackup/encrypted_page_corruption.opt | 6 +
.../mariabackup/encrypted_page_corruption.result | 7 +
.../mariabackup/encrypted_page_corruption.test | 69 +
.../suite/mariabackup/extra_lsndir_stream.result | 2 +
.../suite/mariabackup/extra_lsndir_stream.test | 7 +
mysql-test/suite/mariabackup/huge_lsn.opt | 4 +
.../include/have_file_key_management.inc | 4 -
.../suite/mariabackup/include/have_rocksdb.inc | 4 +
.../suite/mariabackup/incremental_backup.result | 4 +
.../suite/mariabackup/incremental_backup.test | 63 +-
.../incremental_ddl_before_backup.result | 32 +
.../mariabackup/incremental_ddl_before_backup.test | 50 +
.../incremental_ddl_during_backup.result | 22 +
.../mariabackup/incremental_ddl_during_backup.test | 52 +
.../suite/mariabackup/incremental_encrypted.result | 1 +
.../suite/mariabackup/incremental_encrypted.test | 1 +
.../suite/mariabackup/incremental_rocksdb.opt | 1 +
.../suite/mariabackup/incremental_rocksdb.result | 19 +
.../suite/mariabackup/incremental_rocksdb.test | 38 +
.../mariabackup/innodb_log_optimize_ddl.result | 37 +
.../suite/mariabackup/innodb_log_optimize_ddl.test | 47 +
.../mariabackup/innodb_redo_log_overwrite.opt | 1 +
.../mariabackup/innodb_redo_log_overwrite.result | 2 +
.../mariabackup/innodb_redo_log_overwrite.test | 20 +
.../suite/mariabackup/lock_ddl_per_table.opt | 1 +
.../suite/mariabackup/lock_ddl_per_table.test | 1 +
mysql-test/suite/mariabackup/mdev-14447.result | 1 +
mysql-test/suite/mariabackup/mdev-14447.test | 20 +-
mysql-test/suite/mariabackup/mdev-18438.result | 1 +
mysql-test/suite/mariabackup/mdev-18438.test | 11 +
mysql-test/suite/mariabackup/missing_ibd.result | 2 +-
mysql-test/suite/mariabackup/missing_ibd.test | 3 +-
.../suite/mariabackup/mlog_index_load.result | 15 +
mysql-test/suite/mariabackup/mlog_index_load.test | 27 +
.../nolock_ddl_during_backup_end.result | 2 +
.../mariabackup/nolock_ddl_during_backup_end.test | 14 +
.../mariabackup/page_compression_level.result | 14 +
.../suite/mariabackup/page_compression_level.test | 31 +
mysql-test/suite/mariabackup/partial.test | 18 +-
mysql-test/suite/mariabackup/partition_datadir.opt | 1 -
.../suite/mariabackup/partition_datadir.test | 1 +
mysql-test/suite/mariabackup/partition_partial.opt | 1 +
.../suite/mariabackup/partition_partial.result | 31 +
.../suite/mariabackup/partition_partial.test | 44 +
.../recreate_table_during_backup.result | 23 +
.../mariabackup/recreate_table_during_backup.test | 37 +
.../suite/mariabackup/rename_during_backup.result | 62 +
.../suite/mariabackup/rename_during_backup.test | 93 +
.../mariabackup/rename_during_mdl_lock.result | 11 +
.../suite/mariabackup/rename_during_mdl_lock.test | 21 +
mysql-test/suite/mariabackup/skip_innodb.opt | 1 +
mysql-test/suite/mariabackup/skip_innodb.result | 10 +
mysql-test/suite/mariabackup/skip_innodb.test | 12 +
mysql-test/suite/mariabackup/suite.opt | 2 +-
mysql-test/suite/mariabackup/suite.pm | 19 +-
.../suite/mariabackup/truncate_during_backup.opt | 1 +
.../mariabackup/truncate_during_backup.result | 4 +
.../suite/mariabackup/truncate_during_backup.test | 18 +
mysql-test/suite/mariabackup/undo_space_id.opt | 1 +
.../mariabackup/unencrypted_page_compressed.result | 8 +
.../mariabackup/unencrypted_page_compressed.test | 49 +
.../suite/mariabackup/unsupported_redo.result | 5 +-
mysql-test/suite/mariabackup/unsupported_redo.test | 36 +-
.../suite/mariabackup/xb_aws_key_management.result | 2 +
mysql-test/suite/mariabackup/xb_rocksdb.opt | 1 +
mysql-test/suite/mariabackup/xb_rocksdb.result | 22 +
mysql-test/suite/mariabackup/xb_rocksdb.test | 52 +
.../suite/mariabackup/xb_rocksdb_datadir.opt | 1 +
.../suite/mariabackup/xb_rocksdb_datadir.result | 9 +
.../suite/mariabackup/xb_rocksdb_datadir.test | 34 +
.../suite/mariabackup/xb_rocksdb_datadir_debug.opt | 1 +
.../mariabackup/xb_rocksdb_datadir_debug.result | 9 +
.../mariabackup/xb_rocksdb_datadir_debug.test | 13 +
mysql-test/suite/multi_source/mdev-8874.cnf | 25 +
mysql-test/suite/multi_source/mdev-8874.result | 126 +
mysql-test/suite/multi_source/mdev-8874.test | 141 +
.../suite/optimizer_unfixed_bugs/r/bug36981.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug40992.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug41996.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug42991.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug43249.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug43360.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug43448.result | 2 +
.../suite/optimizer_unfixed_bugs/r/bug43617.result | 2 +
.../suite/optimizer_unfixed_bugs/t/bug36981.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug40992.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug41996.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug42991.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug43249.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug43360.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug43448.test | 2 +
.../suite/optimizer_unfixed_bugs/t/bug43617.test | 3 +-
mysql-test/suite/parts/inc/part_alter_values.inc | 2 +-
mysql-test/suite/parts/inc/part_exch_qa_4.inc | 2 +
mysql-test/suite/parts/inc/part_exch_qa_8.inc | 2 +
mysql-test/suite/parts/inc/partition_crash_add.inc | 21 +-
.../suite/parts/inc/partition_crash_change.inc | 25 +-
.../suite/parts/inc/partition_crash_drop.inc | 19 +-
.../suite/parts/inc/partition_crash_exchange.inc | 19 +-
mysql-test/suite/parts/inc/partition_fail_add.inc | 21 +-
.../suite/parts/inc/partition_fail_change.inc | 25 +-
mysql-test/suite/parts/inc/partition_fail_drop.inc | 19 +-
.../suite/parts/inc/partition_fail_exchange.inc | 19 +-
mysql-test/suite/parts/inc/partition_mgm.inc | 1 +
.../parts/r/alter_data_directory_innodb.result | 68 +
.../suite/parts/r/partition_alter_innodb.result | 2 +-
.../suite/parts/r/partition_alter_maria.result | 2 +-
.../suite/parts/r/partition_alter_myisam.result | 2 +-
.../parts/r/partition_auto_increment_max.result | 7 +
.../parts/r/partition_basic_symlink_innodb.result | 3 +
mysql-test/suite/parts/r/partition_debug.result | 87 +-
.../suite/parts/r/partition_debug_innodb.result | 431 +-
.../suite/parts/r/partition_debug_myisam.result | 348 +-
.../parts/r/partition_debug_sync_innodb.result | 3 +
mysql-test/suite/parts/r/quoting.result | 93 -
.../parts/r/reorganize_partition_innodb.result | 156 +
mysql-test/suite/parts/r/show_create.result | 113 +
mysql-test/suite/parts/r/truncate_locked.result | 7 +
mysql-test/suite/parts/r/update_and_cache.result | 7 +
.../suite/parts/t/alter_data_directory_innodb.test | 46 +
.../parts/t/partition_auto_increment_max.test | 12 +
mysql-test/suite/parts/t/partition_debug.test | 7 +-
.../suite/parts/t/partition_debug_innodb.test | 7 +-
.../suite/parts/t/partition_debug_myisam.test | 4 -
mysql-test/suite/parts/t/quoting.test | 32 -
.../suite/parts/t/reorganize_partition_innodb.test | 103 +
mysql-test/suite/parts/t/show_create.test | 52 +
mysql-test/suite/parts/t/truncate_locked.test | 10 +
mysql-test/suite/parts/t/update_and_cache.test | 12 +
.../perfschema/include/hostcache_set_state.inc | 9 +-
.../suite/perfschema/include/stage_setup.inc | 4 +-
.../perfschema/r/dml_setup_instruments.result | 4 +-
.../r/hostcache_ipv4_addrinfo_again_allow.result | 15 +-
.../r/hostcache_ipv4_addrinfo_again_deny.result | 15 +-
.../r/hostcache_ipv4_addrinfo_bad_allow.result | 15 +-
.../r/hostcache_ipv4_addrinfo_bad_deny.result | 15 +-
.../r/hostcache_ipv4_addrinfo_good_allow.result | 15 +-
.../r/hostcache_ipv4_addrinfo_good_deny.result | 15 +-
.../r/hostcache_ipv4_addrinfo_noname_allow.result | 15 +-
.../r/hostcache_ipv4_addrinfo_noname_deny.result | 15 +-
.../perfschema/r/hostcache_ipv4_auth_plugin.result | 15 +-
.../perfschema/r/hostcache_ipv4_blocked.result | 15 +-
.../perfschema/r/hostcache_ipv4_format.result | 15 +-
.../perfschema/r/hostcache_ipv4_max_con.result | 15 +-
.../r/hostcache_ipv4_nameinfo_again_allow.result | 15 +-
.../r/hostcache_ipv4_nameinfo_again_deny.result | 15 +-
.../r/hostcache_ipv4_nameinfo_noname_allow.result | 15 +-
.../r/hostcache_ipv4_nameinfo_noname_deny.result | 15 +-
.../perfschema/r/hostcache_ipv4_passwd.result | 15 +-
.../suite/perfschema/r/hostcache_ipv4_ssl.result | 15 +-
.../r/hostcache_ipv6_addrinfo_again_allow.result | 15 +-
.../r/hostcache_ipv6_addrinfo_again_deny.result | 15 +-
.../r/hostcache_ipv6_addrinfo_bad_allow.result | 15 +-
.../r/hostcache_ipv6_addrinfo_bad_deny.result | 15 +-
.../r/hostcache_ipv6_addrinfo_good_allow.result | 15 +-
.../r/hostcache_ipv6_addrinfo_good_deny.result | 15 +-
.../r/hostcache_ipv6_addrinfo_noname_allow.result | 15 +-
.../r/hostcache_ipv6_addrinfo_noname_deny.result | 15 +-
.../perfschema/r/hostcache_ipv6_auth_plugin.result | 15 +-
.../perfschema/r/hostcache_ipv6_blocked.result | 15 +-
.../perfschema/r/hostcache_ipv6_max_con.result | 19 +-
.../r/hostcache_ipv6_nameinfo_again_allow.result | 15 +-
.../r/hostcache_ipv6_nameinfo_again_deny.result | 15 +-
.../r/hostcache_ipv6_nameinfo_noname_allow.result | 15 +-
.../r/hostcache_ipv6_nameinfo_noname_deny.result | 15 +-
.../perfschema/r/hostcache_ipv6_passwd.result | 15 +-
.../suite/perfschema/r/hostcache_ipv6_ssl.result | 15 +-
.../suite/perfschema/r/hostcache_peer_addr.result | 15 +-
mysql-test/suite/perfschema/r/misc.result | 16 +
mysql-test/suite/perfschema/r/partition.result | 10 +
.../suite/perfschema/r/pfs_upgrade_event.result | 2 +
mysql-test/suite/perfschema/r/query_cache.result | 3 +-
.../suite/perfschema/r/socket_connect.result | 13 -
.../suite/perfschema/r/stage_mdl_global.result | 1 -
.../suite/perfschema/t/ddl_esms_by_digest.test | 15 +-
.../suite/perfschema/t/dml_esms_by_digest.test | 15 +-
.../suite/perfschema/t/dml_setup_instruments.test | 5 +-
.../t/hostcache_ipv4_addrinfo_again_allow.test | 5 +-
.../t/hostcache_ipv4_addrinfo_again_deny.test | 4 +-
.../t/hostcache_ipv4_addrinfo_bad_allow.test | 4 +-
.../t/hostcache_ipv4_addrinfo_bad_deny.test | 4 +-
.../t/hostcache_ipv4_addrinfo_good_allow.test | 4 +-
.../t/hostcache_ipv4_addrinfo_good_deny.test | 4 +-
.../t/hostcache_ipv4_addrinfo_noname_allow.test | 4 +-
.../t/hostcache_ipv4_addrinfo_noname_deny.test | 4 +-
.../perfschema/t/hostcache_ipv4_auth_plugin.test | 4 +-
.../suite/perfschema/t/hostcache_ipv4_blocked.test | 4 +-
.../suite/perfschema/t/hostcache_ipv4_format.test | 4 +-
.../suite/perfschema/t/hostcache_ipv4_max_con.test | 4 +-
.../t/hostcache_ipv4_nameinfo_again_allow.test | 4 +-
.../t/hostcache_ipv4_nameinfo_again_deny.test | 4 +-
.../t/hostcache_ipv4_nameinfo_noname_allow.test | 4 +-
.../t/hostcache_ipv4_nameinfo_noname_deny.test | 4 +-
.../suite/perfschema/t/hostcache_ipv4_passwd.test | 4 +-
.../suite/perfschema/t/hostcache_ipv4_ssl.test | 4 +-
.../hostcache_ipv6_addrinfo_again_allow-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_again_allow.test | 4 +-
.../hostcache_ipv6_addrinfo_again_deny-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_again_deny.test | 4 +-
.../t/hostcache_ipv6_addrinfo_bad_allow-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_bad_allow.test | 4 +-
.../t/hostcache_ipv6_addrinfo_bad_deny-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_bad_deny.test | 4 +-
.../hostcache_ipv6_addrinfo_good_allow-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_good_allow.test | 4 +-
.../t/hostcache_ipv6_addrinfo_good_deny-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_good_deny.test | 4 +-
...hostcache_ipv6_addrinfo_noname_allow-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_noname_allow.test | 5 +-
.../hostcache_ipv6_addrinfo_noname_deny-master.opt | 1 +
.../t/hostcache_ipv6_addrinfo_noname_deny.test | 5 +-
.../t/hostcache_ipv6_auth_plugin-master.opt | 1 +
.../perfschema/t/hostcache_ipv6_auth_plugin.test | 4 +-
.../perfschema/t/hostcache_ipv6_blocked-master.opt | 1 +
.../suite/perfschema/t/hostcache_ipv6_blocked.test | 3 +-
.../perfschema/t/hostcache_ipv6_max_con-master.opt | 1 +
.../suite/perfschema/t/hostcache_ipv6_max_con.test | 8 +-
.../hostcache_ipv6_nameinfo_again_allow-master.opt | 1 +
.../t/hostcache_ipv6_nameinfo_again_allow.test | 4 +-
.../hostcache_ipv6_nameinfo_again_deny-master.opt | 1 +
.../t/hostcache_ipv6_nameinfo_again_deny.test | 4 +-
...hostcache_ipv6_nameinfo_noname_allow-master.opt | 1 +
.../t/hostcache_ipv6_nameinfo_noname_allow.test | 4 +-
.../hostcache_ipv6_nameinfo_noname_deny-master.opt | 1 +
.../t/hostcache_ipv6_nameinfo_noname_deny.test | 4 +-
.../perfschema/t/hostcache_ipv6_passwd-master.opt | 1 +
.../suite/perfschema/t/hostcache_ipv6_passwd.test | 4 +-
.../perfschema/t/hostcache_ipv6_ssl-master.opt | 1 +
.../suite/perfschema/t/hostcache_ipv6_ssl.test | 4 +-
.../suite/perfschema/t/hostcache_peer_addr.test | 4 +-
mysql-test/suite/perfschema/t/misc.test | 48 +
mysql-test/suite/perfschema/t/partition.test | 16 +
mysql-test/suite/perfschema/t/query_cache.test | 4 +-
mysql-test/suite/perfschema/t/socket_connect.test | 9 +-
mysql-test/suite/perfschema/t/stage_mdl_global.opt | 2 +
mysql-test/suite/perfschema_stress/README | 2 +-
mysql-test/suite/plugins/disabled.def | 0
mysql-test/suite/plugins/r/auth_ed25519.result | 4 +-
.../suite/plugins/r/feedback_plugin_install.result | 2 +-
.../suite/plugins/r/feedback_plugin_load.result | 4 +-
.../suite/plugins/r/feedback_plugin_send.result | 4 +-
mysql-test/suite/plugins/r/pam.result | 20 +
mysql-test/suite/plugins/r/processlist.result | 9 +
mysql-test/suite/plugins/r/qc_info.result | 2 +
mysql-test/suite/plugins/r/qc_info_priv.result | 3 +-
mysql-test/suite/plugins/r/server_audit.result | 55 +-
mysql-test/suite/plugins/r/sql_error_log.result | 4 +-
.../plugins/r/thread_pool_server_audit.result | 1 +
mysql-test/suite/plugins/t/audit_null.test | 2 +-
.../suite/plugins/t/feedback_plugin_load.test | 6 +-
mysql-test/suite/plugins/t/pam.test | 24 +-
mysql-test/suite/plugins/t/processlist.test | 20 +
mysql-test/suite/plugins/t/qc_info.test | 3 +
mysql-test/suite/plugins/t/qc_info_init.inc | 1 -
mysql-test/suite/plugins/t/qc_info_priv.test | 3 +-
mysql-test/suite/plugins/t/server_audit.test | 38 +
.../suite/plugins/t/thread_pool_server_audit.test | 2 +
mysql-test/suite/roles/acl_load_mutex-5170.result | 1 +
mysql-test/suite/roles/acl_load_mutex-5170.test | 1 +
mysql-test/suite/roles/acl_statistics.opt | 1 +
mysql-test/suite/roles/definer.test | 4 +-
mysql-test/suite/roles/flush_roles-17898.result | 40 +
mysql-test/suite/roles/flush_roles-17898.test | 36 +
mysql-test/suite/roles/grant_revoke_current.result | 1 +
mysql-test/suite/roles/grant_revoke_current.test | 2 +
.../suite/roles/set_default_role_ps-6960.result | 1 +
.../suite/roles/set_default_role_ps-6960.test | 2 +
.../suite/roles/show_create_database-10463.test | 3 +-
mysql-test/suite/rpl/disabled.def | 3 +-
mysql-test/suite/rpl/extension/checksum.pl | 2 +-
.../suite/rpl/include/rpl_mixed_check_user.inc | 4 +-
.../rpl/include/rpl_parallel_ignored_errors.inc | 112 +
mysql-test/suite/rpl/r/circular_serverid0.result | 2 +-
.../suite/rpl/r/create_or_replace_mix.result | 14 +
.../suite/rpl/r/create_or_replace_row.result | 10 +
.../suite/rpl/r/create_or_replace_statement.result | 14 +
mysql-test/suite/rpl/r/kill_race_condition.result | 24 +
mysql-test/suite/rpl/r/mdev_17588.result | 34 +
mysql-test/suite/rpl/r/rename.result | 36 +
mysql-test/suite/rpl/r/rpl_15867.result | 9 +
mysql-test/suite/rpl/r/rpl_15919.result | 19 +
mysql-test/suite/rpl/r/rpl_binlog_dup_entry.result | 29 +
.../suite/rpl/r/rpl_binlog_rollback_cleanup.result | 9 +
mysql-test/suite/rpl/r/rpl_blackhole.result | 9 +-
.../suite/rpl/r/rpl_blackhole_row_annotate.result | 446 +
mysql-test/suite/rpl/r/rpl_bug31076.result | 2 +-
mysql-test/suite/rpl/r/rpl_bug33931.result | 3 +-
mysql-test/suite/rpl/r/rpl_bug41902.result | 3 +
mysql-test/suite/rpl/r/rpl_checksum.result | 11 +-
mysql-test/suite/rpl/r/rpl_corruption.result | 13 +-
.../suite/rpl/r/rpl_create_drop_event.result | 4 +
.../suite/rpl/r/rpl_create_or_replace_fail.result | 20 +
mysql-test/suite/rpl/r/rpl_current_user.result | 2 +
mysql-test/suite/rpl/r/rpl_do_grant.result | 14 +-
.../rpl/r/rpl_domain_id_filter_io_crash.result | 2 +
.../rpl/r/rpl_domain_id_filter_master_crash.result | 1 -
mysql-test/suite/rpl/r/rpl_events.result | 6 +
.../suite/rpl/r/rpl_extra_col_master_innodb.result | 6 +-
.../suite/rpl/r/rpl_extra_col_master_myisam.result | 6 +-
.../suite/rpl/r/rpl_extra_col_slave_innodb.result | 12 +-
.../suite/rpl/r/rpl_extra_col_slave_myisam.result | 12 +-
.../suite/rpl/r/rpl_failed_drop_tbl_binlog.result | 32 +
.../suite/rpl/r/rpl_foreign_key_innodb.result | 3 +-
.../suite/rpl/r/rpl_gtid_delete_domain.result | 4 +-
.../rpl/r/rpl_gtid_excess_initial_delay.result | 23 +
mysql-test/suite/rpl/r/rpl_gtid_reconnect.result | 2 +-
mysql-test/suite/rpl/r/rpl_heartbeat_basic.result | 2 +
mysql-test/suite/rpl/r/rpl_heartbeat_debug.result | 4 +-
mysql-test/suite/rpl/r/rpl_idempotency.result | 17 +
mysql-test/suite/rpl/r/rpl_incident.result | 2 +
.../suite/rpl/r/rpl_init_slave_errors.result | 3 +-
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result | 70 +-
mysql-test/suite/rpl/r/rpl_invoked_features.result | 4 +
mysql-test/suite/rpl/r/rpl_killed_ddl.result | 2 +
.../suite/rpl/r/rpl_known_bugs_detection.result | 26 -
.../rpl/r/rpl_lcase_tblnames_rewrite_db.result | 38 +
.../rpl/r/rpl_mariadb_slave_capability.result | 6 +-
mysql-test/suite/rpl/r/rpl_mdev_17614.result | 129 +
.../rpl/r/rpl_mixed_drop_create_temp_table.result | 31 +-
.../rpl/r/rpl_mixed_implicit_commit_binlog.result | 536 +-
mysql-test/suite/rpl/r/rpl_old_master.result | 3 +
mysql-test/suite/rpl/r/rpl_parallel.result | 18 +-
.../suite/rpl/r/rpl_parallel_ignored_errors.result | 50 +
.../suite/rpl/r/rpl_parallel_optimistic.result | 41 +-
mysql-test/suite/rpl/r/rpl_rewrt_db.result | 27 +-
mysql-test/suite/rpl/r/rpl_row_001.result | 4 +-
.../suite/rpl/r/rpl_row_basic_2myisam.result | 4 +-
.../suite/rpl/r/rpl_row_basic_3innodb.result | 4 +-
.../suite/rpl/r/rpl_row_big_table_id,32bit.rdiff | 31 +
mysql-test/suite/rpl/r/rpl_row_big_table_id.result | 48 +
mysql-test/suite/rpl/r/rpl_row_colSize.result | 10 +-
.../rpl/r/rpl_row_drop_create_temp_table.result | 27 -
.../suite/rpl/r/rpl_row_drop_temp_table.result | 38 +
.../suite/rpl/r/rpl_row_find_row_debug.result | 3 +-
.../rpl/r/rpl_row_implicit_commit_binlog.result | 530 +-
.../suite/rpl/r/rpl_row_lcase_tblnames.result | 60 +
mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result | 8 +-
mysql-test/suite/rpl/r/rpl_row_spatial.result | 16 +
.../suite/rpl/r/rpl_row_type_conv_err_msg.result | 164 +
.../rpl/r/rpl_semi_sync_gtid_reconnect.result | 40 +
.../suite/rpl/r/rpl_semi_sync_skip_repl.result | 16 +-
.../rpl/r/rpl_semi_sync_uninstall_plugin.result | 4 -
mysql-test/suite/rpl/r/rpl_set_statement.test | 0
.../suite/rpl/r/rpl_show_slave_running.result | 3 +-
.../rpl/r/rpl_slave_invalid_external_user.result | 15 +
.../rpl/r/rpl_slave_load_remove_tmpfile.result | 3 +-
mysql-test/suite/rpl/r/rpl_stm_000001.result | 4 +-
.../rpl/r/rpl_stm_drop_create_temp_table.result | 31 +-
.../rpl/r/rpl_stm_implicit_commit_binlog.result | 520 +-
.../suite/rpl/r/rpl_stm_lcase_tblnames.result | 57 +
.../suite/rpl/r/rpl_stm_stop_middle_group.result | 3 +-
mysql-test/suite/rpl/r/rpl_stop_slave.result | 4 +
.../rpl/r/rpl_sync_with_innodb_thd_conc.result | 18 +
.../suite/rpl/r/rpl_tmp_table_and_DDL.result | 4 +
mysql-test/suite/rpl/r/rpl_typeconv.result | 44 +
.../suite/rpl/r/rpl_unsafe_statements.result | 5 +
mysql-test/suite/rpl/r/rpl_user.result | 11 +
mysql-test/suite/rpl/r/rpl_view_debug.result | 2 +
mysql-test/suite/rpl/t/circular_serverid0.test | 3 +-
mysql-test/suite/rpl/t/create_or_replace.inc | 13 +
mysql-test/suite/rpl/t/kill_race_condition.test | 36 +
mysql-test/suite/rpl/t/mdev_17588-slave.opt | 1 +
mysql-test/suite/rpl/t/mdev_17588.test | 44 +
mysql-test/suite/rpl/t/rename.test | 33 +
mysql-test/suite/rpl/t/rpl_15867.test | 11 +
mysql-test/suite/rpl/t/rpl_15919-slave.opt | 1 +
mysql-test/suite/rpl/t/rpl_15919.test | 18 +
mysql-test/suite/rpl/t/rpl_binlog_dup_entry.test | 72 +
.../suite/rpl/t/rpl_binlog_rollback_cleanup.test | 46 +
mysql-test/suite/rpl/t/rpl_blackhole.test | 77 +-
.../rpl/t/rpl_blackhole_row_annotate-master.opt | 1 +
.../rpl/t/rpl_blackhole_row_annotate-slave.opt | 1 +
.../suite/rpl/t/rpl_blackhole_row_annotate.test | 49 +
mysql-test/suite/rpl/t/rpl_bug33931.test | 3 +-
mysql-test/suite/rpl/t/rpl_bug41902.test | 5 +-
.../suite/rpl/t/rpl_create_or_replace_fail.test | 56 +
mysql-test/suite/rpl/t/rpl_do_grant.test | 8 +-
.../suite/rpl/t/rpl_domain_id_filter_io_crash.test | 3 +-
.../rpl/t/rpl_domain_id_filter_master_crash.test | 1 -
.../suite/rpl/t/rpl_failed_drop_tbl_binlog.test | 64 +
mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test | 62 +-
.../rpl/t/rpl_get_master_version_and_clock.test | 6 +-
.../suite/rpl/t/rpl_gtid_excess_initial_delay.test | 58 +
mysql-test/suite/rpl/t/rpl_gtid_reconnect.test | 2 +-
mysql-test/suite/rpl/t/rpl_heartbeat_debug.test | 4 +-
mysql-test/suite/rpl/t/rpl_idempotency.test | 21 +
.../suite/rpl/t/rpl_known_bugs_detection.test | 39 -
.../rpl/t/rpl_lcase_tblnames_rewrite_db-slave.opt | 1 +
.../suite/rpl/t/rpl_lcase_tblnames_rewrite_db.test | 60 +
.../suite/rpl/t/rpl_mariadb_slave_capability.test | 8 +-
mysql-test/suite/rpl/t/rpl_mdev_17614.test | 121 +
mysql-test/suite/rpl/t/rpl_old_master.test | 8 +
.../suite/rpl/t/rpl_parallel_ignored_errors.test | 1 +
.../suite/rpl/t/rpl_parallel_optimistic.test | 80 +-
.../rpl/t/rpl_parallel_optimistic_nobinlog.cnf | 1 +
mysql-test/suite/rpl/t/rpl_rewrt_db-slave.opt | 2 +-
mysql-test/suite/rpl/t/rpl_rewrt_db.test | 19 +
mysql-test/suite/rpl/t/rpl_row_big_table_id.test | 58 +
.../suite/rpl/t/rpl_row_drop_temp_table.test | 54 +
mysql-test/suite/rpl/t/rpl_row_find_row_debug.test | 4 +-
mysql-test/suite/rpl/t/rpl_row_index_choice.test | 4 +-
.../suite/rpl/t/rpl_row_lcase_tblnames-slave.opt | 1 +
mysql-test/suite/rpl/t/rpl_row_lcase_tblnames.test | 12 +
mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test | 3 +-
mysql-test/suite/rpl/t/rpl_row_spatial.test | 17 +
.../suite/rpl/t/rpl_row_type_conv_err_msg.test | 356 +
.../suite/rpl/t/rpl_semi_sync_gtid_reconnect.test | 75 +
.../suite/rpl/t/rpl_semi_sync_skip_repl.test | 29 +-
.../rpl/t/rpl_semi_sync_uninstall_plugin.test | 9 +-
mysql-test/suite/rpl/t/rpl_show_slave_running.test | 4 +-
.../rpl/t/rpl_slave_invalid_external_user.test | 42 +
.../suite/rpl/t/rpl_slave_load_remove_tmpfile.test | 4 +-
mysql-test/suite/rpl/t/rpl_stm_000001.test | 4 +-
.../suite/rpl/t/rpl_stm_lcase_tblnames-slave.opt | 1 +
mysql-test/suite/rpl/t/rpl_stm_lcase_tblnames.test | 12 +
mysql-test/suite/rpl/t/rpl_stop_slave.test | 12 +-
.../suite/rpl/t/rpl_sync_with_innodb_thd_conc.test | 41 +
mysql-test/suite/rpl/t/rpl_unsafe_statements.test | 2 +-
mysql-test/suite/rpl/t/rpl_user.test | 11 +
mysql-test/suite/rpl/t/rpl_view_debug.test | 3 +-
mysql-test/suite/storage_engine/type_bool.result | 4 +-
mysql-test/suite/storage_engine/vcol.result | 16 +-
mysql-test/suite/sys_vars/inc/sysvars_server.inc | 54 +-
mysql-test/suite/sys_vars/r/all_vars.result | 1 +
.../r/aria_pagecache_buffer_size_basic.result | 14 +-
.../sys_vars/r/aria_recover_options_basic.result | 1 +
.../sys_vars/r/binlog_cache_size_basic.result | 10 +-
.../sys_vars/r/binlog_stmt_cache_size_basic.result | 10 +-
.../sys_vars/r/character_set_client_basic.result | 22 +-
.../r/character_set_connection_basic.result | 25 +-
.../sys_vars/r/character_set_database_basic.result | 11 +-
.../sys_vars/r/character_set_results_basic.result | Bin 16480 -> 16498 bytes
.../sys_vars/r/character_set_server_basic.result | 23 +-
.../sys_vars/r/character_set_server_func.result | 5 +-
.../sys_vars/r/collation_connection_basic.result | 23 +-
.../sys_vars/r/collation_database_basic.result | 24 +-
.../sys_vars/r/collation_database_func.result | 5 +-
.../suite/sys_vars/r/collation_server_basic.result | 22 +-
mysql-test/suite/sys_vars/r/debug_dbug_func.result | 50 +-
.../sys_vars/r/delayed_insert_limit_func.result | 24 +-
.../suite/sys_vars/r/expire_logs_days_basic.result | 16 +-
.../suite/sys_vars/r/general_log_file_basic.result | 12 +-
.../suite/sys_vars/r/histogram_size_basic.result | 15 +-
.../r/innodb_adaptive_hash_index_basic.result | 25 +-
.../r/innodb_buffer_pool_size_basic.result | 2 -
.../r/innodb_change_buffering_debug_basic.result | 6 +
.../r/innodb_ft_result_cache_limit,32bit.rdiff | 11 +
.../sys_vars/r/innodb_ft_result_cache_limit.result | 5 +
.../innodb_ft_result_cache_limit_basic,32bit.rdiff | 13 +
.../r/innodb_ft_result_cache_limit_basic.result | 7 +-
.../r/innodb_log_optimize_ddl_basic.result | 36 +
.../r/innodb_max_dirty_pages_pct_basic.result | 3 +
.../r/innodb_max_dirty_pages_pct_lwm_basic.result | 3 +
.../sys_vars/r/innodb_spin_wait_delay_basic.result | 16 +-
.../suite/sys_vars/r/join_buffer_size_basic.result | 24 +-
.../r/join_buffer_space_limit_basic.result | 14 +-
.../suite/sys_vars/r/join_cache_level_basic.result | 14 +-
.../sys_vars/r/log_slow_verbosity_basic.result | 10 +-
.../suite/sys_vars/r/long_query_time_basic.result | 32 +-
.../sys_vars/r/max_allowed_packet_basic.result | 9 -
.../sys_vars/r/max_allowed_packet_func.result | 12 +-
.../sys_vars/r/max_connect_errors_basic.result | 18 +-
.../suite/sys_vars/r/max_connections_basic.result | 21 +-
.../sys_vars/r/max_heap_table_size_basic.result | 35 +-
.../suite/sys_vars/r/max_seeks_for_key_func.result | 10 +-
mysql-test/suite/sys_vars/r/maximum_basic.result | 30 +
.../r/myisam_sort_buffer_size_basic.result | 38 +-
.../suite/sys_vars/r/optimizer_switch_basic.result | 10 +-
...ptimizer_use_condition_selectivity_basic.result | 37 -
mysql-test/suite/sys_vars/r/relay_log_basic.result | 10 +-
.../sys_vars/r/slow_query_log_file_basic.result | 6 +-
.../r/sql_low_priority_updates_func.result | 4 +-
.../suite/sys_vars/r/sync_binlog_basic.result | 17 -
mysql-test/suite/sys_vars/r/sysvars_aria.result | 44 +-
.../r/sysvars_innodb,32bit,xtradb.rdiff-disabled | 12 +-
.../suite/sys_vars/r/sysvars_innodb,32bit.rdiff | 301 +-
.../r/sysvars_innodb,xtradb.rdiff-disabled | 8 +-
mysql-test/suite/sys_vars/r/sysvars_innodb.result | 514 +-
.../sys_vars/r/sysvars_server_embedded,32bit.rdiff | 925 +-
.../sys_vars/r/sysvars_server_embedded.result | 1724 +-
.../r/sysvars_server_notembedded,32bit.rdiff | 956 +-
.../sys_vars/r/sysvars_server_notembedded.result | 1976 +-
mysql-test/suite/sys_vars/r/sysvars_wsrep.result | 14 +
.../sys_vars/r/table_definition_cache_basic.result | 31 +-
.../suite/sys_vars/r/table_open_cache_basic.result | 20 +-
.../suite/sys_vars/r/thread_pool_size_high.result | 1 +
.../sys_vars/r/tmp_disk_table_size_func.result | 2 +-
mysql-test/suite/sys_vars/r/userstat_basic.result | 7 +-
.../suite/sys_vars/r/wsrep_sst_method_basic.result | 4 +
.../sys_vars/r/wsrep_start_position_basic.result | 10 +-
.../t/aria_pagecache_buffer_size_basic.test | 6 +-
.../sys_vars/t/aria_recover_options_basic.test | 1 +
.../t/aria_used_for_temp_tables_basic.test | 1 +
.../suite/sys_vars/t/binlog_cache_size_basic.test | 55 +-
.../sys_vars/t/binlog_stmt_cache_size_basic.test | 54 +-
.../sys_vars/t/character_set_client_basic.test | 11 +-
.../sys_vars/t/character_set_connection_basic.test | 13 +-
.../sys_vars/t/character_set_database_basic.test | 7 +-
.../sys_vars/t/character_set_results_basic.test | 11 +-
.../sys_vars/t/character_set_server_basic.test | 11 +-
.../sys_vars/t/character_set_server_func.test | 4 +-
.../sys_vars/t/collation_connection_basic.test | 11 +-
.../suite/sys_vars/t/collation_database_basic.test | 15 +-
.../suite/sys_vars/t/collation_database_func.test | 2 -
.../suite/sys_vars/t/collation_server_basic.test | 10 +-
mysql-test/suite/sys_vars/t/debug_dbug_func.test | 36 +-
.../sys_vars/t/delayed_insert_limit_func.test | 42 +-
.../suite/sys_vars/t/expire_logs_days_basic.test | 7 +-
.../suite/sys_vars/t/general_log_file_basic.test | 4 +-
.../suite/sys_vars/t/histogram_size_basic.test | 6 +-
.../t/innodb_adaptive_hash_index_basic.test | 9 +-
.../sys_vars/t/innodb_buffer_pool_size_basic.test | 13 +-
.../t/innodb_change_buffering_debug_basic.test | 5 +-
.../sys_vars/t/innodb_ft_result_cache_limit.test | 9 +
.../t/innodb_ft_result_cache_limit_basic.test | 5 +-
.../sys_vars/t/innodb_log_optimize_ddl_basic.test | 62 +
.../t/innodb_max_dirty_pages_pct_basic.test | 6 +
.../t/innodb_max_dirty_pages_pct_lwm_basic.test | 6 +
.../sys_vars/t/innodb_read_io_threads_basic.opt | 1 +
.../sys_vars/t/innodb_write_io_threads_basic.opt | 1 +
.../suite/sys_vars/t/join_buffer_size_basic.test | 10 +-
.../sys_vars/t/join_buffer_space_limit_basic.test | 7 +-
.../suite/sys_vars/t/join_cache_level_basic.test | 7 +-
.../suite/sys_vars/t/log_slow_verbosity_basic.test | 4 +-
.../suite/sys_vars/t/long_query_time_basic.test | 25 +-
.../suite/sys_vars/t/max_allowed_packet_basic.test | 4 -
.../suite/sys_vars/t/max_allowed_packet_func.test | 4 +-
.../suite/sys_vars/t/max_connect_errors_basic.test | 10 +-
.../suite/sys_vars/t/max_connections_basic.test | 10 +-
.../suite/sys_vars/t/max_digest_length_basic.test | 2 +-
.../sys_vars/t/max_heap_table_size_basic.test | 25 +-
.../sys_vars/t/max_prepared_stmt_count_func.test | 2 +-
.../suite/sys_vars/t/max_seeks_for_key_func.test | 10 +-
.../suite/sys_vars/t/maximum_basic-master.opt | 2 +
mysql-test/suite/sys_vars/t/maximum_basic.test | 19 +
.../sys_vars/t/myisam_recover_options_basic.opt | 1 +
.../sys_vars/t/myisam_sort_buffer_size_basic.test | 31 +-
.../suite/sys_vars/t/optimizer_switch_basic.test | 7 +-
.../optimizer_use_condition_selectivity_basic.test | 32 -
.../suite/sys_vars/t/pfs_digests_size_basic.test | 2 +-
.../sys_vars/t/pfs_max_digest_length_basic.test | 2 +-
.../t/pfs_session_connect_attrs_size_basic.test | 2 +-
mysql-test/suite/sys_vars/t/relay_log_basic.test | 8 +
.../sys_vars/t/slow_query_log_file_basic.test | 2 +-
.../suite/sys_vars/t/sql_buffer_result_func.test | 10 +
.../sys_vars/t/sql_low_priority_updates_func.test | 4 +-
mysql-test/suite/sys_vars/t/sync_binlog_basic.test | 27 +-
mysql-test/suite/sys_vars/t/sysvars_aria.test | 3 +-
mysql-test/suite/sys_vars/t/sysvars_innodb.test | 7 +-
.../suite/sys_vars/t/sysvars_server_embedded.opt | 1 -
.../sys_vars/t/sysvars_server_notembedded.opt | 1 -
.../sys_vars/t/table_definition_cache_basic.test | 69 +-
.../suite/sys_vars/t/table_open_cache_basic.test | 23 +-
.../suite/sys_vars/t/thread_pool_size_high.test | 1 +
.../suite/sys_vars/t/thread_stack_basic.test | 10 +-
.../suite/sys_vars/t/tmp_disk_table_size_func.test | 3 +-
.../t/transaction_prealloc_size_bug27322.test | 9 +-
mysql-test/suite/sys_vars/t/userstat_basic.test | 5 +-
.../suite/sys_vars/t/wsrep_sst_method_basic.test | 5 +
.../sys_vars/t/wsrep_start_position_basic.test | 6 +-
mysql-test/suite/unit/suite.pm | 2 +-
mysql-test/suite/vcol/inc/vcol_keys.inc | 1 -
mysql-test/suite/vcol/inc/vcol_trigger_sp.inc | 2 +-
mysql-test/suite/vcol/r/binlog.result | 70 +
mysql-test/suite/vcol/r/index.result | 101 +
mysql-test/suite/vcol/r/partition.result | 10 +
mysql-test/suite/vcol/r/races.result | 16 +
mysql-test/suite/vcol/r/update.result | 22 +-
mysql-test/suite/vcol/r/update_binlog.result | 361 +
mysql-test/suite/vcol/r/upgrade.result | 16 +
mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result | 20 +-
mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result | 20 +-
mysql-test/suite/vcol/r/vcol_keys_innodb.result | 17 +-
mysql-test/suite/vcol/r/vcol_keys_myisam.result | 33 +
mysql-test/suite/vcol/r/vcol_misc.result | 82 +-
mysql-test/suite/vcol/r/vcol_select_myisam.result | 6 +-
mysql-test/suite/vcol/r/vcol_sql_mode.result | 534 +
.../suite/vcol/r/vcol_sql_mode_upgrade.result | 384 +
.../suite/vcol/r/vcol_trigger_sp_innodb.result | 2 +-
.../suite/vcol/r/vcol_trigger_sp_myisam.result | 2 +-
mysql-test/suite/vcol/t/binlog.test | 55 +
mysql-test/suite/vcol/t/cross_db.test | 3 +
mysql-test/suite/vcol/t/index.test | 97 +
mysql-test/suite/vcol/t/partition.test | 12 +
mysql-test/suite/vcol/t/races.test | 22 +
mysql-test/suite/vcol/t/update.test | 4 +-
mysql-test/suite/vcol/t/update_binlog.test | 14 +
mysql-test/suite/vcol/t/upgrade.test | 15 +
mysql-test/suite/vcol/t/vcol_keys_innodb.opt | 1 +
mysql-test/suite/vcol/t/vcol_keys_innodb.test | 18 +
mysql-test/suite/vcol/t/vcol_keys_myisam.test | 38 +
mysql-test/suite/vcol/t/vcol_misc.test | 83 +-
mysql-test/suite/vcol/t/vcol_select_innodb.test | 1 +
mysql-test/suite/vcol/t/vcol_select_myisam.test | 43 +-
mysql-test/suite/vcol/t/vcol_sql_mode.test | 349 +
mysql-test/suite/vcol/t/vcol_sql_mode_upgrade.test | 197 +
mysql-test/suite/vcol/t/wrong_arena.test | 2 +
mysql-test/suite/wsrep/disabled.def | 12 +
.../suite/wsrep/include/check_galera_version.inc | 20 +-
mysql-test/suite/wsrep/my.cnf | 4 +-
mysql-test/suite/wsrep/r/mdev_10186.result | 3 -
.../wsrep/r/mysql_tzinfo_to_sql_symlink.result | 82 +-
.../r/mysql_tzinfo_to_sql_symlink_skip.result | 74 +
mysql-test/suite/wsrep/r/variables.result | 104 +-
.../suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff | 17 +
mysql-test/suite/wsrep/r/wsrep-recover-v25.result | 28 +
mysql-test/suite/wsrep/suite.pm | 20 +-
mysql-test/suite/wsrep/t/alter_table_innodb.cnf | 12 +
mysql-test/suite/wsrep/t/alter_table_innodb.opt | 1 -
mysql-test/suite/wsrep/t/binlog_format.opt | 2 +-
mysql-test/suite/wsrep/t/mdev_10186.cnf | 15 +
mysql-test/suite/wsrep/t/mdev_10186.opt | 1 -
mysql-test/suite/wsrep/t/mdev_10186.test | 2 -
.../suite/wsrep/t/mysql_tzinfo_to_sql_symlink.opt | 3 +
.../suite/wsrep/t/mysql_tzinfo_to_sql_symlink.test | 1 +
.../wsrep/t/mysql_tzinfo_to_sql_symlink_skip.opt | 3 +
.../wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test | 41 +
mysql-test/suite/wsrep/t/pool_of_threads.opt | 2 +-
mysql-test/suite/wsrep/t/variables.test | 54 +-
mysql-test/suite/wsrep/t/wsrep-recover-step.inc | 41 +
mysql-test/suite/wsrep/t/wsrep-recover-v25.cnf | 7 +
.../suite/wsrep/t/wsrep-recover-v25.combinations | 4 +
mysql-test/suite/wsrep/t/wsrep-recover-v25.test | 119 +
mysql-test/t/alter_table.test | 130 +
mysql-test/t/alter_table_errors.test | 31 +
mysql-test/t/analyze.test | 2 +
mysql-test/t/analyze_format_json.test | 2 +
mysql-test/t/analyze_stmt.test | 10 +-
mysql-test/t/analyze_stmt_orderby.test | 1 +
mysql-test/t/analyze_stmt_privileges2.test | 6 +-
mysql-test/t/assign_key_cache-5405.test | 27 -
mysql-test/t/assign_key_cache.test | 13 +
mysql-test/t/assign_key_cache_debug.test | 27 +
mysql-test/t/auto_increment.test | 36 +
mysql-test/t/auto_increment_ranges_innodb.test | 13 +
mysql-test/t/bigint.test | 9 +
mysql-test/t/bootstrap.test | 23 +-
mysql-test/t/bug13633383.test | 3 +
mysql-test/t/cache_temporal_4265.test | 6 +-
mysql-test/t/cast.test | 3 +-
mysql-test/t/charset_client_win.test | 2 +
mysql-test/t/check.test | 45 +
mysql-test/t/check_constraint.test | 67 +-
mysql-test/t/check_constraint_innodb.test | 14 +
mysql-test/t/compare.test | 14 +
mysql-test/t/compound.test | 2 +
mysql-test/t/connect.test | 13 +-
mysql-test/t/connect_debug.test | 39 +
mysql-test/t/constraints.test | 79 +
mysql-test/t/create.test | 8 +-
mysql-test/t/create_drop_role.test | 11 +
mysql-test/t/create_or_replace.test | 54 +-
mysql-test/t/create_or_replace2.test | 4 +-
mysql-test/t/create_replace_tmp.test | 4 +
mysql-test/t/cte_nonrecursive.test | 190 +
mysql-test/t/cte_recursive.test | 322 +
mysql-test/t/cte_recursive_not_embedded.test | 42 +
mysql-test/t/ctype_binary.test | 3 +
mysql-test/t/ctype_create.test | 4 +
mysql-test/t/ctype_eucjpms.test | 2 +
mysql-test/t/ctype_euckr.test | 10 +
mysql-test/t/ctype_gbk.test | 3 +
mysql-test/t/ctype_latin1.test | 15 +
mysql-test/t/ctype_latin1_de.test | 5 +
mysql-test/t/ctype_uca.test | 18 +
mysql-test/t/ctype_ucs.test | 5 +
mysql-test/t/ctype_ujis.test | 10 +-
mysql-test/t/ctype_utf16.test | 8 +-
mysql-test/t/ctype_utf16_def-master.opt | 2 +-
mysql-test/t/ctype_utf16le.test | 13 +
mysql-test/t/ctype_utf32.test | 8 +
mysql-test/t/ctype_utf8.test | 9 +
mysql-test/t/ctype_utf8_def_upgrade.opt | 1 +
mysql-test/t/ctype_utf8_def_upgrade.test | 61 +
mysql-test/t/ctype_utf8mb4.test | 11 +
mysql-test/t/ddl_i18n_koi8r.test | 8 +-
mysql-test/t/ddl_i18n_utf8.test | 8 +-
mysql-test/t/default.test | 15 +-
mysql-test/t/default_session.test | 24 +
mysql-test/t/derived.test | 28 +
mysql-test/t/derived_cond_pushdown.test | 1183 +-
mysql-test/t/derived_opt.test | 38 +
mysql-test/t/derived_view.test | 303 +-
mysql-test/t/distinct.test | 27 +
mysql-test/t/drop_bad_db_type.test | 6 +-
mysql-test/t/dyncol.test | 8 +-
mysql-test/t/engine_error_in_alter-8453.test | 5 +-
mysql-test/t/error_simulation.test | 18 +-
mysql-test/t/events_1.test | 5 +-
mysql-test/t/events_2.test | 1 +
mysql-test/t/events_bugs.test | 5 +-
mysql-test/t/events_grant.test | 2 +
mysql-test/t/events_logs_tests.test | 5 +-
mysql-test/t/events_restart.test | 2 +
mysql-test/t/events_stress.test | 1 +
mysql-test/t/explain_json.test | 2 +
mysql-test/t/explain_slowquerylog.test | 6 +
mysql-test/t/flush.test | 31 +
mysql-test/t/flush2.test | 9 +-
mysql-test/t/foreign_key.test | 24 +
mysql-test/t/func_compress.test | 7 +-
mysql-test/t/func_concat.test | 22 +
mysql-test/t/func_default.test | 5 +
mysql-test/t/func_gconcat.test | 33 +-
mysql-test/t/func_group_innodb.test | 19 +
mysql-test/t/func_hybrid_type.test | 20 +
mysql-test/t/func_isnull.test | 17 +
mysql-test/t/func_json.test | 149 +-
mysql-test/t/func_math.test | 98 +-
mysql-test/t/func_misc.test | 30 +
mysql-test/t/func_regexp_pcre.test | 8 +-
mysql-test/t/func_regexp_pcre_debug.test | 3 +-
mysql-test/t/func_str.test | 84 +-
mysql-test/t/func_time.test | 123 +
mysql-test/t/func_weight_string.test | 4 +-
mysql-test/t/function_defaults.test | 48 +
mysql-test/t/gis-loaddata.test | 21 +
mysql-test/t/gis-precise.test | 10 +
mysql-test/t/gis.test | 63 +-
mysql-test/t/gis2.test | 45 -
mysql-test/t/gis_notembedded.test | 24 +
mysql-test/t/grant.opt | 1 +
mysql-test/t/grant.test | 36 +-
mysql-test/t/grant2.opt | 1 +
mysql-test/t/grant2.test | 7 +-
mysql-test/t/grant4.opt | 1 +
mysql-test/t/grant4.test | 31 +-
mysql-test/t/grant5.test | 10 +
mysql-test/t/grant_explain_non_select.test | 2 +
mysql-test/t/grant_not_windows.test | 14 +
mysql-test/t/greedy_optimizer.test | 7 +-
mysql-test/t/group_by.test | 31 +
mysql-test/t/group_min_max.test | 46 +
mysql-test/t/handlersocket.opt | 1 +
mysql-test/t/having.test | 17 +
mysql-test/t/host_cache_size_functionality.test | 7 +-
mysql-test/t/huge_frm-6224.test | 11 +-
mysql-test/t/index_intersect.test | 3 +
mysql-test/t/index_merge_innodb.test | 53 +-
mysql-test/t/index_merge_myisam.test | 31 +-
mysql-test/t/information_schema-big.test | 12 +-
mysql-test/t/information_schema.test | 7 +
mysql-test/t/information_schema_db.test | 44 +
mysql-test/t/information_schema_parameters.test | 4 +-
mysql-test/t/information_schema_prepare.test | 7 +
mysql-test/t/information_schema_routines.test | 2 +
mysql-test/t/information_schema_stats.test | 3 +-
mysql-test/t/init_connection_query_cache.test | 3 +-
mysql-test/t/innodb_ext_key.test | 4 +
mysql-test/t/innodb_icp.test | 1 +
mysql-test/t/insert.test | 2 +-
mysql-test/t/insert_debug-master.opt | 1 +
mysql-test/t/insert_debug.test | 54 +
mysql-test/t/insert_select.test | 10 +
mysql-test/t/join.test | 518 +
mysql-test/t/join_cache.test | 342 +-
mysql-test/t/join_nested.test | 34 +
mysql-test/t/join_nested_jcl6.test | 3 +-
mysql-test/t/join_outer.test | 204 +-
mysql-test/t/join_outer_innodb.test | 3 +-
mysql-test/t/join_outer_jcl6.test | 10 +-
mysql-test/t/kill.test | 21 +
mysql-test/t/kill_processlist-6619.test | 2 +
mysql-test/t/limit.test | 14 +
mysql-test/t/limit_rows_examined.test | 1 +
mysql-test/t/loaddata.test | 85 +
mysql-test/t/loadxml.test | 19 +
mysql-test/t/lock.test | 6 +-
mysql-test/t/lock_multi.test | 14 +-
mysql-test/t/log_slow.test | 42 +
mysql-test/t/log_slow_debug.test | 127 +
mysql-test/t/log_state.test | 4 +-
mysql-test/t/log_tables.test | 8 +-
mysql-test/t/lowercase_fs_off.test | 15 +
mysql-test/t/lowercase_table.test | 12 +
mysql-test/t/lowercase_table4.test | 2 +
mysql-test/t/lowercase_table_qcache.test | 3 +-
mysql-test/t/max_statement_time.test | 8 +
mysql-test/t/mdev13607.test | 1 +
mysql-test/t/mdev375.test | 5 +-
mysql-test/t/mdev6830.test | 4 +-
mysql-test/t/mdev_19276.test | 17 +
mysql-test/t/merge-big.test | 2 +-
mysql-test/t/merge.test | 21 +-
mysql-test/t/merge_debug.test | 2 +-
mysql-test/t/mrr_icp_extra.test | 5 +-
mysql-test/t/multi_update.test | 69 +-
mysql-test/t/multi_update2-master.opt | 1 -
mysql-test/t/multi_update2.test | 78 -
mysql-test/t/multi_update_big.opt | 1 +
mysql-test/t/multi_update_big.test | 78 +
mysql-test/t/multi_update_debug.test | 27 +
mysql-test/t/multi_update_innodb.test | 71 +
mysql-test/t/myisam.test | 21 +
mysql-test/t/myisam_debug.test | 4 +-
mysql-test/t/myisam_explain_non_select_all.test | 2 +
mysql-test/t/myisam_icp.test | 1 +
mysql-test/t/myisam_mrr.test | 1 +
mysql-test/t/myisam_recover.test | 4 +-
mysql-test/t/mysql.test | 49 +-
mysql-test/t/mysql_client_test.test | 15 +
mysql-test/t/mysql_client_test_nonblock.test | 3 +
mysql-test/t/mysql_comments.test | 6 +-
mysql-test/t/mysql_cp932.test | 42 +-
mysql-test/t/mysql_not_windows.test | 7 +
mysql-test/t/mysqlbinlog-innodb.test | 2 +
mysql-test/t/mysqlbinlog.test | 24 +-
mysql-test/t/mysqlbinlog_row_big.test | 2 +
mysql-test/t/mysqlbinlog_row_compressed.test | 2 +-
mysql-test/t/mysqlbinlog_row_minimal.test | 43 +-
mysql-test/t/mysqlbinlog_stmt_compressed.test | 2 +-
mysql-test/t/mysqlcheck.opt | 1 +
mysql-test/t/mysqlcheck.test | 20 +-
mysql-test/t/mysqld--help.test | 4 +-
mysql-test/t/mysqld_option_err.test | 2 +
mysql-test/t/mysqldump-compat.test | 13 +
mysql-test/t/mysqldump-max.test | 2 +
mysql-test/t/mysqldump-nl.test | 1 +
mysql-test/t/mysqldump.opt | 1 +
mysql-test/t/mysqldump.test | 269 +-
mysql-test/t/mysqlslap.test | 8 +
mysql-test/t/mysqltest_tracking_info.test | 25 +
mysql-test/t/olap.test | 62 +
mysql-test/t/old-mode.test | 3 +-
mysql-test/t/openssl_1.test | 99 +-
mysql-test/t/order_by.test | 30 +
mysql-test/t/order_by_innodb.test | 28 +
mysql-test/t/order_by_zerolength-4285.test | 14 +
mysql-test/t/partition.test | 64 +-
mysql-test/t/partition_alter.test | 2 -
mysql-test/t/partition_debug_sync.test | 3 -
mysql-test/t/partition_example.opt | 1 +
mysql-test/t/partition_explicit_prune.test | 19 +
mysql-test/t/partition_innodb.test | 75 +
mysql-test/t/partition_key_cache.test | 2 +-
mysql-test/t/partition_list.test | 41 +
mysql-test/t/partition_open_files_limit.test | 4 +
mysql-test/t/partition_pruning.test | 1 +
mysql-test/t/plugin.opt | 1 +
mysql-test/t/plugin.test | 11 +
mysql-test/t/plugin_auth.test | 10 +-
mysql-test/t/plugin_innodb.opt | 1 +
mysql-test/t/plugin_load.opt | 1 +
mysql-test/t/plugin_load_option.opt | 1 +
mysql-test/t/plugin_not_embedded.opt | 1 +
mysql-test/t/plugin_not_embedded.test | 9 +
mysql-test/t/pool_of_threads.test | 5 +-
mysql-test/t/processlist.test | 4 +-
mysql-test/t/processlist_notembedded.test | 34 +
mysql-test/t/ps-master.opt | 2 +-
mysql-test/t/ps.test | 263 +-
mysql-test/t/ps_error.test | 66 +
mysql-test/t/ps_innodb.test | 80 +
mysql-test/t/query_cache.test | 11 +-
mysql-test/t/query_cache_debug.test | 22 +-
mysql-test/t/query_cache_innodb.test | 4 +-
mysql-test/t/query_cache_merge.test | 8 +-
mysql-test/t/query_cache_notembedded.test | 6 +-
mysql-test/t/query_cache_ps_no_prot.test | 2 +
mysql-test/t/query_cache_with_views.test | 7 +-
mysql-test/t/range.test | 34 +
mysql-test/t/range_innodb.test | 43 +
mysql-test/t/range_interrupted-13751.test | 8 +-
mysql-test/t/range_mrr_icp.test | 2 +
mysql-test/t/range_vs_index_merge.test | 3 +
mysql-test/t/read_only.test | 23 +-
mysql-test/t/read_only_innodb.test | 9 -
mysql-test/t/rename.test | 53 +
mysql-test/t/reopen_temp_table.test | 40 +
mysql-test/t/repair.test | 8 +
mysql-test/t/repair_symlink-5543.test | 8 +-
mysql-test/t/reset_connection.test | 40 +
mysql-test/t/row-checksum.test | 17 +
mysql-test/t/schema.test | 1 +
mysql-test/t/select.test | 9 +-
mysql-test/t/select_debug.test | 2 +
mysql-test/t/select_jcl6.test | 1 -
mysql-test/t/selectivity.test | 233 +-
mysql-test/t/selectivity_innodb.test | 4 +
mysql-test/t/selectivity_no_engine.test | 1 +
mysql-test/t/session_tracker_last_gtid.test | 19 +
mysql-test/t/set_password.test | 147 +
mysql-test/t/set_password_plugin-9835.test | 131 -
mysql-test/t/set_statement.test | 6 +
mysql-test/t/show_bad_definer-5553.test | 2 +
mysql-test/t/show_check.test | 27 +-
mysql-test/t/show_explain.test | 182 +-
mysql-test/t/show_explain_non_select.test | 8 +-
mysql-test/t/show_explain_ps.test | 21 +-
mysql-test/t/show_grants_with_plugin-7985.test | 2 +-
mysql-test/t/slowlog_enospace-10508.test | 5 +-
mysql-test/t/sp-code.test | 3 +-
mysql-test/t/sp-error.test | 2 +
mysql-test/t/sp-innodb.test | 42 +
mysql-test/t/sp-security.test | 36 +-
mysql-test/t/sp-ucs2.test | 16 +-
mysql-test/t/sp.test | 157 +-
mysql-test/t/sp_notembedded.test | 2 +-
mysql-test/t/sp_trans.test | 2 +-
mysql-test/t/ssl-big.test | 1 +
mysql-test/t/ssl.test | 7 +-
mysql-test/t/ssl_7937.test | 13 +-
mysql-test/t/ssl_8k_key.test | 3 -
mysql-test/t/ssl_cert_verify.test | 43 -
mysql-test/t/ssl_cipher-master.opt | 1 -
mysql-test/t/ssl_cipher.test | 110 +-
mysql-test/t/ssl_compress.test | 1 +
mysql-test/t/ssl_crl-master.opt | 4 -
mysql-test/t/ssl_crl.combinations | 5 +
mysql-test/t/ssl_crl.test | 15 +-
mysql-test/t/ssl_crl_clients-master.opt | 4 -
mysql-test/t/ssl_crl_clients.test | 41 +-
mysql-test/t/ssl_crl_clients_valid-master.opt | 4 -
mysql-test/t/ssl_crl_clients_valid.test | 23 -
mysql-test/t/ssl_crl_clrpath-master.opt | 4 -
mysql-test/t/ssl_crl_clrpath.test | 16 -
mysql-test/t/ssl_system_ca.combinations | 11 +
mysql-test/t/ssl_system_ca.test | 20 +
mysql-test/t/ssl_verify_ip.opt | 3 +
mysql-test/t/ssl_verify_ip.test | 3 +
mysql-test/t/stat_tables-enospc.test | 8 +-
mysql-test/t/stat_tables.test | 264 +
mysql-test/t/statistics.test | 45 +
mysql-test/t/statistics_close.test | 18 +
mysql-test/t/status2.test | 4 +-
mysql-test/t/subselect-crash_15755.test | 60 +
mysql-test/t/subselect.test | 42 +-
mysql-test/t/subselect2.test | 23 +-
mysql-test/t/subselect3.inc | 1306 +
mysql-test/t/subselect3.test | 1316 +-
mysql-test/t/subselect3_jcl6.test | 15 +-
mysql-test/t/subselect4.test | 2 +
mysql-test/t/subselect_exists2in.test | 1 +
mysql-test/t/subselect_extra.test | 1 +
mysql-test/t/subselect_extra_no_semijoin.test | 31 +-
mysql-test/t/subselect_mat.test | 13 +
mysql-test/t/subselect_mat_cost.test | 6 +-
mysql-test/t/subselect_mat_cost_bugs.test | 1 +
mysql-test/t/subselect_no_semijoin.test | 23 +
mysql-test/t/subselect_sj.test | 111 +-
mysql-test/t/subselect_sj2.test | 4 +-
mysql-test/t/subselect_sj2_jcl6.test | 4 -
mysql-test/t/subselect_sj2_mat.test | 180 +
mysql-test/t/subselect_sj_jcl6.test | 8 +-
mysql-test/t/subselect_sj_mat.test | 210 +-
mysql-test/t/subselect_sj_nonmerged.test | 2 +
mysql-test/t/sum_distinct-big.test | 48 +-
mysql-test/t/table_options-5867.opt | 1 +
mysql-test/t/temp_table.test | 44 +
mysql-test/t/timezone2.test | 31 +
mysql-test/t/tmp_table_count-7586.test | 4 +
mysql-test/t/trigger-compat.test | 3 +-
mysql-test/t/trigger.test | 49 +-
mysql-test/t/trigger_notembedded.test | 3 +-
mysql-test/t/trigger_null-8605.test | 4 +
mysql-test/t/truncate-stale-6500.test | 3 +-
mysql-test/t/truncate_badse.opt | 1 +
mysql-test/t/type_bit.test | 34 +
mysql-test/t/type_blob.test | 23 +
mysql-test/t/type_date.test | 38 +
mysql-test/t/type_datetime.test | 100 +-
mysql-test/t/type_decimal.test | 42 +
mysql-test/t/type_float.test | 30 +
mysql-test/t/type_int.test | 45 +
mysql-test/t/type_newdecimal.test | 89 +-
mysql-test/t/type_time.test | 34 +
mysql-test/t/type_time_6065.test | 2 +
mysql-test/t/type_varchar.opt | 1 +
mysql-test/t/type_year.test | 20 +-
mysql-test/t/udf.test | 13 +
mysql-test/t/udf_query_cache.test | 4 +-
mysql-test/t/union.test | 57 +-
mysql-test/t/union_crash-714.test | 4 +-
mysql-test/t/uniques_crash-7912.test | 26 -
mysql-test/t/update.test | 19 +
mysql-test/t/update_innodb.test | 29 +
mysql-test/t/upgrade.opt | 1 +
mysql-test/t/upgrade.test | 2 +-
mysql-test/t/user_var-binlog.test | 1 +
mysql-test/t/userstat-badlogin-4824.test | 3 +-
mysql-test/t/userstat.opt | 1 +
mysql-test/t/userstat.test | 7 +-
mysql-test/t/variables-master.opt | 2 +-
mysql-test/t/variables-notembedded.test | 20 +-
mysql-test/t/variables.test | 23 +-
mysql-test/t/view.test | 48 +-
mysql-test/t/view_grant.test | 5 +
mysql-test/t/warnings_debug.test | 2 +
mysql-test/t/win.test | 384 +-
mysql-test/t/win_lead_lag.test | 13 +
mysql-test/t/win_percent_cume.test | 6 +-
mysql-test/t/win_rank.test | 17 +-
mysql-test/t/win_std.test | 4 +
mysql-test/t/xtradb_mrr.test | 3 +
mysql-test/unstable-tests | 1150 +-
mysql-test/valgrind.supp | 152 +-
mysys/CMakeLists.txt | 7 +-
mysys/array.c | 2 +-
mysys/base64.c | 2 +-
mysys/charset-def.c | 2 +-
mysys/charset.c | 220 +-
mysys/checksum.c | 2 +-
mysys/errors.c | 2 +-
mysys/file_logger.c | 2 +-
mysys/get_password.c | 2 +-
mysys/hash.c | 4 +-
mysys/lf_alloc-pin.c | 2 +-
mysys/lf_dynarray.c | 2 +-
mysys/lf_hash.c | 2 +-
mysys/list.c | 2 +-
mysys/mf_arr_appstr.c | 2 +-
mysys/mf_cache.c | 2 +-
mysys/mf_dirname.c | 2 +-
mysys/mf_fn_ext.c | 2 +-
mysys/mf_format.c | 2 +-
mysys/mf_getdate.c | 2 +-
mysys/mf_iocache.c | 22 +-
mysys/mf_iocache2.c | 67 +-
mysys/mf_keycache.c | 2 +-
mysys/mf_keycaches.c | 2 +-
mysys/mf_loadpath.c | 2 +-
mysys/mf_pack.c | 2 +-
mysys/mf_path.c | 2 +-
mysys/mf_qsort.c | 2 +-
mysys/mf_qsort2.c | 2 +-
mysys/mf_radix.c | 2 +-
mysys/mf_same.c | 2 +-
mysys/mf_sort.c | 2 +-
mysys/mf_soundex.c | 2 +-
mysys/mf_tempdir.c | 2 +-
mysys/mf_tempfile.c | 2 +-
mysys/mf_unixpath.c | 2 +-
mysys/mf_wcomp.c | 2 +-
mysys/mulalloc.c | 2 +-
mysys/my_access.c | 2 +-
mysys/my_addr_resolve.c | 2 +-
mysys/my_alarm.c | 2 +-
mysys/my_alloc.c | 8 +-
mysys/my_atomic.c | 2 +-
mysys/my_basename.c | 2 +-
mysys/my_bit.c | 2 +-
mysys/my_bitmap.c | 2 +-
mysys/my_chmod.c | 2 +-
mysys/my_chsize.c | 2 +-
mysys/my_compare.c | 2 +-
mysys/my_compress.c | 2 +-
mysys/my_conio.c | 2 +-
mysys/my_copy.c | 2 +-
mysys/my_create.c | 2 +-
mysys/my_default.c | 2 +-
mysys/my_delete.c | 63 +-
mysys/my_div.c | 2 +-
mysys/my_dlerror.c | 2 +-
mysys/my_error.c | 2 +-
mysys/my_file.c | 9 +-
mysys/my_fopen.c | 2 +-
mysys/my_fstream.c | 2 +-
mysys/my_gethwaddr.c | 2 +-
mysys/my_getncpus.c | 2 +-
mysys/my_getopt.c | 2 +-
mysys/my_getpagesize.c | 2 +-
mysys/my_getsystime.c | 2 +-
mysys/my_getwd.c | 2 +-
mysys/my_init.c | 2 +-
mysys/my_largepage.c | 2 +-
mysys/my_lib.c | 2 +-
mysys/my_libwrap.c | 2 +-
mysys/my_lock.c | 2 +-
mysys/my_lockmem.c | 2 +-
mysys/my_malloc.c | 3 +-
mysys/my_memmem.c | 2 +-
mysys/my_mess.c | 2 +-
mysys/my_mkdir.c | 2 +-
mysys/my_mmap.c | 2 +-
mysys/my_new.cc | 2 +-
mysys/my_once.c | 2 +-
mysys/my_open.c | 2 +-
mysys/my_port.c | 2 +-
mysys/my_pread.c | 30 +-
mysys/my_pthread.c | 2 +-
mysys/my_quick.c | 2 +-
mysys/my_rdtsc.c | 2 +-
mysys/my_read.c | 50 +-
mysys/my_redel.c | 2 +-
mysys/my_rename.c | 7 +-
mysys/my_rnd.c | 2 +-
mysys/my_safehash.c | 2 +-
mysys/my_safehash.h | 2 +-
mysys/my_seek.c | 2 +-
mysys/my_sleep.c | 2 +-
mysys/my_static.c | 2 +-
mysys/my_static.h | 2 +-
mysys/my_symlink.c | 4 +-
mysys/my_symlink2.c | 2 +-
mysys/my_sync.c | 2 +-
mysys/my_thr_init.c | 2 +-
mysys/my_timer_cycles.il | 2 +-
mysys/my_uuid.c | 2 +-
mysys/my_wincond.c | 2 +-
mysys/my_windac.c | 2 +-
mysys/my_winerr.c | 2 +-
mysys/my_winfile.c | 2 +-
mysys/my_winthread.c | 2 +-
mysys/my_write.c | 2 +-
mysys/mysys_priv.h | 2 +-
mysys/psi_noop.c | 2 +-
mysys/ptr_cmp.c | 9 +-
mysys/safemalloc.c | 4 +-
mysys/stacktrace.c | 2 +-
mysys/string.c | 2 +-
mysys/test_charset.c | 2 +-
mysys/test_dir.c | 2 +-
mysys/test_thr_mutex.c | 2 +-
mysys/test_xml.c | 2 +-
mysys/testhash.c | 2 +-
mysys/thr_alarm.c | 2 +-
mysys/thr_lock.c | 2 +-
mysys/thr_mutex.c | 2 +-
mysys/thr_rwlock.c | 2 +-
mysys/thr_timer.c | 2 +-
mysys/tree.c | 50 +-
mysys/typelib.c | 2 +-
mysys/waiting_threads.c | 2 +-
mysys/wqueue.c | 2 +-
mysys_ssl/CMakeLists.txt | 2 +-
mysys_ssl/my_crypt.cc | 7 +-
mysys_ssl/my_md5.cc | 2 +-
mysys_ssl/my_sha.ic | 2 +-
mysys_ssl/my_sha1.cc | 2 +-
mysys_ssl/my_sha224.cc | 2 +-
mysys_ssl/my_sha256.cc | 2 +-
mysys_ssl/my_sha384.cc | 2 +-
mysys_ssl/my_sha512.cc | 2 +-
mysys_ssl/yassl.cc | 2 +-
pcre/AUTHORS | 6 +-
pcre/ChangeLog | 96 +
pcre/INSTALL | 320 +-
pcre/LICENCE | 10 +-
pcre/NEWS | 16 +
pcre/NON-AUTOTOOLS-BUILD | 15 +-
pcre/configure.ac | 26 +-
pcre/doc/html/NON-AUTOTOOLS-BUILD.txt | 15 +-
pcre/pcre.h.in | 8 +-
pcre/pcre_compile.c | 20 +-
pcre/pcre_dfa_exec.c | 5 +-
pcre/pcre_exec.c | 10 +-
pcre/pcre_jit_compile.c | 409 +-
pcre/pcrecpp.cc | 64 +-
pcre/pcrecpp_unittest.cc | 34 +-
pcre/pcregrep.c | 59 +-
pcre/pcreposix.c | 6 +-
pcre/pcretest.c | 3 +-
pcre/testdata/testinput1 | 15 +
pcre/testdata/testinput2 | 11 +
pcre/testdata/testinput4 | 3 +
pcre/testdata/testinput5 | 6 +
pcre/testdata/testoutput1 | 24 +
pcre/testdata/testoutput2 | 20 +
pcre/testdata/testoutput4 | 4 +
pcre/testdata/testoutput5 | 8 +
plugin/audit_null/CMakeLists.txt | 2 +-
plugin/audit_null/audit_null.c | 2 +-
plugin/auth_dialog/CMakeLists.txt | 2 +-
plugin/auth_dialog/dialog.c | 2 +-
plugin/auth_ed25519/CMakeLists.txt | 6 +-
plugin/auth_ed25519/client_ed25519.c | 2 +-
plugin/auth_ed25519/common.h | 2 +-
plugin/auth_ed25519/ed25519-t.c | 2 +-
plugin/auth_ed25519/server_ed25519.c | 6 +-
plugin/auth_examples/CMakeLists.txt | 2 +-
plugin/auth_examples/auth_0x0100.c | 2 +-
plugin/auth_examples/clear_password_client.c | 2 +-
plugin/auth_examples/dialog_examples.c | 2 +-
plugin/auth_examples/qa_auth_client.c | 2 +-
plugin/auth_examples/qa_auth_interface.c | 2 +-
plugin/auth_examples/qa_auth_server.c | 2 +-
plugin/auth_examples/test_plugin.c | 2 +-
plugin/auth_gssapi/cmake/FindGSSAPI.cmake | 2 +-
plugin/auth_gssapi/gssapi_server.cc | 10 +-
.../auth_gssapi/mysql-test/auth_gssapi/basic.test | 1 +
plugin/auth_gssapi/sspi_server.cc | 11 +-
plugin/auth_pam/CMakeLists.txt | 11 +
plugin/auth_pam/auth_pam.c | 16 +-
plugin/auth_pam/mapper/pam_user_map.c | 6 +-
plugin/auth_pam/mapper/user_map.conf | 13 +
plugin/auth_pipe/auth_pipe.c | 2 +-
plugin/auth_socket/CMakeLists.txt | 2 +-
plugin/auth_socket/auth_socket.c | 2 +-
plugin/aws_key_management/CMakeLists.txt | 8 +-
.../aws_key_management_plugin.cc | 31 +-
.../cracklib_password_check.c | 2 +-
plugin/daemon_example/CMakeLists.txt | 2 +-
plugin/daemon_example/daemon_example.cc | 2 +-
.../debug_key_management_plugin.cc | 2 +-
plugin/disks/information_schema_disks.cc | 12 +-
.../mysql-test/disks/disks_notembedded.result | 22 +
.../disks/mysql-test/disks/disks_notembedded.test | 25 +
.../example_key_management_plugin.cc | 2 +-
plugin/feedback/feedback.cc | 2 +-
plugin/feedback/feedback.h | 2 +-
plugin/feedback/sender_thread.cc | 2 +-
plugin/feedback/url_base.cc | 2 +-
plugin/feedback/url_http.cc | 2 +-
plugin/feedback/utils.cc | 2 +-
.../file_key_management_plugin.cc | 2 +-
plugin/file_key_management/parser.cc | 2 +-
plugin/file_key_management/parser.h | 2 +-
plugin/fulltext/CMakeLists.txt | 2 +-
plugin/fulltext/plugin_example.c | 2 +-
plugin/metadata_lock_info/metadata_lock_info.cc | 2 +-
plugin/query_response_time/plugin.cc | 2 +-
plugin/semisync/CMakeLists.txt | 2 +-
plugin/semisync/semisync.cc | 2 +-
plugin/semisync/semisync.h | 2 +-
plugin/semisync/semisync_master.cc | 2 +-
plugin/semisync/semisync_master.h | 2 +-
plugin/semisync/semisync_master_plugin.cc | 2 +-
plugin/semisync/semisync_slave.cc | 2 +-
plugin/semisync/semisync_slave.h | 2 +-
plugin/semisync/semisync_slave_plugin.cc | 2 +-
plugin/server_audit/CMakeLists.txt | 2 +-
plugin/server_audit/COPYING | 4 +-
plugin/server_audit/plugin_audit_v4.h | 2 +-
plugin/server_audit/server_audit.c | 265 +-
.../simple_password_check/simple_password_check.c | 2 +-
plugin/sql_errlog/CMakeLists.txt | 2 +-
plugin/sql_errlog/sql_errlog.c | 2 +-
.../mysql-test/user_variables/basic.result | 2 +-
plugin/user_variables/user_variables.cc | 4 +-
plugin/win_auth_client/CMakeLists.txt | 2 +-
plugin/win_auth_client/common.cc | 6 +-
plugin/win_auth_client/common.h | 2 +-
plugin/win_auth_client/handshake.cc | 2 +-
plugin/win_auth_client/handshake.h | 2 +-
plugin/win_auth_client/handshake_client.cc | 2 +-
plugin/win_auth_client/log_client.cc | 2 +-
plugin/win_auth_client/plugin_client.cc | 2 +-
plugin/wsrep_info/mysql-test/wsrep_info/my.cnf | 3 +-
plugin/wsrep_info/mysql-test/wsrep_info/suite.pm | 23 +-
plugin/wsrep_info/plugin.cc | 2 +-
scripts/CMakeLists.txt | 24 +-
scripts/comp_sql.c | 2 +-
scripts/fill_help_tables.sql | 2 +-
scripts/galera_new_cluster.sh | 3 -
scripts/galera_recovery.sh | 5 +-
scripts/make_win_bin_dist | 2 +-
scripts/maria_add_gis_sp.sql.in | 6 +-
scripts/mariadb-service-convert | 2 +-
scripts/msql2mysql.sh | 2 +-
scripts/mysql_config.pl.in | 2 +-
scripts/mysql_config.sh | 2 +-
scripts/mysql_convert_table_format.sh | 2 +-
scripts/mysql_find_rows.sh | 2 +-
scripts/mysql_fix_extensions.sh | 2 +-
scripts/mysql_install_db.pl.in | 4 +-
scripts/mysql_install_db.sh | 78 +-
scripts/mysql_secure_installation.pl.in | 2 +-
scripts/mysql_secure_installation.sh | 2 +-
scripts/mysql_setpermission.sh | 2 +-
scripts/mysql_system_tables.sql | 10 +-
scripts/mysql_system_tables_data.sql | 7 +-
scripts/mysql_system_tables_fix.sql | 67 +-
scripts/mysql_test_data_timezone.sql | 2 +-
scripts/mysql_test_db.sql | 16 +
scripts/mysqlaccess.sh | 4 +-
scripts/mysqld_multi.sh | 38 +-
scripts/mysqld_safe.sh | 17 +-
scripts/mysqldumpslow.sh | 11 +-
scripts/mysqlhotcopy.sh | 2 +-
scripts/mytop.sh | 19 +-
scripts/wsrep_sst_common.sh | 136 +-
scripts/wsrep_sst_mariabackup.sh | 272 +-
scripts/wsrep_sst_mysqldump.sh | 15 +-
scripts/wsrep_sst_rsync.sh | 173 +-
scripts/wsrep_sst_xtrabackup-v2.sh | 95 +-
scripts/wsrep_sst_xtrabackup.sh | 17 +-
sql-bench/CMakeLists.txt | 2 +-
sql-bench/as3ap.sh | 2 +-
sql-bench/bench-count-distinct.sh | 2 +-
sql-bench/bench-init.pl.sh | 2 +-
sql-bench/compare-results.sh | 2 +-
sql-bench/copy-db.sh | 2 +-
sql-bench/crash-me.sh | 2 +-
sql-bench/run-all-tests.sh | 2 +-
sql-bench/server-cfg.sh | 2 +-
sql-bench/test-ATIS.sh | 2 +-
sql-bench/test-alter-table.sh | 2 +-
sql-bench/test-big-tables.sh | 2 +-
sql-bench/test-connect.sh | 2 +-
sql-bench/test-create.sh | 2 +-
sql-bench/test-insert.sh | 2 +-
sql-bench/test-select.sh | 2 +-
sql-bench/test-transactions.sh | 2 +-
sql-bench/test-wisconsin.sh | 2 +-
sql-common/client.c | 333 +-
sql-common/client_plugin.c | 12 +-
sql-common/conf_to_src.c | 2 +-
sql-common/errmsg.c | 2 +-
sql-common/my_time.c | 4 +-
sql-common/my_user.c | 2 +-
sql-common/pack.c | 2 +-
sql/CMakeLists.txt | 65 +-
sql/authors.h | 2 +-
sql/bounded_queue.h | 2 +-
sql/client_settings.h | 2 +-
sql/compat56.cc | 5 +-
sql/compat56.h | 2 +-
sql/contributors.h | 6 +-
sql/create_options.cc | 2 +-
sql/create_options.h | 2 +-
sql/custom_conf.h | 2 +-
sql/datadict.cc | 2 +-
sql/datadict.h | 2 +-
sql/debug_sync.cc | 8 +-
sql/debug_sync.h | 2 +-
sql/derror.cc | 77 +-
sql/derror.h | 2 +-
sql/des_key_file.cc | 2 +-
sql/des_key_file.h | 2 +-
sql/discover.cc | 2 +-
sql/discover.h | 2 +-
sql/encryption.cc | 17 +-
sql/event_data_objects.cc | 2 +-
sql/event_data_objects.h | 2 +-
sql/event_db_repository.cc | 2 +-
sql/event_db_repository.h | 2 +-
sql/event_parse_data.cc | 2 +-
sql/event_parse_data.h | 2 +-
sql/event_queue.cc | 2 +-
sql/event_queue.h | 2 +-
sql/event_scheduler.cc | 2 +-
sql/event_scheduler.h | 2 +-
sql/events.cc | 68 +-
sql/events.h | 2 +-
sql/field.cc | 436 +-
sql/field.h | 254 +-
sql/field_conv.cc | 4 +-
sql/filesort.cc | 3 +-
sql/filesort.h | 2 +-
sql/filesort_utils.cc | 2 +-
sql/filesort_utils.h | 2 +-
sql/gcalc_slicescan.cc | 15 +-
sql/gcalc_slicescan.h | 9 +-
sql/gcalc_tools.cc | 13 +-
sql/gcalc_tools.h | 3 +-
sql/gen_lex_hash.cc | 2 +-
sql/gen_lex_token.cc | 2 +-
sql/gen_win_tzname_data.ps1 | 11 +
sql/group_by_handler.cc | 2 +-
sql/group_by_handler.h | 2 +-
sql/gstream.cc | 2 +-
sql/gstream.h | 2 +-
sql/ha_partition.cc | 231 +-
sql/ha_partition.h | 17 +-
sql/handler.cc | 183 +-
sql/handler.h | 54 +-
sql/hash_filo.cc | 2 +-
sql/hash_filo.h | 2 +-
sql/hostname.cc | 2 +-
sql/hostname.h | 2 +-
sql/init.cc | 2 +-
sql/init.h | 2 +-
sql/innodb_priv.h | 2 +-
sql/item.cc | 563 +-
sql/item.h | 305 +-
sql/item_buff.cc | 2 +-
sql/item_cmpfunc.cc | 555 +-
sql/item_cmpfunc.h | 104 +-
sql/item_create.cc | 43 +-
sql/item_create.h | 2 +-
sql/item_func.cc | 188 +-
sql/item_func.h | 205 +-
sql/item_geofunc.cc | 11 +-
sql/item_geofunc.h | 74 +-
sql/item_inetfunc.cc | 2 +-
sql/item_inetfunc.h | 14 +-
sql/item_jsonfunc.cc | 522 +-
sql/item_jsonfunc.h | 54 +-
sql/item_row.cc | 3 +-
sql/item_row.h | 2 +-
sql/item_strfunc.cc | 384 +-
sql/item_strfunc.h | 186 +-
sql/item_subselect.cc | 102 +-
sql/item_subselect.h | 26 +-
sql/item_sum.cc | 164 +-
sql/item_sum.h | 41 +-
sql/item_timefunc.cc | 123 +-
sql/item_timefunc.h | 156 +-
sql/item_windowfunc.cc | 12 +-
sql/item_windowfunc.h | 23 +-
sql/item_xmlfunc.cc | 19 +-
sql/item_xmlfunc.h | 7 +-
sql/key.cc | 5 +-
sql/key.h | 2 +-
sql/keycaches.cc | 15 +-
sql/keycaches.h | 7 +-
sql/lex.h | 2 +-
sql/lex_symbol.h | 2 +-
sql/lock.cc | 18 +-
sql/lock.h | 3 +-
sql/log.cc | 100 +-
sql/log.h | 2 +-
sql/log_event.cc | 513 +-
sql/log_event.h | 31 +-
sql/log_event_old.cc | 45 +-
sql/log_event_old.h | 2 +-
sql/log_slow.h | 3 +-
sql/main.cc | 2 +-
sql/mdl.cc | 2 +-
sql/mdl.h | 12 +-
sql/mem_root_array.h | 2 +-
sql/message.h | 2 +-
sql/mf_iocache.cc | 2 +-
sql/mf_iocache_encr.cc | 6 +-
sql/multi_range_read.cc | 15 +-
sql/multi_range_read.h | 2 +-
sql/my_apc.cc | 2 +-
sql/my_apc.h | 2 +-
sql/my_decimal.cc | 2 +-
sql/my_decimal.h | 2 +-
sql/my_json_writer.cc | 9 +-
sql/my_json_writer.h | 3 +-
sql/mysql_install_db.cc | 76 +-
sql/mysql_upgrade_service.cc | 25 +-
sql/mysqld.cc | 188 +-
sql/mysqld.h | 19 +-
sql/mysqld_suffix.h | 2 +-
sql/net_serv.cc | 2 +-
sql/opt_index_cond_pushdown.cc | 2 +-
sql/opt_range.cc | 151 +-
sql/opt_range.h | 7 +-
sql/opt_range_mrr.cc | 56 +-
sql/opt_subselect.cc | 212 +-
sql/opt_subselect.h | 28 +-
sql/opt_sum.cc | 2 +-
sql/opt_table_elimination.cc | 2 +-
sql/parse_file.cc | 2 +-
sql/parse_file.h | 2 +-
sql/partition_element.h | 2 +-
sql/partition_info.cc | 36 +-
sql/partition_info.h | 3 +-
sql/password.c | 2 +-
sql/plistsort.c | 2 +-
sql/procedure.cc | 2 +-
sql/procedure.h | 2 +-
sql/protocol.cc | 21 +-
sql/protocol.h | 69 +-
sql/records.cc | 5 +-
sql/records.h | 2 +-
sql/repl_failsafe.cc | 2 +-
sql/repl_failsafe.h | 2 +-
sql/replication.h | 2 +-
sql/rpl_constants.h | 2 +-
sql/rpl_filter.cc | 2 +-
sql/rpl_filter.h | 2 +-
sql/rpl_gtid.cc | 80 +-
sql/rpl_gtid.h | 4 +-
sql/rpl_handler.cc | 2 +-
sql/rpl_handler.h | 2 +-
sql/rpl_injector.cc | 2 +-
sql/rpl_injector.h | 2 +-
sql/rpl_mi.cc | 13 +-
sql/rpl_mi.h | 2 +-
sql/rpl_parallel.cc | 48 +-
sql/rpl_record.cc | 11 +-
sql/rpl_record.h | 2 +-
sql/rpl_record_old.cc | 2 +-
sql/rpl_record_old.h | 2 +-
sql/rpl_reporting.cc | 2 +-
sql/rpl_reporting.h | 2 +-
sql/rpl_rli.cc | 81 +-
sql/rpl_rli.h | 13 +-
sql/rpl_tblmap.cc | 22 +-
sql/rpl_tblmap.h | 12 +-
sql/rpl_utility.cc | 83 +-
sql/rpl_utility.h | 2 +-
sql/scheduler.cc | 2 +-
sql/scheduler.h | 2 +-
sql/set_var.cc | 50 +-
sql/set_var.h | 14 +-
sql/share/CMakeLists.txt | 14 +-
sql/share/charsets/Index.xml | 2 +-
sql/share/charsets/armscii8.xml | 2 +-
sql/share/charsets/ascii.xml | 2 +-
sql/share/charsets/cp1250.xml | 2 +-
sql/share/charsets/cp1251.xml | 2 +-
sql/share/charsets/cp1256.xml | 2 +-
sql/share/charsets/cp1257.xml | 2 +-
sql/share/charsets/cp850.xml | 2 +-
sql/share/charsets/cp852.xml | 2 +-
sql/share/charsets/cp866.xml | 2 +-
sql/share/charsets/dec8.xml | 2 +-
sql/share/charsets/geostd8.xml | 2 +-
sql/share/charsets/greek.xml | 2 +-
sql/share/charsets/hebrew.xml | 2 +-
sql/share/charsets/hp8.xml | 2 +-
sql/share/charsets/keybcs2.xml | 2 +-
sql/share/charsets/koi8r.xml | 2 +-
sql/share/charsets/koi8u.xml | 2 +-
sql/share/charsets/languages.html | 2 +-
sql/share/charsets/latin1.xml | 2 +-
sql/share/charsets/latin2.xml | 2 +-
sql/share/charsets/latin5.xml | 2 +-
sql/share/charsets/latin7.xml | 2 +-
sql/share/charsets/macce.xml | 2 +-
sql/share/charsets/macroman.xml | 2 +-
sql/share/charsets/swe7.xml | 2 +-
sql/share/errmsg-utf8.txt | 43 +-
sql/signal_handler.cc | 48 +-
sql/slave.cc | 83 +-
sql/slave.h | 2 +-
sql/sp.cc | 4 +-
sql/sp.h | 2 +-
sql/sp_cache.cc | 4 +-
sql/sp_cache.h | 2 +-
sql/sp_head.cc | 85 +-
sql/sp_head.h | 19 +-
sql/sp_pcontext.cc | 2 +-
sql/sp_pcontext.h | 2 +-
sql/sp_rcontext.cc | 8 +-
sql/sp_rcontext.h | 2 +-
sql/spatial.cc | 14 +-
sql/spatial.h | 2 +-
sql/sql_acl.cc | 441 +-
sql/sql_acl.h | 4 +-
sql/sql_admin.cc | 56 +-
sql/sql_admin.h | 2 +-
sql/sql_alter.cc | 49 +-
sql/sql_alter.h | 9 +-
sql/sql_analyse.cc | 6 +-
sql/sql_analyse.h | 7 +-
sql/sql_analyze_stmt.cc | 12 +-
sql/sql_analyze_stmt.h | 2 +-
sql/sql_array.h | 12 +-
sql/sql_audit.cc | 18 +-
sql/sql_audit.h | 25 +-
sql/sql_base.cc | 531 +-
sql/sql_base.h | 31 +-
sql/sql_basic_types.h | 2 +-
sql/sql_binlog.cc | 93 +-
sql/sql_binlog.h | 2 +-
sql/sql_bitmap.h | 2 +-
sql/sql_bootstrap.cc | 2 +-
sql/sql_bootstrap.h | 2 +-
sql/sql_builtin.cc.in | 2 +-
sql/sql_cache.cc | 2 +-
sql/sql_cache.h | 2 +-
sql/sql_callback.h | 2 +-
sql/sql_class.cc | 319 +-
sql/sql_class.h | 194 +-
sql/sql_client.cc | 2 +-
sql/sql_cmd.h | 43 +-
sql/sql_connect.cc | 11 +-
sql/sql_connect.h | 2 +-
sql/sql_const.h | 22 +-
sql/sql_crypt.cc | 2 +-
sql/sql_crypt.h | 2 +-
sql/sql_cte.cc | 56 +-
sql/sql_cte.h | 19 +-
sql/sql_cursor.cc | 2 +-
sql/sql_cursor.h | 2 +-
sql/sql_db.cc | 39 +-
sql/sql_db.h | 7 +-
sql/sql_delete.cc | 19 +-
sql/sql_delete.h | 2 +-
sql/sql_derived.cc | 39 +-
sql/sql_derived.h | 3 +-
sql/sql_digest.cc | 2 +-
sql/sql_digest.h | 2 +-
sql/sql_digest_stream.h | 2 +-
sql/sql_do.cc | 2 +-
sql/sql_do.h | 2 +-
sql/sql_error.cc | 2 +-
sql/sql_error.h | 9 +-
sql/sql_explain.cc | 18 +-
sql/sql_explain.h | 3 +-
sql/sql_expression_cache.cc | 2 +-
sql/sql_expression_cache.h | 2 +-
sql/sql_get_diagnostics.cc | 2 +-
sql/sql_get_diagnostics.h | 2 +-
sql/sql_handler.cc | 14 +-
sql/sql_handler.h | 2 +-
sql/sql_help.cc | 2 +-
sql/sql_help.h | 2 +-
sql/sql_hset.h | 2 +-
sql/sql_insert.cc | 198 +-
sql/sql_insert.h | 2 +-
sql/sql_join_cache.cc | 5 +-
sql/sql_join_cache.h | 2 +-
sql/sql_lex.cc | 55 +-
sql/sql_lex.h | 156 +-
sql/sql_lifo_buffer.h | 2 +-
sql/sql_list.cc | 2 +-
sql/sql_list.h | 30 +-
sql/sql_load.cc | 454 +-
sql/sql_load.h | 2 +-
sql/sql_locale.cc | 2 +-
sql/sql_locale.h | 2 +-
sql/sql_manager.cc | 2 +-
sql/sql_manager.h | 2 +-
sql/sql_mode.cc | 34 +
sql/sql_mode.h | 162 +
sql/sql_parse.cc | 1005 +-
sql/sql_parse.h | 3 +-
sql/sql_partition.cc | 90 +-
sql/sql_partition.h | 6 +-
sql/sql_partition_admin.cc | 9 +-
sql/sql_partition_admin.h | 2 +-
sql/sql_plist.h | 9 +-
sql/sql_plugin.cc | 34 +-
sql/sql_plugin.h | 3 +-
sql/sql_plugin_compat.h | 2 +-
sql/sql_plugin_services.ic | 9 +-
sql/sql_prepare.cc | 113 +-
sql/sql_prepare.h | 2 +-
sql/sql_priv.h | 10 +-
sql/sql_profile.cc | 2 +-
sql/sql_profile.h | 2 +-
sql/sql_reload.cc | 15 +-
sql/sql_reload.h | 2 +-
sql/sql_rename.cc | 4 +-
sql/sql_rename.h | 2 +-
sql/sql_repl.cc | 101 +-
sql/sql_repl.h | 2 +-
sql/sql_select.cc | 750 +-
sql/sql_select.h | 25 +-
sql/sql_servers.cc | 2 +-
sql/sql_servers.h | 2 +-
sql/sql_show.cc | 262 +-
sql/sql_show.h | 2 +-
sql/sql_signal.cc | 2 +-
sql/sql_signal.h | 2 +-
sql/sql_sort.h | 2 +-
sql/sql_state.c | 2 +-
sql/sql_statistics.cc | 297 +-
sql/sql_statistics.h | 38 +-
sql/sql_string.cc | 57 +-
sql/sql_string.h | 26 +-
sql/sql_table.cc | 996 +-
sql/sql_table.h | 2 +-
sql/sql_tablespace.cc | 2 +-
sql/sql_tablespace.h | 2 +-
sql/sql_test.cc | 2 +-
sql/sql_test.h | 2 +-
sql/sql_time.cc | 48 +-
sql/sql_time.h | 14 +-
sql/sql_trigger.cc | 34 +-
sql/sql_trigger.h | 4 +-
sql/sql_truncate.cc | 23 +-
sql/sql_truncate.h | 2 +-
sql/sql_type.cc | 2 +-
sql/sql_type.h | 2 +-
sql/sql_type_int.h | 72 +
sql/sql_udf.cc | 2 +-
sql/sql_udf.h | 2 +-
sql/sql_union.cc | 114 +-
sql/sql_union.h | 2 +-
sql/sql_update.cc | 256 +-
sql/sql_update.h | 2 +-
sql/sql_view.cc | 47 +-
sql/sql_view.h | 2 +-
sql/sql_window.cc | 62 +-
sql/sql_window.h | 4 +-
sql/sql_yacc.yy | 304 +-
sql/strfunc.cc | 2 +-
sql/strfunc.h | 2 +-
sql/structs.h | 38 +-
sql/sys_vars.cc | 155 +-
sql/sys_vars.ic | 139 +-
sql/sys_vars_shared.h | 3 +-
sql/table.cc | 453 +-
sql/table.h | 108 +-
sql/table_cache.cc | 19 +-
sql/table_cache.h | 2 +-
sql/temporary_tables.cc | 221 +-
sql/thr_malloc.cc | 2 +-
sql/thr_malloc.h | 2 +-
sql/threadpool.h | 2 +-
sql/threadpool_common.cc | 5 +-
sql/threadpool_generic.cc | 4 +-
sql/threadpool_win.cc | 3 +-
sql/transaction.cc | 2 +-
sql/transaction.h | 2 +-
sql/tzfile.h | 2 +-
sql/tztime.cc | 79 +-
sql/tztime.h | 2 +-
sql/udf_example.c | 2 +-
sql/uniques.cc | 2 +-
sql/uniques.h | 12 +-
sql/unireg.cc | 5 +-
sql/unireg.h | 4 +-
sql/win_tzname_data.h | 136 +
sql/winservice.c | 4 +-
sql/winservice.h | 2 +-
sql/wsrep_applier.cc | 10 +-
sql/wsrep_applier.h | 2 +-
sql/wsrep_binlog.cc | 55 +-
sql/wsrep_binlog.h | 2 +-
sql/wsrep_check_opts.cc | 2 +-
sql/wsrep_dummy.cc | 26 +-
sql/wsrep_hton.cc | 113 +-
sql/wsrep_mysqld.cc | 530 +-
sql/wsrep_mysqld.h | 51 +-
sql/wsrep_mysqld_c.h | 30 +
sql/wsrep_notify.cc | 2 +-
sql/wsrep_priv.h | 4 +-
sql/wsrep_sst.cc | 558 +-
sql/wsrep_sst.h | 4 +-
sql/wsrep_thd.cc | 156 +-
sql/wsrep_thd.h | 4 +-
sql/wsrep_utils.cc | 2 +-
sql/wsrep_utils.h | 5 +-
sql/wsrep_var.cc | 43 +-
sql/wsrep_var.h | 2 +-
sql/wsrep_xid.cc | 41 +-
sql/wsrep_xid.h | 4 +-
storage/archive/CMakeLists.txt | 2 +-
storage/archive/archive_reader.c | 2 +-
storage/archive/archive_test.c | 2 +-
storage/archive/ha_archive.cc | 66 +-
storage/archive/ha_archive.h | 5 +-
storage/blackhole/CMakeLists.txt | 2 +-
storage/blackhole/ha_blackhole.cc | 32 +-
storage/blackhole/ha_blackhole.h | 2 +-
storage/cassandra/ha_cassandra.cc | 2 +-
storage/cassandra/ha_cassandra.h | 2 +-
storage/connect/CMakeLists.txt | 111 +-
storage/connect/array.cpp | 131 +-
storage/connect/block.h | 4 +-
storage/connect/connect.cc | 74 +-
storage/connect/connect.h | 4 +-
storage/connect/csort.cpp | 22 +-
storage/connect/domdoc.cpp | 4 +-
storage/connect/filamdbf.cpp | 4 +-
storage/connect/filamtxt.cpp | 6 +-
storage/connect/filamvct.cpp | 33 +-
storage/connect/global.h | 11 +-
storage/connect/ha_connect.cc | 900 +-
storage/connect/ha_connect.h | 15 +-
storage/connect/inihandl.cpp | 2 +-
storage/connect/javaconn.cpp | 43 +-
storage/connect/javaconn.h | 1 +
storage/connect/jdbconn.cpp | 49 +-
storage/connect/jmgoconn.cpp | 11 +-
storage/connect/jsonudf.cpp | 75 +-
storage/connect/jsonudf.h | 5 +
storage/connect/libdoc.cpp | 2 +-
storage/connect/mini-global.h | 33 +
storage/connect/mycat.cc | 284 +-
storage/connect/mycat.h | 10 +-
storage/connect/myconn.cpp | 12 +-
storage/connect/mysql-test/connect/disabled.def | 2 +
storage/connect/mysql-test/connect/r/dir.result | 2 +-
storage/connect/mysql-test/connect/r/grant.result | 175 +-
storage/connect/mysql-test/connect/r/grant2.result | 258 +-
.../connect/mysql-test/connect/r/ini_grant.result | 26 +-
storage/connect/mysql-test/connect/r/jdbc.result | 15 +-
.../mysql-test/connect/r/jdbc_oracle.result | 18 +-
.../mysql-test/connect/r/jdbc_postgresql.result | 8 +
.../mysql-test/connect/r/json_java_2.result | 1 -
.../mysql-test/connect/r/json_java_3.result | 1 -
.../mysql-test/connect/r/mongo_java_2.result | 1 -
.../mysql-test/connect/r/mongo_java_3.result | 1 -
.../connect/mysql-test/connect/r/mysql_exec.result | 6 +
.../mysql-test/connect/r/mysql_grant.result | 24 +-
.../mysql-test/connect/r/odbc_postgresql.result | 18 +-
.../connect/mysql-test/connect/r/part_table.result | 4 +-
storage/connect/mysql-test/connect/r/xml.result | 2 +-
storage/connect/mysql-test/connect/r/xml2.result | 33 +-
.../connect/mysql-test/connect/r/xml2_grant.result | 30 +-
.../connect/mysql-test/connect/r/xml2_mult.result | 8 +-
.../connect/mysql-test/connect/r/xml_grant.result | 30 +-
.../connect/mysql-test/connect/r/xml_mult.result | 8 +-
storage/connect/mysql-test/connect/t/grant.inc | 30 +-
storage/connect/mysql-test/connect/t/grant.test | 25 +-
storage/connect/mysql-test/connect/t/grant2.test | 260 +-
.../connect/mysql-test/connect/t/ini_grant.result | 89 +
.../connect/mysql-test/connect/t/ini_grant.test | 26 +-
.../connect/mysql-test/connect/t/json_java_2.test | 2 +
.../connect/mysql-test/connect/t/json_java_3.test | 2 +
.../connect/mysql-test/connect/t/mongo_java_2.test | 2 +
.../connect/mysql-test/connect/t/mongo_java_3.test | 2 +
.../connect/mysql-test/connect/t/mysql_grant.test | 24 +-
.../connect/mysql-test/connect/t/part_table.test | 2 +-
storage/connect/mysql-test/connect/t/xml2.test | 36 +-
storage/connect/odbconn.cpp | 12 +-
storage/connect/osutil.h | 4 +
storage/connect/plgdbsem.h | 35 +-
storage/connect/plugutil.cpp | 64 +-
storage/connect/reldef.cpp | 528 +-
storage/connect/reldef.h | 9 +-
storage/connect/rest.def | 4 +
storage/connect/restget.cpp | 90 +
storage/connect/tabcmg.cpp | 23 +-
storage/connect/tabdos.cpp | 65 +-
storage/connect/tabdos.h | 1 -
storage/connect/tabext.cpp | 51 +-
storage/connect/tabext.h | 5 +-
storage/connect/tabfix.cpp | 2 +-
storage/connect/tabfmt.cpp | 20 +-
storage/connect/tabfmt.h | 2 +-
storage/connect/tabjdbc.cpp | 102 +-
storage/connect/tabjmg.cpp | 11 +-
storage/connect/tabjson.cpp | 1921 +-
storage/connect/tabjson.h | 7 +-
storage/connect/tabmysql.cpp | 20 +-
storage/connect/tabodbc.cpp | 336 +-
storage/connect/tabpivot.cpp | 166 +-
storage/connect/tabrest.cpp | 281 +
storage/connect/tabrest.h | 50 +
storage/connect/tabtbl.cpp | 4 +-
storage/connect/tabutil.cpp | 18 +-
storage/connect/tabutil.h | 3 +-
storage/connect/tabvct.cpp | 9 +-
storage/connect/tabxml.cpp | 298 +-
storage/connect/tabxml.h | 6 +-
storage/connect/user_connect.cc | 10 +-
storage/connect/user_connect.h | 2 +-
storage/connect/valblk.cpp | 8 +-
storage/connect/value.cpp | 678 +-
storage/connect/value.h | 16 +-
storage/connect/xindex.cpp | 32 +-
storage/connect/xtable.h | 5 +-
storage/csv/CMakeLists.txt | 2 +-
storage/csv/ha_tina.cc | 4 +-
storage/csv/ha_tina.h | 2 +-
storage/csv/transparent_file.cc | 2 +-
storage/csv/transparent_file.h | 2 +-
storage/example/CMakeLists.txt | 2 +-
storage/example/ha_example.cc | 2 +-
storage/example/ha_example.h | 2 +-
storage/federated/CMakeLists.txt | 2 +-
storage/federated/ha_federated.cc | 4 +-
storage/federated/ha_federated.h | 3 +-
storage/federatedx/ha_federatedx.cc | 2 +-
storage/federatedx/ha_federatedx.h | 1 -
storage/heap/CMakeLists.txt | 2 +-
storage/heap/_check.c | 29 +-
storage/heap/_rectest.c | 2 +-
storage/heap/ha_heap.cc | 6 +-
storage/heap/ha_heap.h | 2 +-
storage/heap/heapdef.h | 2 +-
storage/heap/hp_block.c | 2 +-
storage/heap/hp_clear.c | 2 +-
storage/heap/hp_close.c | 8 +-
storage/heap/hp_create.c | 24 +-
storage/heap/hp_delete.c | 2 +-
storage/heap/hp_extra.c | 2 +-
storage/heap/hp_hash.c | 6 +-
storage/heap/hp_info.c | 2 +-
storage/heap/hp_open.c | 2 +-
storage/heap/hp_panic.c | 2 +-
storage/heap/hp_rename.c | 2 +-
storage/heap/hp_rfirst.c | 2 +-
storage/heap/hp_rkey.c | 2 +-
storage/heap/hp_rlast.c | 2 +-
storage/heap/hp_rnext.c | 2 +-
storage/heap/hp_rprev.c | 2 +-
storage/heap/hp_rrnd.c | 2 +-
storage/heap/hp_rsame.c | 2 +-
storage/heap/hp_scan.c | 6 +-
storage/heap/hp_static.c | 2 +-
storage/heap/hp_test1.c | 2 +-
storage/heap/hp_test2.c | 2 +-
storage/heap/hp_update.c | 2 +-
storage/heap/hp_write.c | 2 +-
storage/innobase/.clang-format | 11 +
storage/innobase/CMakeLists.txt | 17 +-
storage/innobase/btr/btr0btr.cc | 732 +-
storage/innobase/btr/btr0bulk.cc | 300 +-
storage/innobase/btr/btr0cur.cc | 710 +-
storage/innobase/btr/btr0defragment.cc | 93 +-
storage/innobase/btr/btr0pcur.cc | 47 +-
storage/innobase/btr/btr0scrub.cc | 17 +-
storage/innobase/btr/btr0sea.cc | 84 +-
storage/innobase/buf/buf0buddy.cc | 24 +-
storage/innobase/buf/buf0buf.cc | 1303 +-
storage/innobase/buf/buf0checksum.cc | 89 +-
storage/innobase/buf/buf0dblwr.cc | 78 +-
storage/innobase/buf/buf0dump.cc | 12 +-
storage/innobase/buf/buf0flu.cc | 48 +-
storage/innobase/buf/buf0lru.cc | 152 +-
storage/innobase/buf/buf0mtflu.cc | 2 +-
storage/innobase/buf/buf0rea.cc | 82 +-
storage/innobase/bzip2.cmake | 2 +-
storage/innobase/compile-innodb | 2 +-
storage/innobase/data/data0data.cc | 22 +-
storage/innobase/data/data0type.cc | 4 +-
storage/innobase/dict/dict0boot.cc | 43 +-
storage/innobase/dict/dict0crea.cc | 367 +-
storage/innobase/dict/dict0defrag_bg.cc | 71 +-
storage/innobase/dict/dict0dict.cc | 811 +-
storage/innobase/dict/dict0load.cc | 204 +-
storage/innobase/dict/dict0mem.cc | 52 +-
storage/innobase/dict/dict0stats.cc | 211 +-
storage/innobase/dict/dict0stats_bg.cc | 114 +-
storage/innobase/eval/eval0eval.cc | 298 +-
storage/innobase/eval/eval0proc.cc | 2 +-
storage/innobase/fil/fil0crypt.cc | 537 +-
storage/innobase/fil/fil0fil.cc | 1172 +-
storage/innobase/fil/fil0pagecompress.cc | 590 +-
storage/innobase/fsp/fsp0file.cc | 14 +-
storage/innobase/fsp/fsp0fsp.cc | 197 +-
storage/innobase/fsp/fsp0space.cc | 18 +-
storage/innobase/fsp/fsp0sysspace.cc | 19 +-
storage/innobase/fts/Makefile.query | 20 +-
storage/innobase/fts/fts0ast.cc | 13 +-
storage/innobase/fts/fts0blex.cc | 1115 +-
storage/innobase/fts/fts0blex.l | 2 +-
storage/innobase/fts/fts0config.cc | 10 +-
storage/innobase/fts/fts0fts.cc | 376 +-
storage/innobase/fts/fts0opt.cc | 627 +-
storage/innobase/fts/fts0pars.cc | 16 +-
storage/innobase/fts/fts0pars.y | 18 +-
storage/innobase/fts/fts0plugin.cc | 2 +-
storage/innobase/fts/fts0que.cc | 28 +-
storage/innobase/fts/fts0sql.cc | 109 +-
storage/innobase/fts/fts0tlex.cc | 1112 +-
storage/innobase/fts/fts0tlex.l | 2 +-
storage/innobase/fts/make_parser.sh | 2 +-
storage/innobase/fut/fut0lst.cc | 2 +-
storage/innobase/gis/gis0geo.cc | 82 +-
storage/innobase/gis/gis0rtree.cc | 148 +-
storage/innobase/gis/gis0sea.cc | 60 +-
storage/innobase/ha/ha0ha.cc | 2 +-
storage/innobase/ha/ha0storage.cc | 3 +-
storage/innobase/ha/hash0hash.cc | 2 +-
storage/innobase/handler/ha_innodb.cc | 3119 +-
storage/innobase/handler/ha_innodb.h | 161 +-
storage/innobase/handler/ha_xtradb.h | 2 +-
storage/innobase/handler/handler0alter.cc | 1204 +-
storage/innobase/handler/i_s.cc | 421 +-
storage/innobase/handler/i_s.h | 8 +-
storage/innobase/ibuf/ibuf0ibuf.cc | 331 +-
storage/innobase/include/btr0btr.h | 201 +-
storage/innobase/include/btr0btr.ic | 69 +-
storage/innobase/include/btr0bulk.h | 65 +-
storage/innobase/include/btr0cur.h | 71 +-
storage/innobase/include/btr0cur.ic | 20 +-
storage/innobase/include/btr0defragment.h | 2 +-
storage/innobase/include/btr0pcur.h | 44 +-
storage/innobase/include/btr0pcur.ic | 64 +-
storage/innobase/include/btr0scrub.h | 6 -
storage/innobase/include/btr0sea.h | 21 +-
storage/innobase/include/btr0sea.ic | 2 +-
storage/innobase/include/btr0types.h | 7 +-
storage/innobase/include/buf0buddy.h | 3 +-
storage/innobase/include/buf0buddy.ic | 2 +-
storage/innobase/include/buf0buf.h | 254 +-
storage/innobase/include/buf0buf.ic | 93 +-
storage/innobase/include/buf0checksum.h | 36 +-
storage/innobase/include/buf0dblwr.h | 3 +-
storage/innobase/include/buf0dump.h | 2 +-
storage/innobase/include/buf0flu.h | 20 +-
storage/innobase/include/buf0flu.ic | 2 +-
storage/innobase/include/buf0lru.h | 47 +-
storage/innobase/include/buf0mtflu.h | 2 +-
storage/innobase/include/buf0rea.h | 12 +-
storage/innobase/include/buf0types.h | 79 +-
storage/innobase/include/data0data.h | 185 +-
storage/innobase/include/data0data.ic | 188 +-
storage/innobase/include/data0type.h | 6 +-
storage/innobase/include/data0type.ic | 4 +-
storage/innobase/include/data0types.h | 2 +-
storage/innobase/include/db0err.h | 7 +-
storage/innobase/include/dict0boot.h | 5 +-
storage/innobase/include/dict0boot.ic | 2 +-
storage/innobase/include/dict0crea.h | 34 +-
storage/innobase/include/dict0crea.ic | 26 +-
storage/innobase/include/dict0defrag_bg.h | 24 +-
storage/innobase/include/dict0dict.h | 176 +-
storage/innobase/include/dict0dict.ic | 143 +-
storage/innobase/include/dict0load.h | 20 +-
storage/innobase/include/dict0mem.h | 225 +-
storage/innobase/include/dict0mem.ic | 2 +-
storage/innobase/include/dict0pagecompress.h | 2 +-
storage/innobase/include/dict0pagecompress.ic | 2 +-
storage/innobase/include/dict0priv.h | 4 +-
storage/innobase/include/dict0priv.ic | 4 +-
storage/innobase/include/dict0stats.h | 39 +-
storage/innobase/include/dict0stats.ic | 3 +-
storage/innobase/include/dict0stats_bg.h | 4 +-
storage/innobase/include/dict0types.h | 19 +-
storage/innobase/include/dyn0buf.h | 108 +-
storage/innobase/include/dyn0types.h | 2 +-
storage/innobase/include/eval0eval.h | 3 +-
storage/innobase/include/eval0eval.ic | 2 +-
storage/innobase/include/eval0proc.h | 3 +-
storage/innobase/include/eval0proc.ic | 2 +-
storage/innobase/include/fil0crypt.h | 23 +-
storage/innobase/include/fil0crypt.ic | 2 +-
storage/innobase/include/fil0fil.h | 304 +-
storage/innobase/include/fil0fil.ic | 4 +-
storage/innobase/include/fil0pagecompress.h | 60 +-
storage/innobase/include/fsp0file.h | 26 +-
storage/innobase/include/fsp0fsp.h | 83 +-
storage/innobase/include/fsp0fsp.ic | 4 +-
storage/innobase/include/fsp0pagecompress.h | 2 +-
storage/innobase/include/fsp0pagecompress.ic | 72 +-
storage/innobase/include/fsp0space.h | 4 +-
storage/innobase/include/fsp0sysspace.h | 3 +-
storage/innobase/include/fsp0types.h | 14 +-
storage/innobase/include/fts0ast.h | 8 +-
storage/innobase/include/fts0blex.h | 465 +-
storage/innobase/include/fts0fts.h | 113 +-
storage/innobase/include/fts0opt.h | 5 +-
storage/innobase/include/fts0plugin.h | 4 +-
storage/innobase/include/fts0priv.h | 157 +-
storage/innobase/include/fts0priv.ic | 2 +-
storage/innobase/include/fts0tlex.h | 465 +-
storage/innobase/include/fts0tokenize.h | 2 +-
storage/innobase/include/fts0types.h | 12 +-
storage/innobase/include/fts0types.ic | 31 +-
storage/innobase/include/fts0vlc.ic | 2 +-
storage/innobase/include/fut0fut.h | 4 +-
storage/innobase/include/fut0fut.ic | 2 +-
storage/innobase/include/fut0lst.h | 4 +-
storage/innobase/include/fut0lst.ic | 2 +-
storage/innobase/include/gis0geo.h | 18 +-
storage/innobase/include/gis0rtree.h | 42 +-
storage/innobase/include/gis0rtree.ic | 4 +-
storage/innobase/include/gis0type.h | 13 +-
storage/innobase/include/ha0ha.h | 4 +-
storage/innobase/include/ha0ha.ic | 10 +-
storage/innobase/include/ha0storage.h | 2 +-
storage/innobase/include/ha0storage.ic | 4 +-
storage/innobase/include/ha_prototypes.h | 14 +-
storage/innobase/include/handler0alter.h | 17 +-
storage/innobase/include/hash0hash.h | 3 +-
storage/innobase/include/hash0hash.ic | 2 +-
storage/innobase/include/ib0mutex.h | 8 +-
storage/innobase/include/ibuf0ibuf.h | 31 +-
storage/innobase/include/ibuf0ibuf.ic | 4 +-
storage/innobase/include/ibuf0types.h | 2 +-
storage/innobase/include/lock0iter.h | 3 +-
storage/innobase/include/lock0lock.h | 105 +-
storage/innobase/include/lock0lock.ic | 2 +-
storage/innobase/include/lock0prdt.h | 3 +-
storage/innobase/include/lock0priv.h | 145 +-
storage/innobase/include/lock0priv.ic | 16 +-
storage/innobase/include/lock0types.h | 199 +-
storage/innobase/include/log0crypt.h | 10 +-
storage/innobase/include/log0log.h | 73 +-
storage/innobase/include/log0log.ic | 6 +-
storage/innobase/include/log0recv.h | 109 +-
storage/innobase/include/log0types.h | 2 +-
storage/innobase/include/mach0data.h | 5 +-
storage/innobase/include/mach0data.ic | 2 +-
storage/innobase/include/mem0mem.h | 204 +-
storage/innobase/include/mem0mem.ic | 109 +-
storage/innobase/include/mtr0log.h | 3 +-
storage/innobase/include/mtr0log.ic | 2 +-
storage/innobase/include/mtr0mtr.h | 287 +-
storage/innobase/include/mtr0mtr.ic | 73 +-
storage/innobase/include/mtr0types.h | 25 +-
storage/innobase/include/os0api.h | 2 +-
storage/innobase/include/os0event.h | 2 +-
storage/innobase/include/os0file.h | 11 +-
storage/innobase/include/os0file.ic | 24 +-
storage/innobase/include/os0once.h | 3 +-
storage/innobase/include/os0proc.h | 10 +-
storage/innobase/include/os0thread.h | 2 +-
storage/innobase/include/page0cur.h | 35 +-
storage/innobase/include/page0cur.ic | 6 +-
storage/innobase/include/page0page.h | 112 +-
storage/innobase/include/page0page.ic | 137 +-
storage/innobase/include/page0size.h | 3 +-
storage/innobase/include/page0types.h | 7 +-
storage/innobase/include/page0zip.h | 43 +-
storage/innobase/include/page0zip.ic | 5 +-
storage/innobase/include/pars0grm.h | 158 +-
storage/innobase/include/pars0opt.h | 4 +-
storage/innobase/include/pars0pars.h | 44 +-
storage/innobase/include/pars0sym.h | 8 +-
storage/innobase/include/pars0types.h | 2 +-
storage/innobase/include/que0que.h | 42 +-
storage/innobase/include/que0que.ic | 2 +-
storage/innobase/include/que0types.h | 43 +-
storage/innobase/include/read0read.h | 11 +-
storage/innobase/include/read0types.h | 5 +-
storage/innobase/include/rem0cmp.h | 76 +-
storage/innobase/include/rem0cmp.ic | 42 +-
storage/innobase/include/rem0rec.h | 142 +-
storage/innobase/include/rem0rec.ic | 137 +-
storage/innobase/include/rem0types.h | 6 +-
storage/innobase/include/row0ext.h | 5 +-
storage/innobase/include/row0ext.ic | 2 +-
storage/innobase/include/row0ftsort.h | 22 +-
storage/innobase/include/row0import.h | 24 +-
storage/innobase/include/row0ins.h | 40 +-
storage/innobase/include/row0log.h | 14 +-
storage/innobase/include/row0log.ic | 2 +-
storage/innobase/include/row0merge.h | 21 +-
storage/innobase/include/row0mysql.h | 166 +-
storage/innobase/include/row0purge.h | 129 +-
storage/innobase/include/row0quiesce.h | 3 +-
storage/innobase/include/row0row.h | 31 +-
storage/innobase/include/row0row.ic | 10 +-
storage/innobase/include/row0sel.h | 14 +-
storage/innobase/include/row0sel.ic | 2 +-
storage/innobase/include/row0trunc.h | 13 +-
storage/innobase/include/row0types.h | 97 +-
storage/innobase/include/row0uins.h | 4 +-
storage/innobase/include/row0umod.h | 4 +-
storage/innobase/include/row0undo.h | 6 +-
storage/innobase/include/row0upd.h | 25 +-
storage/innobase/include/row0upd.ic | 4 +-
storage/innobase/include/row0vers.h | 57 +-
storage/innobase/include/span.h | 145 +
storage/innobase/include/srv0conc.h | 2 +-
storage/innobase/include/srv0mon.h | 14 +-
storage/innobase/include/srv0mon.ic | 2 +-
storage/innobase/include/srv0srv.h | 81 +-
storage/innobase/include/srv0start.h | 3 +-
storage/innobase/include/sync0arr.h | 3 +-
storage/innobase/include/sync0arr.ic | 2 +-
storage/innobase/include/sync0debug.h | 3 +-
storage/innobase/include/sync0policy.h | 4 +-
storage/innobase/include/sync0policy.ic | 2 +-
storage/innobase/include/sync0rw.h | 26 +-
storage/innobase/include/sync0rw.ic | 5 +-
storage/innobase/include/sync0sync.h | 3 +-
storage/innobase/include/sync0types.h | 4 +-
storage/innobase/include/trx0i_s.h | 9 +-
storage/innobase/include/trx0purge.h | 54 +-
storage/innobase/include/trx0purge.ic | 2 +-
storage/innobase/include/trx0rec.h | 22 +-
storage/innobase/include/trx0rec.ic | 7 +-
storage/innobase/include/trx0roll.h | 10 +-
storage/innobase/include/trx0roll.ic | 2 +-
storage/innobase/include/trx0rseg.h | 11 +-
storage/innobase/include/trx0rseg.ic | 2 +-
storage/innobase/include/trx0sys.h | 62 +-
storage/innobase/include/trx0sys.ic | 96 +-
storage/innobase/include/trx0trx.h | 215 +-
storage/innobase/include/trx0trx.ic | 52 +-
storage/innobase/include/trx0types.h | 13 +-
storage/innobase/include/trx0undo.h | 25 +-
storage/innobase/include/trx0undo.ic | 6 +-
storage/innobase/include/trx0xa.h | 2 +-
storage/innobase/include/univ.i | 25 +-
storage/innobase/include/ut0byte.h | 2 +-
storage/innobase/include/ut0byte.ic | 2 +-
storage/innobase/include/ut0counter.h | 53 +-
storage/innobase/include/ut0crc32.h | 10 +-
storage/innobase/include/ut0dbg.h | 10 +-
storage/innobase/include/ut0list.h | 2 +-
storage/innobase/include/ut0list.ic | 2 +-
storage/innobase/include/ut0lst.h | 132 +-
storage/innobase/include/ut0mem.h | 27 +-
storage/innobase/include/ut0mem.ic | 2 +-
storage/innobase/include/ut0mutex.h | 6 +-
storage/innobase/include/ut0new.h | 7 +-
storage/innobase/include/ut0pool.h | 22 +-
storage/innobase/include/ut0rbt.h | 3 +-
storage/innobase/include/ut0rnd.h | 86 +-
storage/innobase/include/ut0rnd.ic | 96 +-
storage/innobase/include/ut0sort.h | 4 +-
storage/innobase/include/ut0stage.h | 4 +-
storage/innobase/include/ut0timer.h | 102 -
storage/innobase/include/ut0timer.ic | 113 -
storage/innobase/include/ut0ut.h | 83 +-
storage/innobase/include/ut0ut.ic | 2 +-
storage/innobase/include/ut0vec.h | 3 +-
storage/innobase/include/ut0vec.ic | 4 +-
storage/innobase/include/ut0wqueue.h | 46 +-
storage/innobase/innodb.cmake | 23 +-
storage/innobase/lock/lock0iter.cc | 3 +-
storage/innobase/lock/lock0lock.cc | 982 +-
storage/innobase/lock/lock0prdt.cc | 11 +-
storage/innobase/lock/lock0wait.cc | 68 +-
storage/innobase/log/log0crypt.cc | 96 +-
storage/innobase/log/log0log.cc | 281 +-
storage/innobase/log/log0recv.cc | 1349 +-
storage/innobase/lz4.cmake | 2 +-
storage/innobase/lzma.cmake | 2 +-
storage/innobase/lzo.cmake | 2 +-
storage/innobase/mach/mach0data.cc | 2 +-
storage/innobase/mem/mem0mem.cc | 30 +-
storage/innobase/mtr/mtr0log.cc | 8 +-
storage/innobase/mtr/mtr0mtr.cc | 745 +-
storage/innobase/os/os0event.cc | 56 +-
storage/innobase/os/os0file.cc | 408 +-
storage/innobase/os/os0proc.cc | 54 +-
storage/innobase/os/os0thread.cc | 21 +-
storage/innobase/page/page0cur.cc | 148 +-
storage/innobase/page/page0page.cc | 187 +-
storage/innobase/page/page0zip.cc | 350 +-
storage/innobase/pars/lexyy.cc | 1525 +-
storage/innobase/pars/make_bison.sh | 2 +-
storage/innobase/pars/make_flex.sh | 9 +-
storage/innobase/pars/pars0grm.cc | 2116 +-
storage/innobase/pars/pars0grm.y | 120 +-
storage/innobase/pars/pars0lex.l | 91 +-
storage/innobase/pars/pars0opt.cc | 3 +-
storage/innobase/pars/pars0pars.cc | 165 +-
storage/innobase/pars/pars0sym.cc | 2 +-
storage/innobase/que/que0que.cc | 13 +-
storage/innobase/read/read0read.cc | 23 +-
storage/innobase/rem/rem0cmp.cc | 127 +-
storage/innobase/rem/rem0rec.cc | 157 +-
storage/innobase/row/row0ext.cc | 2 +-
storage/innobase/row/row0ftsort.cc | 89 +-
storage/innobase/row/row0import.cc | 522 +-
storage/innobase/row/row0ins.cc | 470 +-
storage/innobase/row/row0log.cc | 253 +-
storage/innobase/row/row0merge.cc | 430 +-
storage/innobase/row/row0mysql.cc | 768 +-
storage/innobase/row/row0purge.cc | 354 +-
storage/innobase/row/row0quiesce.cc | 5 +-
storage/innobase/row/row0row.cc | 71 +-
storage/innobase/row/row0sel.cc | 360 +-
storage/innobase/row/row0trunc.cc | 160 +-
storage/innobase/row/row0uins.cc | 95 +-
storage/innobase/row/row0umod.cc | 51 +-
storage/innobase/row/row0undo.cc | 11 +-
storage/innobase/row/row0upd.cc | 153 +-
storage/innobase/row/row0vers.cc | 279 +-
storage/innobase/snappy.cmake | 2 +-
storage/innobase/srv/srv0conc.cc | 6 +-
storage/innobase/srv/srv0mon.cc | 32 +-
storage/innobase/srv/srv0srv.cc | 238 +-
storage/innobase/srv/srv0start.cc | 402 +-
storage/innobase/sync/sync0arr.cc | 18 +-
storage/innobase/sync/sync0debug.cc | 7 +-
storage/innobase/sync/sync0rw.cc | 173 +-
storage/innobase/sync/sync0sync.cc | 3 +-
storage/innobase/trx/trx0i_s.cc | 110 +-
storage/innobase/trx/trx0purge.cc | 296 +-
storage/innobase/trx/trx0rec.cc | 197 +-
storage/innobase/trx/trx0roll.cc | 43 +-
storage/innobase/trx/trx0rseg.cc | 56 +-
storage/innobase/trx/trx0sys.cc | 65 +-
storage/innobase/trx/trx0trx.cc | 380 +-
storage/innobase/trx/trx0undo.cc | 130 +-
storage/innobase/ut/ut0crc32.cc | 86 +-
storage/innobase/ut/ut0dbg.cc | 7 +-
storage/innobase/ut/ut0list.cc | 2 +-
storage/innobase/ut/ut0mem.cc | 52 +-
storage/innobase/ut/ut0new.cc | 7 +-
storage/innobase/ut/ut0rbt.cc | 7 +-
storage/innobase/ut/ut0rnd.cc | 9 +-
storage/innobase/ut/ut0timer.cc | 92 -
storage/innobase/ut/ut0ut.cc | 155 +-
storage/innobase/ut/ut0vec.cc | 2 +-
storage/innobase/ut/ut0wqueue.cc | 54 +-
storage/maria/CMakeLists.txt | 2 +-
storage/maria/ft_maria.c | 2 +-
storage/maria/ha_maria.cc | 182 +-
storage/maria/ha_maria.h | 3 +-
storage/maria/lockman.c | 2 +-
storage/maria/lockman.h | 2 +-
storage/maria/ma_bitmap.c | 2 +-
storage/maria/ma_blockrec.c | 31 +-
storage/maria/ma_blockrec.h | 2 +-
storage/maria/ma_cache.c | 2 +-
storage/maria/ma_changed.c | 2 +-
storage/maria/ma_check.c | 11 +-
storage/maria/ma_check_standalone.h | 2 +-
storage/maria/ma_checkpoint.c | 4 +-
storage/maria/ma_checkpoint.h | 2 +-
storage/maria/ma_checksum.c | 2 +-
storage/maria/ma_close.c | 26 +-
storage/maria/ma_commit.c | 19 +-
storage/maria/ma_commit.h | 2 +-
storage/maria/ma_control_file.c | 4 +-
storage/maria/ma_control_file.h | 2 +-
storage/maria/ma_create.c | 2 +-
storage/maria/ma_crypt.c | 2 +-
storage/maria/ma_crypt.h | 2 +-
storage/maria/ma_dbug.c | 2 +-
storage/maria/ma_delete.c | 4 +-
storage/maria/ma_delete_all.c | 9 +-
storage/maria/ma_delete_table.c | 2 +-
storage/maria/ma_dynrec.c | 2 +-
storage/maria/ma_extra.c | 9 +-
storage/maria/ma_ft_boolean_search.c | 4 +-
storage/maria/ma_ft_eval.c | 2 +-
storage/maria/ma_ft_eval.h | 2 +-
storage/maria/ma_ft_nlq_search.c | 4 +-
storage/maria/ma_ft_parser.c | 2 +-
storage/maria/ma_ft_stem.c | 2 +-
storage/maria/ma_ft_test1.c | 2 +-
storage/maria/ma_ft_test1.h | 2 +-
storage/maria/ma_ft_update.c | 2 +-
storage/maria/ma_ftdefs.h | 2 +-
storage/maria/ma_fulltext.h | 2 +-
storage/maria/ma_info.c | 8 +-
storage/maria/ma_init.c | 2 +-
storage/maria/ma_key.c | 6 +-
storage/maria/ma_key_recover.c | 4 +-
storage/maria/ma_key_recover.h | 2 +-
storage/maria/ma_keycache.c | 2 +-
storage/maria/ma_locking.c | 2 +-
storage/maria/ma_loghandler.c | 244 +-
storage/maria/ma_loghandler.h | 2 +-
storage/maria/ma_loghandler_lsn.h | 2 +-
storage/maria/ma_norec.c | 6 +-
storage/maria/ma_open.c | 33 +-
storage/maria/ma_packrec.c | 11 +-
storage/maria/ma_page.c | 2 +-
storage/maria/ma_pagecache.c | 5 +-
storage/maria/ma_pagecache.h | 2 +-
storage/maria/ma_pagecaches.c | 2 +-
storage/maria/ma_pagecrc.c | 2 +-
storage/maria/ma_panic.c | 2 +-
storage/maria/ma_preload.c | 2 +-
storage/maria/ma_range.c | 2 +-
storage/maria/ma_recovery.c | 72 +-
storage/maria/ma_recovery.h | 2 +-
storage/maria/ma_recovery_util.c | 14 +-
storage/maria/ma_recovery_util.h | 2 +-
storage/maria/ma_rename.c | 2 +-
storage/maria/ma_rfirst.c | 2 +-
storage/maria/ma_rkey.c | 2 +-
storage/maria/ma_rlast.c | 2 +-
storage/maria/ma_rnext.c | 2 +-
storage/maria/ma_rnext_same.c | 2 +-
storage/maria/ma_rprev.c | 2 +-
storage/maria/ma_rrnd.c | 2 +-
storage/maria/ma_rsame.c | 2 +-
storage/maria/ma_rsamepos.c | 2 +-
storage/maria/ma_rt_index.c | 2 +-
storage/maria/ma_rt_index.h | 2 +-
storage/maria/ma_rt_key.c | 2 +-
storage/maria/ma_rt_key.h | 2 +-
storage/maria/ma_rt_mbr.c | 2 +-
storage/maria/ma_rt_mbr.h | 2 +-
storage/maria/ma_rt_split.c | 2 +-
storage/maria/ma_rt_test.c | 2 +-
storage/maria/ma_scan.c | 2 +-
storage/maria/ma_search.c | 2 +-
storage/maria/ma_servicethread.c | 2 +-
storage/maria/ma_servicethread.h | 2 +-
storage/maria/ma_sort.c | 2 +-
storage/maria/ma_sp_defs.h | 2 +-
storage/maria/ma_sp_key.c | 4 +-
storage/maria/ma_sp_test.c | 2 +-
storage/maria/ma_state.c | 58 +-
storage/maria/ma_state.h | 4 +-
storage/maria/ma_static.c | 2 +-
storage/maria/ma_statrec.c | 2 +-
storage/maria/ma_test1.c | 2 +-
storage/maria/ma_test2.c | 2 +-
storage/maria/ma_test3.c | 4 +-
storage/maria/ma_trnman.h | 65 +
storage/maria/ma_unique.c | 2 +-
storage/maria/ma_update.c | 2 +-
storage/maria/ma_write.c | 37 +-
storage/maria/maria_chk.c | 14 +-
storage/maria/maria_def.h | 31 +-
storage/maria/maria_dump_log.c | 2 +-
storage/maria/maria_ftdump.c | 2 +-
storage/maria/maria_pack.c | 18 +-
storage/maria/maria_read_log.c | 2 +-
storage/maria/tablockman.c | 2 +-
storage/maria/tablockman.h | 2 +-
storage/maria/trnman.c | 3 +-
storage/maria/trnman.h | 5 +-
storage/maria/trnman_public.h | 2 +-
storage/maria/unittest/CMakeLists.txt | 2 +-
storage/maria/unittest/lockman-t.c | 2 +-
storage/maria/unittest/lockman1-t.c | 2 +-
storage/maria/unittest/lockman2-t.c | 2 +-
storage/maria/unittest/ma_control_file-t.c | 2 +-
storage/maria/unittest/ma_loghandler_examples.c | 2 +-
storage/maria/unittest/ma_maria_log_cleanup.c | 2 +-
storage/maria/unittest/ma_pagecache_consist.c | 2 +-
storage/maria/unittest/ma_pagecache_rwconsist.c | 2 +-
storage/maria/unittest/ma_pagecache_rwconsist2.c | 2 +-
storage/maria/unittest/ma_pagecache_single.c | 2 +-
storage/maria/unittest/ma_test_loghandler-t.c | 2 +-
.../unittest/ma_test_loghandler_first_lsn-t.c | 2 +-
.../maria/unittest/ma_test_loghandler_max_lsn-t.c | 2 +-
.../unittest/ma_test_loghandler_multigroup-t.c | 2 +-
.../unittest/ma_test_loghandler_multithread-t.c | 2 +-
.../maria/unittest/ma_test_loghandler_noflush-t.c | 2 +-
.../maria/unittest/ma_test_loghandler_nologs-t.c | 2 +-
.../unittest/ma_test_loghandler_pagecache-t.c | 2 +-
.../maria/unittest/ma_test_loghandler_purge-t.c | 2 +-
storage/maria/unittest/sequence_storage.c | 2 +-
storage/maria/unittest/sequence_storage.h | 2 +-
storage/maria/unittest/test_file.c | 2 +-
storage/maria/unittest/test_file.h | 2 +-
storage/maria/unittest/trnman-t.c | 2 +-
storage/mroonga/CMakeLists.txt | 4 +-
storage/mroonga/COPYING | 4 +-
.../mroonga/build/cmake_modules/ReadFileList.cmake | 2 +-
storage/mroonga/config.sh.in | 2 +-
storage/mroonga/data/install.sql.in | 6 +-
storage/mroonga/ha_mroonga.cpp | 51 +-
storage/mroonga/ha_mroonga.hpp | 196 +-
.../mroonga/lib/mrn_auto_increment_value_lock.cpp | 2 +-
.../mroonga/lib/mrn_auto_increment_value_lock.hpp | 2 +-
storage/mroonga/lib/mrn_column_name.cpp | 2 +-
storage/mroonga/lib/mrn_column_name.hpp | 2 +-
storage/mroonga/lib/mrn_condition_converter.cpp | 2 +-
storage/mroonga/lib/mrn_condition_converter.hpp | 2 +-
storage/mroonga/lib/mrn_context_pool.cpp | 4 +-
storage/mroonga/lib/mrn_context_pool.hpp | 2 +-
storage/mroonga/lib/mrn_count_skip_checker.cpp | 2 +-
storage/mroonga/lib/mrn_count_skip_checker.hpp | 2 +-
storage/mroonga/lib/mrn_current_thread.hpp | 2 +-
storage/mroonga/lib/mrn_database.cpp | 2 +-
storage/mroonga/lib/mrn_database.hpp | 2 +-
storage/mroonga/lib/mrn_database_manager.cpp | 2 +-
storage/mroonga/lib/mrn_database_manager.hpp | 2 +-
storage/mroonga/lib/mrn_database_repairer.cpp | 2 +-
storage/mroonga/lib/mrn_database_repairer.hpp | 2 +-
storage/mroonga/lib/mrn_debug_column_access.cpp | 2 +-
storage/mroonga/lib/mrn_debug_column_access.hpp | 2 +-
storage/mroonga/lib/mrn_encoding.cpp | 2 +-
storage/mroonga/lib/mrn_encoding.hpp | 2 +-
storage/mroonga/lib/mrn_external_lock.cpp | 2 +-
storage/mroonga/lib/mrn_external_lock.hpp | 2 +-
storage/mroonga/lib/mrn_field_normalizer.cpp | 2 +-
storage/mroonga/lib/mrn_field_normalizer.hpp | 2 +-
storage/mroonga/lib/mrn_grn.hpp | 2 +-
storage/mroonga/lib/mrn_index_column_name.cpp | 2 +-
storage/mroonga/lib/mrn_index_column_name.hpp | 2 +-
storage/mroonga/lib/mrn_index_table_name.cpp | 2 +-
storage/mroonga/lib/mrn_index_table_name.hpp | 2 +-
storage/mroonga/lib/mrn_lock.cpp | 2 +-
storage/mroonga/lib/mrn_lock.hpp | 2 +-
.../lib/mrn_match_escalation_threshold_scope.cpp | 2 +-
.../lib/mrn_match_escalation_threshold_scope.hpp | 2 +-
.../mroonga/lib/mrn_multiple_column_key_codec.cpp | 6 +-
.../mroonga/lib/mrn_multiple_column_key_codec.hpp | 2 +-
storage/mroonga/lib/mrn_mysqlservices.cpp | 2 +-
storage/mroonga/lib/mrn_operation.cpp | 2 +-
storage/mroonga/lib/mrn_operation.hpp | 2 +-
storage/mroonga/lib/mrn_operations.cpp | 2 +-
storage/mroonga/lib/mrn_operations.hpp | 2 +-
storage/mroonga/lib/mrn_parameters_parser.cpp | 2 +-
storage/mroonga/lib/mrn_parameters_parser.hpp | 2 +-
storage/mroonga/lib/mrn_path_mapper.cpp | 2 +-
storage/mroonga/lib/mrn_path_mapper.hpp | 2 +-
storage/mroonga/lib/mrn_query_parser.cpp | 2 +-
storage/mroonga/lib/mrn_query_parser.hpp | 2 +-
storage/mroonga/lib/mrn_smart_bitmap.cpp | 2 +-
storage/mroonga/lib/mrn_smart_bitmap.hpp | 2 +-
storage/mroonga/lib/mrn_smart_grn_obj.cpp | 2 +-
storage/mroonga/lib/mrn_smart_grn_obj.hpp | 2 +-
.../mroonga/lib/mrn_table_fields_offset_mover.cpp | 2 +-
.../mroonga/lib/mrn_table_fields_offset_mover.hpp | 2 +-
storage/mroonga/lib/mrn_time_converter.cpp | 2 +-
storage/mroonga/lib/mrn_time_converter.hpp | 2 +-
storage/mroonga/lib/mrn_value_decoder.cpp | 2 +-
storage/mroonga/lib/mrn_value_decoder.hpp | 2 +-
storage/mroonga/lib/mrn_windows.hpp | 2 +-
storage/mroonga/mrn_constants.hpp | 2 +-
storage/mroonga/mrn_err.h | 2 +-
storage/mroonga/mrn_macro.hpp | 2 +-
storage/mroonga/mrn_mysql.h | 2 +-
storage/mroonga/mrn_mysql_compat.h | 2 +-
storage/mroonga/mrn_table.cpp | 2 +-
storage/mroonga/mrn_table.hpp | 2 +-
storage/mroonga/mrn_variables.hpp | 2 +-
storage/mroonga/mrn_version.h.in | 2 +-
.../mroonga/include/mroonga/check_64bit.inc | 2 +-
.../mroonga/include/mroonga/check_freebsd.inc | 2 +-
.../include/mroonga/check_ha_mroonga_so.inc | 2 +-
.../include/mroonga/check_libgroonga_embedded.inc | 2 +-
.../mroonga/check_libgroonga_support_lz4.inc | 2 +-
.../mroonga/check_libgroonga_support_zlib.inc | 2 +-
.../mroonga/check_libgroonga_support_zstd.inc | 2 +-
.../mroonga/include/mroonga/check_mariadb.inc | 2 +-
.../mroonga/include/mroonga/check_osx.inc | 2 +-
.../mroonga/include/mroonga/check_solaris.inc | 2 +-
.../include/mroonga/check_strict_sql_mode.inc | 2 +-
.../mroonga/include/mroonga/check_version.inc | 2 +-
.../mroonga/include/mroonga/check_windows.inc | 2 +-
.../include/mroonga/have_fractional_seconds.inc | 2 +-
.../mroonga/include/mroonga/have_freebsd.inc | 2 +-
.../mroonga/have_groonga_plugin_register.inc | 2 +-
.../mroonga/include/mroonga/have_mariadb.inc | 2 +-
.../include/mroonga/have_mariadb_10_2_or_later.inc | 2 +-
.../mroonga/include/mroonga/have_mroonga.inc | 2 +-
.../include/mroonga/have_mroonga_deinit.inc | 8 +-
.../include/mroonga/have_mroonga_helper.inc | 2 +-
.../mroonga/include/mroonga/have_mysql.inc | 2 +-
.../include/mroonga/have_mysql_5_7_or_later.inc | 2 +-
.../include/mroonga/have_signed_64bit_time_t.inc | 2 +-
.../mroonga/include/mroonga/have_solaris.inc | 2 +-
.../include/mroonga/have_strict_sql_mode.inc | 2 +-
.../mroonga/include/mroonga/have_version_10_0.inc | 2 +-
.../include/mroonga/have_version_10_0_or_later.inc | 2 +-
.../mroonga/include/mroonga/have_version_5_5.inc | 2 +-
.../mroonga/include/mroonga/have_version_5_6.inc | 2 +-
.../include/mroonga/have_version_5_6_or_later.inc | 2 +-
.../mroonga/include/mroonga/have_version_5_7.inc | 2 +-
.../include/mroonga/have_version_5_7_or_later.inc | 2 +-
.../include/mroonga/load_mroonga_functions.inc | 2 +-
.../mroonga/include/mroonga/skip_freebsd.inc | 2 +-
.../include/mroonga/skip_mariadb_10_0_or_later.inc | 2 +-
.../mroonga/include/mroonga/skip_mariadb_10_1.inc | 2 +-
.../mroonga/skip_mariadb_10_1_or_earlier.inc | 2 +-
.../include/mroonga/skip_mariadb_10_2_or_later.inc | 2 +-
.../mroonga/include/mroonga/skip_mariadb_5_5.inc | 2 +-
.../mroonga/include/mroonga/skip_mysql_5_5.inc | 2 +-
.../mroonga/include/mroonga/skip_mysql_5_7.inc | 2 +-
.../include/mroonga/skip_mysql_5_7_or_later.inc | 2 +-
.../mroonga/include/mroonga/skip_osx.inc | 2 +-
.../include/mroonga/skip_signed_64bit_time_t.inc | 2 +-
.../mroonga/include/mroonga/skip_solaris.inc | 2 +-
.../include/mroonga/skip_strict_sql_mode.inc | 2 +-
.../include/mroonga/support_libgroonga_lz4.inc | 2 +-
.../include/mroonga/support_libgroonga_zlib.inc | 2 +-
.../include/mroonga/support_libgroonga_zstd.inc | 2 +-
.../include/mroonga/unload_mroonga_functions.inc | 2 +-
.../include/mroonga/unsupport_libgroonga_lz4.inc | 2 +-
.../include/mroonga/unsupport_libgroonga_zlib.inc | 2 +-
.../include/mroonga/unsupport_libgroonga_zstd.inc | 2 +-
...etime_64bit_strict_sql_mode_out_of_range.result | 2 +-
.../r/column_generated_stored_add_column.result | 3 +-
.../storage/t/alter_table_add_column_after.test | 2 +-
.../storage/t/alter_table_add_column_first.test | 2 +-
.../t/alter_table_add_column_flags_comment.test | 2 +-
.../t/alter_table_add_column_flags_parameter.test | 2 +-
...lter_table_add_column_groonga_type_comment.test | 2 +-
...er_table_add_column_groonga_type_parameter.test | 2 +-
.../t/alter_table_add_column_multibyte_cp932.test | 2 +-
.../t/alter_table_add_column_multibyte_utf8.test | 2 +-
.../storage/t/alter_table_add_column_multiple.test | 2 +-
.../storage/t/alter_table_add_column_plain.test | 2 +-
.../t/alter_table_add_column_type_comment.test | 2 +-
...e_add_index_token_filters_one_token_filter.test | 2 +-
.../t/alter_table_add_index_unique_duplicated.test | 2 +-
...dd_index_unique_multiple_column_duplicated.test | 2 +-
...er_table_add_key_multiple_column_with_data.test | 2 +-
.../storage/t/alter_table_add_primary_key.test | 2 +-
...able_change_column_comment_not_for_mroonga.test | 2 +-
.../t/alter_table_change_column_have_index.test | 2 +-
.../t/alter_table_change_column_rename_after.test | 2 +-
.../t/alter_table_change_column_rename_first.test | 2 +-
.../alter_table_change_column_rename_multiple.test | 2 +-
.../alter_table_change_column_rename_no_order.test | 2 +-
.../t/alter_table_change_engine_decimal.test | 2 +-
.../alter_table_change_engine_fulltext_index.test | 2 +-
.../storage/t/alter_table_change_token_filter.test | 2 +-
.../alter_table_disable_keys_create_fulltext.test | 2 +-
.../t/alter_table_disable_keys_fulltext_table.test | 2 +-
.../t/alter_table_disable_keys_fulltext_ujis.test | 2 +-
.../t/alter_table_disable_keys_fulltext_utf8.test | 2 +-
.../alter_table_disable_keys_multiple_column.test | 2 +-
.../storage/t/alter_table_disable_keys_normal.test | 2 +-
.../t/alter_table_disable_keys_primary.test | 2 +-
.../t/alter_table_disable_keys_truncate.test | 2 +-
.../t/alter_table_disable_keys_updating.test | 2 +-
.../t/alter_table_drop_column_multiple.test | 2 +-
.../storage/t/alter_table_drop_column_one.test | 2 +-
...r_table_drop_key_multiple_column_with_data.test | 2 +-
.../storage/t/alter_table_drop_primary_key.test | 2 +-
.../t/alter_table_enable_keys_fulltext.test | 2 +-
.../t/alter_table_enable_keys_fulltext_table.test | 2 +-
.../t/alter_table_enable_keys_fulltext_ujis.test | 2 +-
.../t/alter_table_enable_keys_fulltext_utf8.test | 2 +-
.../t/alter_table_enable_keys_multiple_column.test | 2 +-
.../storage/t/alter_table_enable_keys_normal.test | 2 +-
.../storage/t/alter_table_enable_keys_primary.test | 2 +-
.../t/alter_table_fulltext_add_no_primary_key.test | 2 +-
.../storage/t/alter_table_fulltext_add_normal.test | 2 +-
.../storage/t/alter_table_fulltext_add_table.test | 2 +-
.../storage/t/alter_table_fulltext_drop_table.test | 2 +-
.../storage/t/alter_table_modify_column_after.test | 2 +-
.../storage/t/alter_table_modify_column_first.test | 2 +-
.../t/alter_table_modify_column_no_order.test | 2 +-
...ter_table_recreate_anonymous_index_at_once.test | 2 +-
.../storage/t/alter_table_rename_table.test | 2 +-
.../mroonga/storage/t/alter_table_spatial.test | 2 +-
.../storage/t/auto_increment_TODO_SPLIT_ME.test | 2 +-
.../storage/t/auto_increment_table_param.test | 2 +-
.../mroonga/storage/t/auto_increment_text.test | 2 +-
.../mroonga/storage/t/binlog_TODO_SPLIT_ME.test | 2 +-
.../mroonga/storage/t/check_table_broken.test | 2 +-
.../mroonga/storage/t/check_table_not_broken.test | 2 +-
.../t/collation_utf8_general_ci_french.test | 2 +-
.../t/collation_utf8_unicode_520_ci_french.test | 2 +-
.../t/collation_utf8_unicode_520_ci_japanese.test | 2 +-
.../t/collation_utf8_unicode_ci_french.test | 2 +-
.../t/collation_utf8_unicode_ci_japanese.test | 2 +-
.../t/column_comment_index_not_for_mroonga.test | 2 +-
.../t/column_comment_normal_not_for_mroonga.test | 2 +-
.../mroonga/storage/t/column_date_with_index.test | 2 +-
.../storage/t/column_date_without_index.test | 2 +-
.../mroonga/storage/t/column_date_zero_date.test | 2 +-
.../storage/t/column_datetime_32bit_2038.test | 2 +-
.../t/column_datetime_32bit_before_unix_epoch.test | 2 +-
.../storage/t/column_datetime_32bit_max.test | 2 +-
.../t/column_datetime_32bit_out_of_range.test | 2 +-
.../storage/t/column_datetime_64bit_2038.test | 2 +-
.../t/column_datetime_64bit_before_unix_epoch.test | 2 +-
.../storage/t/column_datetime_64bit_max.test | 2 +-
...atetime_64bit_strict_sql_mode_out_of_range.test | 2 +-
...mn_datetime_64bit_version_5_5_out_of_range.test | 2 +-
...me_64bit_version_5_6_or_later_out_of_range.test | 2 +-
...umn_datetime_fractional_seconds_with_index.test | 2 +-
..._datetime_fractional_seconds_without_index.test | 2 +-
.../column_datetime_freebsd_before_unix_epoch.test | 2 +-
...n_datetime_mariadb_10_2_or_later_zero_date.test | 2 +-
...etime_mariadb_10_2_or_later_zero_month_day.test | 2 +-
...lumn_datetime_mysql_5_7_or_later_zero_date.test | 2 +-
...datetime_mysql_5_7_or_later_zero_month_day.test | 2 +-
.../mroonga/storage/t/column_datetime_null.test | 2 +-
.../storage/t/column_datetime_with_index.test | 2 +-
.../storage/t/column_datetime_without_index.test | 2 +-
.../storage/t/column_datetime_zero_date.test | 2 +-
.../storage/t/column_datetime_zero_month_day.test | 2 +-
...lumn_decimal_fractional_seconds_with_index.test | 2 +-
...n_decimal_fractional_seconds_without_index.test | 2 +-
.../storage/t/column_decimal_with_index.test | 2 +-
.../storage/t/column_decimal_without_index.test | 2 +-
.../storage/t/column_enum_less_with_index.test | 2 +-
.../storage/t/column_enum_many_with_index.test | 2 +-
.../t/column_generated_stored_add_column.test | 7 +-
.../storage/t/column_generated_stored_delete.test | 2 +-
.../t/column_generated_stored_drop_column.test | 2 +-
.../storage/t/column_generated_stored_insert.test | 2 +-
.../storage/t/column_generated_stored_reindex.test | 2 +-
.../storage/t/column_generated_stored_update.test | 2 +-
.../t/column_generated_virtual_add_column.test | 2 +-
.../storage/t/column_generated_virtual_delete.test | 2 +-
.../t/column_generated_virtual_drop_column.test | 2 +-
.../storage/t/column_generated_virtual_insert.test | 2 +-
...ed_virtual_mariadb_10_2_or_later_add_index.test | 2 +-
...iadb_10_2_or_later_create_table_with_index.test | 2 +-
...rated_virtual_mysql_5_7_or_later_add_index.test | 2 +-
.../storage/t/column_generated_virtual_update.test | 2 +-
.../mroonga/storage/t/column_groonga__id__id.test | 2 +-
.../storage/t/column_groonga__id_invalid_id.test | 2 +-
.../column_groonga_index_fulltext_other_table.test | 2 +-
..._groonga_index_fulltext_vector_other_table.test | 2 +-
.../t/column_groonga_index_int_other_table.test | 2 +-
.../storage/t/column_groonga_scalar_reference.test | 2 +-
.../t/column_groonga_scalar_support_lz4.test | 2 +-
.../t/column_groonga_scalar_support_zlib.test | 2 +-
.../t/column_groonga_scalar_support_zstd.test | 2 +-
.../t/column_groonga_scalar_unsupport_lz4.test | 2 +-
.../t/column_groonga_scalar_unsupport_zlib.test | 2 +-
.../t/column_groonga_scalar_unsupport_zstd.test | 2 +-
...roonga_scalar_with_not_for_mroonga_comment.test | 2 +-
...lumn_groonga_vector_order_by_with_function.test | 2 +-
.../storage/t/column_groonga_vector_reference.test | 2 +-
.../t/column_int_with_index_zero_value.test | 2 +-
.../mroonga/storage/t/column_json_insert.test | 2 +-
.../mroonga/storage/t/column_multibyte_cp932.test | 2 +-
.../mroonga/storage/t/column_multibyte_utf8.test | 2 +-
.../storage/t/column_set_16_with_index.test | 2 +-
.../storage/t/column_set_24_with_index.test | 2 +-
.../storage/t/column_set_32_with_index.test | 2 +-
.../storage/t/column_set_64_with_index.test | 2 +-
.../mroonga/storage/t/column_set_8_with_index.test | 2 +-
.../storage/t/column_signed_bigint_with_index.test | 2 +-
.../storage/t/column_signed_int_with_index.test | 2 +-
.../t/column_signed_mediumint_with_index.test | 2 +-
.../t/column_signed_smallint_with_index.test | 2 +-
.../t/column_signed_tinyint_with_index.test | 2 +-
.../column_time_fractional_seconds_with_index.test | 2 +-
.../mroonga/storage/t/column_time_with_index.test | 2 +-
...mn_timestamp_fractional_seconds_with_index.test | 2 +-
.../storage/t/column_timestamp_with_index.test | 2 +-
.../storage/t/column_tinyint_without_index.test | 2 +-
.../t/column_unsigned_bigint_with_index.test | 2 +-
.../t/column_unsigned_bigint_without_index.test | 2 +-
.../storage/t/column_unsigned_int_with_index.test | 2 +-
.../t/column_unsigned_mediumint_with_index.test | 2 +-
.../t/column_unsigned_smallint_with_index.test | 2 +-
.../t/column_unsigned_tinyint_with_index.test | 2 +-
.../mroonga/storage/t/column_year_with_index.test | 2 +-
.../storage/t/column_year_without_index.test | 2 +-
.../mysql-test/mroonga/storage/t/count_star.test | 2 +-
.../storage/t/create_database_name_slash.test | 2 +-
.../storage/t/create_table_TODO_SPLIT_ME.test | 2 +-
.../t/create_table_column_flags_comment.test | 2 +-
.../t/create_table_column_flags_parameter.test | 2 +-
.../create_table_column_groonga_type_comment.test | 2 +-
...eate_table_column_groonga_type_nonexistent.test | 2 +-
...create_table_column_groonga_type_parameter.test | 2 +-
.../t/create_table_column_type_comment.test | 2 +-
.../t/create_table_column_type_nonexistent.test | 2 +-
.../storage/t/create_table_comment_normal.test | 2 +-
.../storage/t/create_table_default_tokenizer.test | 2 +-
.../t/create_table_index_flags_comment.test | 2 +-
.../t/create_table_index_flags_index_medium.test | 2 +-
.../t/create_table_index_flags_index_small.test | 2 +-
.../storage/t/create_table_index_flags_none.test | 2 +-
.../t/create_table_index_flags_parameter.test | 2 +-
.../t/create_table_index_index_flags_none.test | 2 +-
..._index_flags_with_position_and_with_weight.test | 2 +-
.../t/create_table_index_normalizer_comment.test | 2 +-
..._table_index_normalizer_fulltext_index_bin.test | 2 +-
.../t/create_table_index_normalizer_index_bin.test | 2 +-
...lizer_no_utf8_charset_with_utf8_normalizer.test | 2 +-
.../t/create_table_index_normalizer_none.test | 2 +-
.../t/create_table_index_normalizer_parameter.test | 2 +-
.../t/create_table_index_parser_comment.test | 2 +-
.../t/create_table_index_parser_default.test | 2 +-
.../storage/t/create_table_index_parser_off.test | 2 +-
...index_token_filters_multiple_token_filters.test | 2 +-
...table_index_token_filters_one_token_filter.test | 2 +-
...create_table_index_token_filters_parameter.test | 2 +-
.../t/create_table_index_tokenizer_comment.test | 2 +-
.../t/create_table_index_tokenizer_default.test | 2 +-
.../t/create_table_index_tokenizer_off.test | 2 +-
.../t/create_table_index_tokenizer_parameter.test | 2 +-
.../t/create_table_table_normalizer_default.test | 2 +-
.../t/create_table_table_normalizer_hash.test | 2 +-
...table_token_filters_multiple_token_filters.test | 2 +-
...table_table_token_filters_one_token_filter.test | 2 +-
...create_table_table_token_filters_stop_word.test | 2 +-
.../mroonga/storage/t/delete_fulltext_column.test | 2 +-
.../storage/t/delete_index_btree_many_records.test | 2 +-
.../storage/t/delete_index_hash_id_no_unique.test | 2 +-
.../storage/t/delete_index_hash_id_unique.test | 2 +-
.../mroonga/storage/t/delete_normal_column.test | 2 +-
.../mroonga/storage/t/delete_unsigned_bigint.test | 2 +-
.../storage/t/drop_database_TODO_SPLIT_ME.test | 2 +-
.../mroonga/storage/t/drop_database_no_table.test | 2 +-
.../storage/t/drop_table_TODO_SPLIT_ME.test | 2 +-
.../mysql-test/mroonga/storage/t/flush_logs.test | 2 +-
.../mroonga/storage/t/foreign_key_alter_add.test | 2 +-
.../mroonga/storage/t/foreign_key_alter_drop.test | 2 +-
.../mroonga/storage/t/foreign_key_create.test | 2 +-
.../storage/t/foreign_key_delete_existent.test | 2 +-
.../storage/t/foreign_key_delete_nonexistent.test | 2 +-
.../storage/t/foreign_key_insert_existent.test | 2 +-
.../storage/t/foreign_key_insert_nonexistent.test | 2 +-
.../mroonga/storage/t/foreign_key_rename.test | 2 +-
.../storage/t/foreign_key_update_existent.test | 2 +-
.../storage/t/foreign_key_update_nonexistent.test | 2 +-
.../t/fulltext_boolean_mode_empty_query.test | 2 +-
.../storage/t/fulltext_boolean_mode_escape.test | 2 +-
.../t/fulltext_boolean_mode_leading_not.test | 2 +-
.../t/fulltext_boolean_mode_pragma_all.test | 2 +-
..._pragma_default_operator_minus_no_operator.test | 2 +-
...mode_pragma_default_operator_minus_with_or.test | 2 +-
...de_pragma_default_operator_minus_with_plus.test | 2 +-
...ode_pragma_default_operator_or_no_operator.test | 2 +-
...mode_pragma_default_operator_or_with_minus.test | 2 +-
..._mode_pragma_default_operator_or_with_plus.test | 2 +-
...e_pragma_default_operator_plus_no_operator.test | 2 +-
...pragma_default_operator_plus_with_astarisk.test | 2 +-
...de_pragma_default_operator_plus_with_minus.test | 2 +-
..._mode_pragma_default_operator_plus_with_or.test | 2 +-
...boolean_mode_pragma_syntax_script_operator.test | 2 +-
...boolean_mode_pragma_syntax_script_selector.test | 2 +-
...ltext_boolean_mode_pragma_weight_full_spec.test | 2 +-
...ltext_boolean_mode_pragma_weight_no_weight.test | 2 +-
...xt_boolean_mode_pragma_weight_omit_section.test | 2 +-
...an_mode_pragma_weight_ten_or_more_sections.test | 2 +-
..._mode_pragma_weight_three_or_more_sections.test | 2 +-
.../fulltext_boolean_mode_syntax_error_error.test | 2 +-
...xt_boolean_mode_syntax_error_error_and_log.test | 2 +-
.../fulltext_boolean_mode_syntax_error_ignore.test | 2 +-
...t_boolean_mode_syntax_error_ignore_and_log.test | 2 +-
.../mroonga/storage/t/fulltext_charset_ascii.test | 2 +-
.../mroonga/storage/t/fulltext_charset_cp932.test | 2 +-
.../storage/t/fulltext_charset_eucjpms.test | 2 +-
.../storage/t/fulltext_charset_japanese.test | 2 +-
.../storage/t/fulltext_charset_utf8mb4.test | 2 +-
.../mroonga/storage/t/fulltext_empty_query.test | 2 +-
.../mroonga/storage/t/fulltext_found_rows.test | 2 +-
.../storage/t/fulltext_groonga_varchar_vector.test | 2 +-
.../mroonga/storage/t/fulltext_index_recreate.test | 2 +-
.../mroonga/storage/t/fulltext_insert_select.test | 2 +-
.../mroonga/storage/t/fulltext_insert_values.test | 2 +-
.../t/fulltext_multiple_column_index_delete.test | 2 +-
.../t/fulltext_multiple_column_index_insert.test | 2 +-
.../t/fulltext_multiple_column_index_recreate.test | 2 +-
.../t/fulltext_multiple_column_index_update.test | 2 +-
.../mroonga/storage/t/fulltext_multiple_index.test | 2 +-
.../mroonga/storage/t/fulltext_no_primary_key.test | 2 +-
.../storage/t/fulltext_not_match_against.test | 2 +-
.../mysql-test/mroonga/storage/t/fulltext_or.test | 2 +-
...ltext_order_boolean_mode_different_against.test | 2 +-
...ulltext_order_boolean_mode_different_match.test | 2 +-
.../t/fulltext_order_boolean_mode_no_where.test | 2 +-
...text_order_boolean_mode_same_match_against.test | 2 +-
.../fulltext_order_natural_language_mode_asc.test | 2 +-
.../fulltext_order_natural_language_mode_desc.test | 2 +-
...er_natural_language_mode_different_against.test | 2 +-
...rder_natural_language_mode_different_match.test | 2 +-
...ltext_order_natural_language_mode_no_where.test | 2 +-
...r_natural_language_mode_same_match_against.test | 2 +-
.../mroonga/storage/t/fulltext_two_inner_join.test | 2 +-
.../t/fulltext_version_10_0_no_such_key.test | 2 +-
.../t/fulltext_version_5_5_no_such_key.test | 2 +-
.../t/fulltext_version_5_6_no_such_key.test | 2 +-
.../storage/t/function_command_auto-escape.test | 2 +-
.../mroonga/storage/t/function_command_select.test | 2 +-
.../t/function_command_special-database-name.test | 2 +-
.../t/function_escape_error_query_is_missing.test | 2 +-
.../function_escape_error_query_is_not_string.test | 2 +-
...cape_error_target_characters_is_not_string.test | 2 +-
.../storage/t/function_escape_query_all.test | 2 +-
.../storage/t/function_escape_query_custom.test | 2 +-
.../storage/t/function_escape_query_join.test | 2 +-
.../t/function_escape_query_match_against.test | 2 +-
.../storage/t/function_escape_query_named.test | 2 +-
.../storage/t/function_escape_query_nested.test | 2 +-
.../storage/t/function_escape_script_decimal.test | 2 +-
.../storage/t/function_escape_script_integer.test | 2 +-
.../storage/t/function_escape_script_real.test | 2 +-
.../storage/t/function_escape_script_string.test | 2 +-
.../t/function_highlight_html_dynamic_keyword.test | 2 +-
.../t/function_highlight_html_japanese.test | 2 +-
.../function_highlight_html_multiple_keywords.test | 2 +-
.../t/function_highlight_html_normalizer.test | 2 +-
.../storage/t/function_highlight_html_query.test | 2 +-
.../t/function_highlight_html_query_pragma.test | 2 +-
.../storage/t/function_highlight_html_record.test | 2 +-
.../storage/t/function_last_insert_grn_id.test | 2 +-
.../t/function_last_insert_id_reference.test | 2 +-
.../storage/t/function_last_insert_id_set.test | 2 +-
.../storage/t/function_normalize_default.test | 2 +-
.../storage/t/function_normalize_normalizer.test | 2 +-
.../storage/t/function_normalize_record.test | 2 +-
.../storage/t/function_query_expand_multiple.test | 2 +-
.../storage/t/function_query_expand_no_index.test | 2 +-
.../storage/t/function_query_expand_one.test | 2 +-
.../storage/t/function_query_expand_pragma.test | 2 +-
.../mroonga/storage/t/function_snippet_ascii.test | 2 +-
.../mroonga/storage/t/function_snippet_cp932.test | 2 +-
.../storage/t/function_snippet_eucjpms.test | 2 +-
.../t/function_snippet_html_dynamic_keyword.test | 2 +-
.../storage/t/function_snippet_html_japanese.test | 2 +-
.../t/function_snippet_html_multiple_keywords.test | 2 +-
.../t/function_snippet_html_multiple_snippets.test | 2 +-
.../storage/t/function_snippet_html_query.test | 2 +-
.../t/function_snippet_html_query_pragma.test | 2 +-
.../storage/t/function_snippet_html_record.test | 2 +-
...nction_snippet_invalid_nonexistent_charset.test | 2 +-
...nction_snippet_invalid_unsupported_charset.test | 2 +-
.../storage/t/function_snippet_japanese.test | 2 +-
.../storage/t/geometry_bulk_insert_null.test | 2 +-
.../mroonga/storage/t/geometry_contains.test | 2 +-
.../geometry_strict_sql_mode_bulk_insert_null.test | 2 +-
.../t/geometry_strict_sql_mode_contains.test | 2 +-
.../storage/t/index_btree_equal_datetime.test | 2 +-
.../mroonga/storage/t/index_btree_equal_time.test | 2 +-
.../storage/t/index_btree_equal_timestamp.test | 2 +-
.../t/index_btree_normal_column_insert.test | 2 +-
.../mroonga/storage/t/index_hash_id_normal.test | 2 +-
.../mroonga/storage/t/index_hash_id_primary.test | 2 +-
.../mroonga/storage/t/index_hash_id_unique.test | 2 +-
.../storage/t/index_hash_normal_column_insert.test | 2 +-
.../t/index_hash_strict_sql_mode_id_primary.test | 2 +-
.../storage/t/index_multiple_column_delete.test | 2 +-
.../t/index_multiple_column_nullable_smallint.test | 2 +-
...x_multiple_column_nullable_unsigned_bigint.test | 2 +-
...ndex_multiple_column_nullable_unsigned_int.test | 2 +-
...multiple_column_nullable_unsigned_smallint.test | 2 +-
.../t/index_multiple_column_nullable_varchar.test | 2 +-
...ltiple_column_order_by_where_equal_asc_asc.test | 2 +-
...iple_column_order_by_where_equal_desc_desc.test | 2 +-
.../t/index_multiple_column_primary_delete.test | 2 +-
.../index_multiple_column_primary_select_int.test | 2 +-
...iple_column_primary_strict_sql_mode_update.test | 2 +-
.../t/index_multiple_column_primary_update.test | 2 +-
...ultiple_column_range_all_used_greater_than.test | 2 +-
...olumn_range_all_used_greater_than_or_equal.test | 2 +-
...x_multiple_column_range_all_used_less_than.test | 2 +-
...e_column_range_all_used_less_than_or_equal.test | 2 +-
...ge_partially_used_have_prefix_greater_than.test | 2 +-
...lly_used_have_prefix_greater_than_or_equal.test | 2 +-
...range_partially_used_have_prefix_less_than.test | 2 +-
...tially_used_have_prefix_less_than_or_equal.test | 2 +-
...ange_partially_used_no_prefix_greater_than.test | 2 +-
...ially_used_no_prefix_greater_than_or_equal.test | 2 +-
...n_range_partially_used_no_prefix_less_than.test | 2 +-
...artially_used_no_prefix_less_than_or_equal.test | 2 +-
.../storage/t/index_multiple_column_recreate.test | 2 +-
.../storage/t/index_multiple_column_replace.test | 2 +-
.../t/index_multiple_column_select_double.test | 2 +-
.../t/index_multiple_column_select_float.test | 2 +-
.../t/index_multiple_column_select_int.test | 2 +-
.../t/index_multiple_column_select_max.test | 2 +-
.../t/index_multiple_column_select_min.test | 2 +-
.../t/index_multiple_column_select_string.test | 2 +-
.../t/index_multiple_column_select_varchar.test | 2 +-
...ex_multiple_column_unique_date_32bit_equal.test | 2 +-
...ex_multiple_column_unique_date_64bit_equal.test | 2 +-
...dex_multiple_column_unique_date_index_read.test | 2 +-
...ultiple_column_unique_date_order_32bit_asc.test | 2 +-
...ltiple_column_unique_date_order_32bit_desc.test | 2 +-
...ultiple_column_unique_date_order_64bit_asc.test | 2 +-
...ltiple_column_unique_date_order_64bit_desc.test | 2 +-
...index_multiple_column_unique_date_reinsert.test | 2 +-
...multiple_column_unique_datetime_index_read.test | 2 +-
...atetime_insert_delete_insert_invalid_value.test | 2 +-
..._multiple_column_unique_datetime_order_asc.test | 2 +-
...multiple_column_unique_datetime_order_desc.test | 2 +-
...x_multiple_column_unique_datetime_reinsert.test | 2 +-
.../t/index_multiple_column_unique_decimal.test | 2 +-
...dex_multiple_column_unique_time_index_read.test | 2 +-
...ndex_multiple_column_unique_time_order_asc.test | 2 +-
...dex_multiple_column_unique_time_order_desc.test | 2 +-
...index_multiple_column_unique_time_reinsert.test | 2 +-
...ultiple_column_unique_timestamp_index_read.test | 2 +-
...multiple_column_unique_timestamp_order_asc.test | 2 +-
...ultiple_column_unique_timestamp_order_desc.test | 2 +-
..._multiple_column_unique_timestamp_reinsert.test | 2 +-
.../t/index_multiple_column_unique_varchar.test | 2 +-
...ex_multiple_column_unique_year_32bit_equal.test | 2 +-
...ex_multiple_column_unique_year_64bit_equal.test | 2 +-
...dex_multiple_column_unique_year_index_read.test | 2 +-
...ultiple_column_unique_year_order_32bit_asc.test | 2 +-
...ltiple_column_unique_year_order_32bit_desc.test | 2 +-
...ultiple_column_unique_year_order_64bit_asc.test | 2 +-
...ltiple_column_unique_year_order_64bit_desc.test | 2 +-
...index_multiple_column_unique_year_reinsert.test | 2 +-
.../t/index_multiple_column_update_int.test | 2 +-
.../t/index_multiple_column_update_string.test | 2 +-
.../storage/t/index_primary_char_exact_length.test | 2 +-
.../t/index_primary_char_null_character.test | 2 +-
.../storage/t/index_primary_char_short.test | 2 +-
.../mroonga/storage/t/index_primary_date.test | 2 +-
...x_primary_datetime_with_fractional_seconds.test | 2 +-
...rimary_datetime_without_fractional_seconds.test | 2 +-
...ex_primary_decimal_with_fractional_seconds.test | 2 +-
...primary_decimal_without_fractional_seconds.test | 2 +-
...index_primary_time_with_fractional_seconds.test | 2 +-
...ex_primary_time_without_fractional_seconds.test | 2 +-
..._primary_timestamp_with_fractional_seconds.test | 2 +-
...imary_timestamp_without_fractional_seconds.test | 2 +-
.../t/index_primary_varchar_null_character.test | 2 +-
.../mroonga/storage/t/index_primary_year.test | 2 +-
.../t/index_range_normal_greater_than_asc.test | 2 +-
.../t/index_range_normal_greater_than_desc.test | 2 +-
...dex_range_normal_greater_than_or_equal_asc.test | 2 +-
...ex_range_normal_greater_than_or_equal_desc.test | 2 +-
.../t/index_range_normal_less_than_asc.test | 2 +-
.../t/index_range_normal_less_than_desc.test | 2 +-
.../index_range_normal_less_than_or_equal_asc.test | 2 +-
...index_range_normal_less_than_or_equal_desc.test | 2 +-
.../t/index_range_primary_greater_than_asc.test | 2 +-
.../t/index_range_primary_greater_than_desc.test | 2 +-
...ex_range_primary_greater_than_or_equal_asc.test | 2 +-
...x_range_primary_greater_than_or_equal_desc.test | 2 +-
.../t/index_range_primary_less_than_asc.test | 2 +-
.../t/index_range_primary_less_than_desc.test | 2 +-
...index_range_primary_less_than_or_equal_asc.test | 2 +-
...ndex_range_primary_less_than_or_equal_desc.test | 2 +-
.../storage/t/index_read_multiple_bigint.test | 2 +-
.../t/index_read_multiple_bigint_unsigned.test | 2 +-
.../storage/t/index_read_multiple_double.test | 2 +-
.../storage/t/index_read_multiple_float.test | 2 +-
.../mroonga/storage/t/index_read_multiple_int.test | 2 +-
.../t/index_read_multiple_int_unsigned.test | 2 +-
.../storage/t/index_read_multiple_mediumint.test | 2 +-
.../t/index_read_multiple_mediumint_unsigned.test | 2 +-
.../storage/t/index_read_multiple_smallint.test | 2 +-
.../t/index_read_multiple_smallint_unsigned.test | 2 +-
.../storage/t/index_read_multiple_tinyint.test | 2 +-
.../t/index_read_multiple_tinyint_unsigned.test | 2 +-
.../storage/t/index_read_multiple_varchar.test | 2 +-
.../t/index_read_multiple_varchar_collation.test | 2 +-
.../mroonga/storage/t/index_read_normal_int.test | 2 +-
.../storage/t/index_read_normal_varchar.test | 2 +-
.../mroonga/storage/t/index_read_primary_int.test | 2 +-
.../storage/t/index_read_primary_varchar.test | 2 +-
.../mroonga/storage/t/index_unique_delete_all.test | 2 +-
.../t/index_unique_delete_by_primary_key.test | 2 +-
.../storage/t/index_unique_insert_after_error.test | 2 +-
.../t/index_unique_search_after_duplicated.test | 2 +-
.../mroonga/storage/t/index_unique_varchar.test | 2 +-
.../storage/t/index_update_multiple_column.test | 2 +-
.../storage/t/index_update_single_column.test | 2 +-
.../storage/t/information_schema_plugins.test | 2 +-
...ormation_schema_tables_auto_increment_none.test | 2 +-
...formation_schema_tables_auto_increment_use.test | 2 +-
.../t/information_schema_tables_data_length.test | 2 +-
.../mroonga/storage/t/insert_TODO_SPLIT_ME.test | 2 +-
.../mroonga/storage/t/insert_delayed.test | 2 +-
...update_no_primary_key_and_unique_key_twice.test | 2 +-
...insert_on_duplicate_key_update_primary_key.test | 2 +-
.../insert_on_duplicate_key_update_unique_key.test | 2 +-
.../mroonga/storage/t/insert_virtual_column.test | 2 +-
.../mroonga/storage/t/like_unicode_ci.test | 2 +-
.../mroonga/storage/t/lock_tables_read.test | 2 +-
...zation_count_skip_after_insert_multithread.test | 2 +-
...tion_count_skip_after_insert_single_thread.test | 2 +-
.../t/optimization_count_skip_disabled.test | 2 +-
.../t/optimization_count_skip_index_and.test | 2 +-
.../t/optimization_count_skip_index_between.test | 2 +-
.../t/optimization_count_skip_index_equal.test | 2 +-
...kip_index_full_text_search_in_boolean_mode.test | 2 +-
..._full_text_search_in_natural_language_mode.test | 2 +-
.../t/optimization_count_skip_index_greater.test | 2 +-
...ptimization_count_skip_index_greater_equal.test | 2 +-
.../t/optimization_count_skip_index_less.test | 2 +-
.../optimization_count_skip_index_less_equal.test | 2 +-
.../t/optimization_count_skip_index_not_equal.test | 2 +-
.../t/optimization_count_skip_index_view.test | 2 +-
...ptimization_count_skip_multiple_conditions.test | 2 +-
...ptimization_count_skip_primary_key_between.test | 2 +-
.../optimization_count_skip_primary_key_equal.test | 2 +-
...ptimization_count_skip_primary_key_greater.test | 2 +-
...ation_count_skip_primary_key_greater_equal.test | 2 +-
.../optimization_count_skip_primary_key_less.test | 2 +-
...mization_count_skip_primary_key_less_equal.test | 2 +-
...imization_count_skip_primary_key_not_equal.test | 2 +-
...ization_order_limit_not_optimized_disabled.test | 2 +-
...imit_not_optimized_multiple_match_againsts.test | 2 +-
...ization_order_limit_not_optimized_no_limit.test | 2 +-
.../optimization_order_limit_optimized_cp932.test | 2 +-
...ion_order_limit_optimized_datetime_between.test | 2 +-
...rder_limit_optimized_datetime_between_over.test | 2 +-
...ation_order_limit_optimized_datetime_equal.test | 2 +-
...rder_limit_optimized_datetime_greater_than.test | 2 +-
...t_optimized_datetime_greater_than_or_equal.test | 2 +-
...n_order_limit_optimized_datetime_less_than.test | 2 +-
...imit_optimized_datetime_less_than_or_equal.test | 2 +-
...imit_optimized_duplicated_order_by_columns.test | 2 +-
...timization_order_limit_optimized_enum_name.test | 2 +-
...imization_order_limit_optimized_enum_value.test | 2 +-
...ion_order_limit_optimized_have_primary_key.test | 2 +-
...mization_order_limit_optimized_int_between.test | 2 +-
...ion_order_limit_optimized_int_between_over.test | 2 +-
...timization_order_limit_optimized_int_equal.test | 2 +-
...ion_order_limit_optimized_int_greater_than.test | 2 +-
..._limit_optimized_int_greater_than_or_equal.test | 2 +-
...zation_order_limit_optimized_int_less_than.test | 2 +-
...der_limit_optimized_int_less_than_or_equal.test | 2 +-
...ation_order_limit_optimized_no_primary_key.test | 2 +-
...tion_order_limit_optimized_no_where_clause.test | 2 +-
...ization_order_limit_optimized_order_by_asc.test | 2 +-
...zation_order_limit_optimized_order_by_desc.test | 2 +-
...mization_order_limit_optimized_order_by_id.test | 2 +-
...der_limit_optimized_order_by_match_against.test | 2 +-
...order_limit_optimized_select_match_against.test | 2 +-
...ization_order_limit_optimized_time_between.test | 2 +-
...on_order_limit_optimized_time_between_over.test | 2 +-
...imization_order_limit_optimized_time_equal.test | 2 +-
...on_order_limit_optimized_time_greater_than.test | 2 +-
...limit_optimized_time_greater_than_or_equal.test | 2 +-
...ation_order_limit_optimized_time_less_than.test | 2 +-
...er_limit_optimized_time_less_than_or_equal.test | 2 +-
...r_limit_optimized_varchar_equal_with_index.test | 2 +-
...imit_optimized_varchar_equal_without_index.test | 2 +-
...ization_order_limit_optimized_year_between.test | 2 +-
...on_order_limit_optimized_year_between_over.test | 2 +-
...imization_order_limit_optimized_year_equal.test | 2 +-
...on_order_limit_optimized_year_greater_than.test | 2 +-
...limit_optimized_year_greater_than_or_equal.test | 2 +-
...ation_order_limit_optimized_year_less_than.test | 2 +-
...er_limit_optimized_year_less_than_or_equal.test | 2 +-
.../mroonga/storage/t/partition_insert.test | 2 +-
.../mroonga/storage/t/partition_update.test | 2 +-
.../storage/t/repair_table_no_index_file.test | 2 +-
.../mroonga/storage/t/replace_geometry.test | 2 +-
.../mroonga/storage/t/replace_select_varchar.test | 2 +-
.../mysql-test/mroonga/storage/t/replace_text.test | 2 +-
.../mroonga/storage/t/replace_varchar.test | 2 +-
.../mroonga/storage/t/replace_vector.test | 2 +-
.../mroonga/storage/t/replace_without_key.test | 2 +-
.../mysql-test/mroonga/storage/t/select_all.test | 2 +-
.../storage/t/select_empty_key_where_equal.test | 2 +-
.../t/select_empty_key_where_not_equal.test | 2 +-
.../storage/t/select_group_by_with_index.test | 2 +-
.../storage/t/select_group_by_without_index.test | 2 +-
.../mysql-test/mroonga/storage/t/select_pkey.test | 2 +-
.../mroonga/storage/t/select_secondary_key.test | 2 +-
.../storage/t/show_create_table_TODO_SPLIT_ME.test | 2 +-
.../mroonga/storage/t/sub_query_fulltext.test | 2 +-
.../mroonga/storage/t/temporary_table.test | 2 +-
.../mysql-test/mroonga/storage/t/truncate.test | 2 +-
.../mroonga/storage/t/update_binlog_row.test | 2 +-
.../mroonga/storage/t/update_fulltext.test | 2 +-
.../mroonga/storage/t/update_id_hash_index.test | 2 +-
.../storage/t/update_id_unique_hash_index.test | 2 +-
.../mysql-test/mroonga/storage/t/update_int.test | 2 +-
.../storage/t/update_last_insert_grn_id.test | 2 +-
.../mroonga/storage/t/update_virtual_column.test | 2 +-
...ble_boolean_mode_syntax_flags_allow_column.test | 2 +-
...oolean_mode_syntax_flags_allow_leading_not.test | 2 +-
...ble_boolean_mode_syntax_flags_allow_update.test | 2 +-
...ble_boolean_mode_syntax_flags_syntax_query.test | 2 +-
...le_boolean_mode_syntax_flags_syntax_script.test | 2 +-
.../storage/t/variable_database_path_prefix.test | 2 +-
.../t/variable_default_parser_new_value.test | 2 +-
.../t/variable_default_parser_same_value.test | 2 +-
.../t/variable_default_tokenizer_new_value.test | 2 +-
.../t/variable_default_tokenizer_same_value.test | 2 +-
.../storage/t/variable_dry_write_delete.test | 2 +-
.../storage/t/variable_dry_write_insert.test | 2 +-
.../storage/t/variable_dry_write_update.test | 2 +-
...ariable_enable_operations_recording_insert.test | 2 +-
.../storage/t/variable_lock_timeout_disable.test | 2 +-
.../storage/t/variable_lock_timeout_invalid.test | 2 +-
.../storage/t/variable_lock_timeout_no_retry.test | 2 +-
.../storage/t/variable_lock_timeout_valid.test | 2 +-
.../storage/t/variable_log_file_new_value.test | 2 +-
.../t/variable_log_file_nonexistent_path.test | 2 +-
.../storage/t/variable_log_file_same_value.test | 2 +-
.../t/variable_log_level_TODO_SPLIT_ME.test | 2 +-
...variable_match_escalation_threshold_global.test | 2 +-
...ariable_match_escalation_threshold_session.test | 2 +-
...variable_max_n_records_for_estimate_global.test | 2 +-
...rds_for_estimate_mysql_5_7_or_later_global.test | 2 +-
...mate_mysql_5_7_or_later_not_found_in_limit.test | 2 +-
...ds_for_estimate_mysql_5_7_or_later_session.test | 2 +-
..._n_records_for_estimate_not_found_in_limit.test | 2 +-
...ariable_max_n_records_for_estimate_session.test | 2 +-
...riable_query_log_file_disabled_empty_value.test | 2 +-
...ariable_query_log_file_disabled_null_value.test | 2 +-
...ariable_query_log_file_enabled_empty_value.test | 2 +-
...variable_query_log_file_enabled_null_value.test | 2 +-
.../t/variable_query_log_file_new_value.test | 2 +-
.../t/variable_query_log_file_same_value.test | 2 +-
.../t/variable_vector_column_delimiter.test | 2 +-
.../mroonga/storage/t/variable_version.test | 2 +-
.../mroonga/wrapper/t/alter_table_add_column.test | 2 +-
.../t/alter_table_add_column_multibyte_cp932.test | 2 +-
.../t/alter_table_add_column_multibyte_utf8.test | 2 +-
.../t/alter_table_change_column_comment.test | 2 +-
.../wrapper/t/alter_table_change_engine.test | 2 +-
.../t/alter_table_comment_change_engine.test | 2 +-
.../alter_table_disable_keys_create_fulltext.test | 2 +-
.../t/alter_table_disable_keys_fulltext.test | 2 +-
.../alter_table_disable_keys_multiple_column.test | 2 +-
.../wrapper/t/alter_table_disable_keys_normal.test | 2 +-
.../t/alter_table_disable_keys_primary.test | 2 +-
.../t/alter_table_disable_keys_updating.test | 2 +-
.../mroonga/wrapper/t/alter_table_drop_column.test | 2 +-
.../t/alter_table_enable_keys_fulltext.test | 2 +-
.../t/alter_table_enable_keys_lock_tables.test | 2 +-
.../t/alter_table_enable_keys_multiple_column.test | 2 +-
.../wrapper/t/alter_table_enable_keys_normal.test | 2 +-
.../wrapper/t/alter_table_enable_keys_primary.test | 2 +-
.../mroonga/wrapper/t/alter_table_fulltext.test | 2 +-
.../wrapper/t/alter_table_rename_table.test | 2 +-
.../mroonga/wrapper/t/alter_table_spatial.test | 2 +-
.../mroonga/wrapper/t/auto_increment_text.test | 2 +-
.../mroonga/wrapper/t/binlog_TODO_SPLIT_ME.test | 2 +-
.../mroonga/wrapper/t/check_table_for_upgrade.test | 2 +-
.../t/column_comment_index_not_for_mroonga.test | 2 +-
.../t/column_generated_stored_add_column.test | 2 +-
.../wrapper/t/column_generated_stored_delete.test | 2 +-
.../t/column_generated_stored_drop_column.test | 2 +-
.../wrapper/t/column_generated_stored_insert.test | 2 +-
.../wrapper/t/column_generated_stored_reindex.test | 2 +-
.../wrapper/t/column_generated_stored_update.test | 2 +-
.../t/column_generated_virtual_add_column.test | 2 +-
...olumn_generated_virtual_add_fulltext_index.test | 2 +-
.../t/column_generated_virtual_add_index.test | 2 +-
.../wrapper/t/column_generated_virtual_delete.test | 2 +-
.../t/column_generated_virtual_drop_column.test | 2 +-
.../wrapper/t/column_generated_virtual_insert.test | 2 +-
.../wrapper/t/column_generated_virtual_update.test | 2 +-
.../mroonga/wrapper/t/column_multibyte_cp932.test | 2 +-
.../mroonga/wrapper/t/column_multibyte_utf8.test | 2 +-
.../mroonga/wrapper/t/column_normal_comment.test | 2 +-
.../mysql-test/mroonga/wrapper/t/count_star.test | 2 +-
.../count_star_mysql_5_7_or_later_with_index.test | 2 +-
.../mroonga/wrapper/t/count_star_with_index.test | 2 +-
.../wrapper/t/create_table_TODO_SPLIT_ME.test | 2 +-
.../wrapper/t/create_table_comment_combined.test | 2 +-
.../wrapper/t/create_table_flags_comment.test | 2 +-
.../mroonga/wrapper/t/create_table_flags_none.test | 2 +-
.../wrapper/t/create_table_flags_parameter.test | 2 +-
.../wrapper/t/create_table_index_flags_none.test | 2 +-
..._index_flags_with_position_and_with_weight.test | 2 +-
.../wrapper/t/create_table_normalizer_comment.test | 2 +-
...create_table_normalizer_fulltext_index_bin.test | 2 +-
.../t/create_table_normalizer_parameter.test | 2 +-
.../wrapper/t/create_table_parser_comment.test | 2 +-
...token_filters_index_multiple_token_filters.test | 2 +-
...table_token_filters_index_one_token_filter.test | 2 +-
...create_table_token_filters_index_parameter.test | 2 +-
.../wrapper/t/create_table_tokenizer_comment.test | 2 +-
.../t/create_table_tokenizer_parameter.test | 2 +-
.../mroonga/wrapper/t/delete_TODO_SPLIT_ME.test | 2 +-
.../mysql-test/mroonga/wrapper/t/delete_all.test | 2 +-
.../wrapper/t/drop_table_new_connection.test | 2 +-
.../t/fulltext_boolean_mode_leading_not.test | 2 +-
...lltext_boolean_mode_multiple_match_against.test | 2 +-
..._pragma_default_operator_minus_no_operator.test | 2 +-
...mode_pragma_default_operator_minus_with_or.test | 2 +-
...de_pragma_default_operator_minus_with_plus.test | 2 +-
...ode_pragma_default_operator_or_no_operator.test | 2 +-
...mode_pragma_default_operator_or_with_minus.test | 2 +-
..._mode_pragma_default_operator_or_with_plus.test | 2 +-
...e_pragma_default_operator_plus_no_operator.test | 2 +-
...de_pragma_default_operator_plus_with_minus.test | 2 +-
..._mode_pragma_default_operator_plus_with_or.test | 2 +-
...ltext_boolean_mode_pragma_weight_full_spec.test | 2 +-
...ltext_boolean_mode_pragma_weight_no_weight.test | 2 +-
...xt_boolean_mode_pragma_weight_omit_section.test | 2 +-
.../mroonga/wrapper/t/fulltext_charset_ascii.test | 2 +-
.../mroonga/wrapper/t/fulltext_charset_cp932.test | 2 +-
.../wrapper/t/fulltext_charset_eucjpms.test | 2 +-
.../wrapper/t/fulltext_charset_japanese.test | 2 +-
.../mroonga/wrapper/t/fulltext_index_recreate.test | 2 +-
.../mroonga/wrapper/t/fulltext_insert_select.test | 2 +-
.../mroonga/wrapper/t/fulltext_insert_values.test | 2 +-
.../mroonga/wrapper/t/fulltext_many_records.test | 2 +-
...d_and_not_matched_have_where_matched_order.test | 2 +-
...atched_and_not_matched_have_where_no_order.test | 2 +-
...atched_and_not_matched_no_where_both_order.test | 2 +-
.../t/fulltext_multiple_column_index_delete.test | 2 +-
.../t/fulltext_multiple_column_index_insert.test | 2 +-
.../t/fulltext_multiple_column_index_recreate.test | 2 +-
.../t/fulltext_multiple_column_index_update.test | 2 +-
.../mroonga/wrapper/t/fulltext_multiple_index.test | 2 +-
.../mroonga/wrapper/t/fulltext_myisam.test | 2 +-
.../wrapper/t/fulltext_not_match_against.test | 2 +-
.../wrapper/t/fulltext_order_TODO_SPLIT_ME.test | 2 +-
.../wrapper/t/fulltext_order_transaction.test | 2 +-
.../t/function_last_insert_id_reference.test | 2 +-
.../wrapper/t/function_last_insert_id_set.test | 2 +-
.../mroonga/wrapper/t/geometry_contains.test | 2 +-
.../mroonga/wrapper/t/geometry_delete.test | 2 +-
.../mroonga/wrapper/t/geometry_update.test | 2 +-
.../wrapper/t/index_force_index_not_used.test | 2 +-
.../mroonga/wrapper/t/insert_TODO_SPLIT_ME.test | 2 +-
.../mysql-test/mroonga/wrapper/t/insert_bulk.test | 2 +-
..._update_multiple_column_primary_key_myisam.test | 2 +-
...update_multiple_column_unique_index_myisam.test | 2 +-
.../wrapper/t/multi_range_read_disk_sweep.test | 2 +-
...i_range_read_mysql_5_7_or_later_disk_sweep.test | 2 +-
.../t/optimization_order_limit_TODO_SPLIT_ME.test | 2 +-
.../t/optimization_order_limit_no_direction.test | 2 +-
.../optimization_order_limit_no_where_clause.test | 2 +-
...imization_order_limit_order_by_primary_key.test | 2 +-
.../mroonga/wrapper/t/performance_schema.test | 2 +-
.../mroonga/wrapper/t/repair_table_no_files.test | 2 +-
.../wrapper/t/repair_table_no_index_file.test | 2 +-
.../mroonga/wrapper/t/temporary_table.test | 2 +-
.../mroonga/wrapper/t/transaction_query_cache.test | 2 +-
.../t/transaction_rollback_delete_delete.test | 2 +-
.../t/transaction_rollback_delete_update.test | 2 +-
.../mysql-test/mroonga/wrapper/t/truncate.test | 2 +-
.../mroonga/wrapper/t/update_fulltext.test | 2 +-
.../mysql-test/mroonga/wrapper/t/update_int.test | 2 +-
.../wrapper/t/variable_dry_write_delete.test | 2 +-
.../wrapper/t/variable_dry_write_insert.test | 2 +-
.../wrapper/t/variable_dry_write_update.test | 2 +-
...variable_match_escalation_threshold_global.test | 2 +-
...ariable_match_escalation_threshold_session.test | 2 +-
storage/mroonga/packages/ubuntu/upload.rb | 2 +-
storage/mroonga/test/run-sql-test.sh | 2 +-
storage/mroonga/test/unit/test_mrn_path_mapper.cpp | 2 +-
storage/mroonga/tools/travis/before_script.sh | 2 +-
storage/mroonga/tools/travis/install.sh | 2 +-
storage/mroonga/tools/travis/script.sh | 2 +-
storage/mroonga/udf/mrn_udf_command.cpp | 2 +-
storage/mroonga/udf/mrn_udf_escape.cpp | 2 +-
storage/mroonga/udf/mrn_udf_highlight_html.cpp | 2 +-
storage/mroonga/udf/mrn_udf_last_insert_grn_id.cpp | 2 +-
storage/mroonga/udf/mrn_udf_normalize.cpp | 2 +-
storage/mroonga/udf/mrn_udf_query_expand.cpp | 2 +-
storage/mroonga/udf/mrn_udf_snippet.cpp | 2 +-
storage/mroonga/udf/mrn_udf_snippet_html.cpp | 2 +-
storage/mroonga/vendor/groonga/CMakeLists.txt | 16 +-
storage/mroonga/vendor/groonga/COPYING | 4 +-
.../groonga/benchmark/bench-between-sequential.c | 2 +-
.../mroonga/vendor/groonga/benchmark/bench-cache.c | 2 +-
.../vendor/groonga/benchmark/bench-ctx-create.c | 2 +-
.../vendor/groonga/benchmark/bench-geo-distance.c | 2 +-
.../vendor/groonga/benchmark/bench-geo-select.c | 2 +-
.../mroonga/vendor/groonga/benchmark/bench-nfkc.c | 2 +-
.../groonga/benchmark/bench-query-optimizer.c | 2 +-
.../vendor/groonga/benchmark/bench-range-select.c | 2 +-
.../vendor/groonga/benchmark/bench-result-set.c | 2 +-
.../vendor/groonga/benchmark/bench-table-factory.c | 2 +-
.../vendor/groonga/benchmark/lib/bench-reporter.c | 2 +-
.../vendor/groonga/benchmark/lib/bench-reporter.h | 2 +-
.../vendor/groonga/benchmark/lib/bench-utils.c | 2 +-
.../vendor/groonga/benchmark/lib/bench-utils.h | 2 +-
.../vendor/groonga/benchmark/lib/benchmark.c | 2 +-
.../vendor/groonga/benchmark/lib/benchmark.h | 2 +-
.../vendor/groonga/bindings/python/ql/groongaql.c | 2 +-
.../groonga/build/cmake_modules/ReadFileList.cmake | 2 +-
storage/mroonga/vendor/groonga/config.h.cmake | 1 +
.../mroonga/vendor/groonga/include/CMakeLists.txt | 2 +-
storage/mroonga/vendor/groonga/include/groonga.h | 2 +-
storage/mroonga/vendor/groonga/include/groonga.hpp | 2 +-
.../vendor/groonga/include/groonga/accessor.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/array.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/arrow.h | 2 +-
.../vendor/groonga/include/groonga/arrow.hpp | 2 +-
.../mroonga/vendor/groonga/include/groonga/cache.h | 2 +-
.../vendor/groonga/include/groonga/column.h | 2 +-
.../vendor/groonga/include/groonga/command.h | 2 +-
.../vendor/groonga/include/groonga/config.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/dat.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/db.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/dump.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/error.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/expr.h | 2 +-
.../vendor/groonga/include/groonga/file_reader.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/geo.h | 2 +-
.../vendor/groonga/include/groonga/groonga.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/hash.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/id.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/ii.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/nfkc.h | 2 +-
.../vendor/groonga/include/groonga/normalizer.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/obj.h | 2 +-
.../vendor/groonga/include/groonga/operator.h | 2 +-
.../vendor/groonga/include/groonga/output.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/pat.h | 2 +-
.../vendor/groonga/include/groonga/plugin.h | 2 +-
.../vendor/groonga/include/groonga/portability.h | 2 +-
.../groonga/include/groonga/request_canceler.h | 2 +-
.../vendor/groonga/include/groonga/request_timer.h | 2 +-
.../vendor/groonga/include/groonga/scorer.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/table.h | 2 +-
.../vendor/groonga/include/groonga/thread.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/time.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/token.h | 2 +-
.../vendor/groonga/include/groonga/token_filter.h | 2 +-
.../vendor/groonga/include/groonga/tokenizer.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/type.h | 2 +-
.../mroonga/vendor/groonga/include/groonga/util.h | 2 +-
.../groonga/include/groonga/window_function.h | 2 +-
.../vendor/groonga/include/groonga/windows.h | 2 +-
.../groonga/include/groonga/windows_event_logger.h | 2 +-
storage/mroonga/vendor/groonga/lib/CMakeLists.txt | 5 +-
storage/mroonga/vendor/groonga/lib/alloc.c | 2 +-
storage/mroonga/vendor/groonga/lib/arrow.cpp | 2 +-
storage/mroonga/vendor/groonga/lib/cache.c | 2 +-
storage/mroonga/vendor/groonga/lib/column.c | 2 +-
storage/mroonga/vendor/groonga/lib/com.c | 2 +-
storage/mroonga/vendor/groonga/lib/command.c | 2 +-
storage/mroonga/vendor/groonga/lib/config.c | 2 +-
storage/mroonga/vendor/groonga/lib/ctx.c | 2 +-
storage/mroonga/vendor/groonga/lib/ctx_impl_mrb.c | 2 +-
storage/mroonga/vendor/groonga/lib/dat.cpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/array.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/base.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/block.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/check.hpp | 2 +-
.../vendor/groonga/lib/dat/cursor-factory.cpp | 2 +-
.../vendor/groonga/lib/dat/cursor-factory.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/cursor.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/dat.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/entry.hpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/file-impl.cpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/file-impl.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/file.cpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/file.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/header.hpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/id-cursor.cpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/id-cursor.hpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/key-cursor.cpp | 2 +-
.../mroonga/vendor/groonga/lib/dat/key-cursor.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/key.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/node.hpp | 2 +-
.../vendor/groonga/lib/dat/predictive-cursor.cpp | 2 +-
.../vendor/groonga/lib/dat/predictive-cursor.hpp | 2 +-
.../vendor/groonga/lib/dat/prefix-cursor.cpp | 2 +-
.../vendor/groonga/lib/dat/prefix-cursor.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/string.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/trie.cpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/trie.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/dat/vector.hpp | 2 +-
storage/mroonga/vendor/groonga/lib/db.c | 2 +-
storage/mroonga/vendor/groonga/lib/dump.c | 2 +-
storage/mroonga/vendor/groonga/lib/error.c | 2 +-
storage/mroonga/vendor/groonga/lib/expr.c | 4 +-
storage/mroonga/vendor/groonga/lib/expr_code.c | 2 +-
storage/mroonga/vendor/groonga/lib/expr_executor.c | 2 +-
storage/mroonga/vendor/groonga/lib/file_lock.c | 2 +-
storage/mroonga/vendor/groonga/lib/file_reader.c | 2 +-
storage/mroonga/vendor/groonga/lib/geo.c | 2 +-
storage/mroonga/vendor/groonga/lib/grn.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_alloc.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_cache.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_com.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_config.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_ctx.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_ctx_impl.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_ctx_impl_mrb.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_dat.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_db.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_error.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_expr.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_expr_code.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_expr_executor.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_file_lock.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_geo.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_hash.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_ii.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_index_column.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_io.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_load.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_logger.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_mrb.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_msgpack.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_nfkc.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_normalizer.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_obj.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_output.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_pat.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_plugin.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_proc.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_raw_string.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_report.h | 2 +-
.../vendor/groonga/lib/grn_request_canceler.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_request_timer.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_rset.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_scanner.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_scorer.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_scorers.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_snip.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_store.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_str.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_string.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_time.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_token_cursor.h | 2 +-
.../mroonga/vendor/groonga/lib/grn_tokenizers.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_ts.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_util.h | 2 +-
.../vendor/groonga/lib/grn_window_function.h | 2 +-
.../vendor/groonga/lib/grn_window_functions.h | 2 +-
storage/mroonga/vendor/groonga/lib/grn_windows.h | 2 +-
storage/mroonga/vendor/groonga/lib/hash.c | 36 +-
storage/mroonga/vendor/groonga/lib/icudump.c | 2 +-
storage/mroonga/vendor/groonga/lib/id.c | 2 +-
storage/mroonga/vendor/groonga/lib/ii.c | 19 +-
storage/mroonga/vendor/groonga/lib/index_column.c | 2 +-
storage/mroonga/vendor/groonga/lib/io.c | 2 +-
storage/mroonga/vendor/groonga/lib/load.c | 2 +-
storage/mroonga/vendor/groonga/lib/logger.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_accessor.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_accessor.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_array.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_array.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_bulk.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_bulk.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_cache.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_cache.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_column.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_column.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_command.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_command.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_command_input.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_command_input.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_command_version.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_command_version.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_config.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_config.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_content_type.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_content_type.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_converter.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_converter.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_ctx.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_ctx.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_database.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_database.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_double_array_trie.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_double_array_trie.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_error.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_error.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_eval_context.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_eval_context.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_expr.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_expr.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_fixed_size_column.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_fixed_size_column.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_hash_table.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_hash_table.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_id.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_id.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_index_column.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_index_column.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_index_cursor.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_index_cursor.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_indexable.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_indexable.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_logger.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_logger.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_object.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_object.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_object_flags.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_object_flags.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_operator.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_operator.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_options.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_options.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_patricia_trie.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_patricia_trie.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_pointer.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_pointer.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_procedure.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_procedure.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_query_logger.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_query_logger.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_record.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_record.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_table.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_table.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_cursor.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_cursor.h | 2 +-
.../groonga/lib/mrb/mrb_table_cursor_flags.c | 2 +-
.../groonga/lib/mrb/mrb_table_cursor_flags.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_group_flags.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_group_flags.h | 2 +-
.../groonga/lib/mrb/mrb_table_group_result.c | 2 +-
.../groonga/lib/mrb/mrb_table_group_result.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_sort_flags.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_sort_flags.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_sort_key.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_table_sort_key.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_thread.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_thread.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_type.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_type.h | 2 +-
.../groonga/lib/mrb/mrb_variable_size_column.c | 2 +-
.../groonga/lib/mrb/mrb_variable_size_column.h | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_void.c | 2 +-
storage/mroonga/vendor/groonga/lib/mrb/mrb_void.h | 2 +-
.../vendor/groonga/lib/mrb/mrb_window_definition.c | 2 +-
.../vendor/groonga/lib/mrb/mrb_window_definition.h | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_writer.c | 2 +-
.../mroonga/vendor/groonga/lib/mrb/mrb_writer.h | 2 +-
storage/mroonga/vendor/groonga/lib/nfkc.c | 2 +-
storage/mroonga/vendor/groonga/lib/nfkc.rb | 4 +-
storage/mroonga/vendor/groonga/lib/nfkc50.c | 2 +-
storage/mroonga/vendor/groonga/lib/normalizer.c | 2 +-
storage/mroonga/vendor/groonga/lib/obj.c | 2 +-
storage/mroonga/vendor/groonga/lib/operator.c | 2 +-
storage/mroonga/vendor/groonga/lib/output.c | 2 +-
storage/mroonga/vendor/groonga/lib/pat.c | 16 +-
storage/mroonga/vendor/groonga/lib/plugin.c | 2 +-
storage/mroonga/vendor/groonga/lib/proc.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_column.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_config.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_dump.c | 2 +-
.../vendor/groonga/lib/proc/proc_fuzzy_search.c | 2 +-
.../vendor/groonga/lib/proc/proc_highlight.c | 2 +-
.../vendor/groonga/lib/proc/proc_in_records.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_lock.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_object.c | 2 +-
.../vendor/groonga/lib/proc/proc_object_inspect.c | 2 +-
.../vendor/groonga/lib/proc/proc_object_list.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_query.c | 2 +-
.../vendor/groonga/lib/proc/proc_query_log_flags.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_schema.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_select.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_snippet.c | 2 +-
.../mroonga/vendor/groonga/lib/proc/proc_table.c | 2 +-
.../vendor/groonga/lib/proc/proc_tokenize.c | 2 +-
storage/mroonga/vendor/groonga/lib/raw_string.c | 2 +-
storage/mroonga/vendor/groonga/lib/report.c | 2 +-
.../mroonga/vendor/groonga/lib/request_canceler.c | 2 +-
storage/mroonga/vendor/groonga/lib/request_timer.c | 2 +-
storage/mroonga/vendor/groonga/lib/rset.c | 2 +-
storage/mroonga/vendor/groonga/lib/scanner.c | 2 +-
storage/mroonga/vendor/groonga/lib/scorer.c | 2 +-
storage/mroonga/vendor/groonga/lib/scorers.c | 2 +-
storage/mroonga/vendor/groonga/lib/snip.c | 2 +-
storage/mroonga/vendor/groonga/lib/store.c | 2 +-
storage/mroonga/vendor/groonga/lib/str.c | 2 +-
storage/mroonga/vendor/groonga/lib/string.c | 2 +-
storage/mroonga/vendor/groonga/lib/table.c | 2 +-
storage/mroonga/vendor/groonga/lib/thread.c | 2 +-
storage/mroonga/vendor/groonga/lib/time.c | 2 +-
storage/mroonga/vendor/groonga/lib/token_cursor.c | 2 +-
storage/mroonga/vendor/groonga/lib/token_filter.c | 2 +-
storage/mroonga/vendor/groonga/lib/tokenizer.c | 2 +-
storage/mroonga/vendor/groonga/lib/tokenizers.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts.c | 4 +-
storage/mroonga/vendor/groonga/lib/ts/ts_buf.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_buf.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_cursor.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_cursor.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_expr.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_expr.h | 2 +-
.../vendor/groonga/lib/ts/ts_expr_builder.c | 2 +-
.../vendor/groonga/lib/ts/ts_expr_builder.h | 2 +-
.../mroonga/vendor/groonga/lib/ts/ts_expr_node.c | 55 +-
.../mroonga/vendor/groonga/lib/ts/ts_expr_node.h | 2 +-
.../mroonga/vendor/groonga/lib/ts/ts_expr_parser.c | 2 +-
.../mroonga/vendor/groonga/lib/ts/ts_expr_parser.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_log.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_op.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_op.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_plan.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_plan.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_sorter.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_sorter.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_str.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_str.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_types.h | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_util.c | 2 +-
storage/mroonga/vendor/groonga/lib/ts/ts_util.h | 2 +-
storage/mroonga/vendor/groonga/lib/type.c | 2 +-
storage/mroonga/vendor/groonga/lib/util.c | 2 +-
.../mroonga/vendor/groonga/lib/window_function.c | 2 +-
.../mroonga/vendor/groonga/lib/window_functions.c | 2 +-
storage/mroonga/vendor/groonga/lib/windows.c | 2 +-
.../vendor/groonga/lib/windows_event_logger.c | 2 +-
.../mroonga/vendor/groonga/plugins/CMakeLists.txt | 2 +-
.../plugins/expression_rewriters/CMakeLists.txt | 2 +-
.../groonga/plugins/functions/CMakeLists.txt | 2 +-
.../groonga/plugins/functions/index_column.c | 2 +-
.../vendor/groonga/plugins/functions/math.c | 2 +-
.../vendor/groonga/plugins/functions/number.c | 2 +-
.../vendor/groonga/plugins/functions/string.c | 2 +-
.../vendor/groonga/plugins/functions/time.c | 2 +-
.../vendor/groonga/plugins/functions/vector.c | 2 +-
.../groonga/plugins/query_expanders/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/query_expanders/tsv.c | 2 +-
.../vendor/groonga/plugins/ruby/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/sharding/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/suggest/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/suggest/suggest.c | 2 +-
.../groonga/plugins/token_filters/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/token_filters/stem.c | 2 +-
.../groonga/plugins/token_filters/stop_word.c | 2 +-
.../groonga/plugins/tokenizers/CMakeLists.txt | 2 +-
.../vendor/groonga/plugins/tokenizers/kytea.cpp | 2 +-
.../vendor/groonga/plugins/tokenizers/mecab.c | 2 +-
storage/mroonga/vendor/groonga/src/CMakeLists.txt | 2 +-
storage/mroonga/vendor/groonga/src/grndb.c | 2 +-
storage/mroonga/vendor/groonga/src/grnslap.c | 2 +-
storage/mroonga/vendor/groonga/src/groonga.c | 2 +-
.../mroonga/vendor/groonga/src/groonga_benchmark.c | 2 +-
storage/mroonga/vendor/groonga/src/groonga_mruby.c | 2 +-
.../httpd/nginx-module/ngx_http_groonga_module.c | 2 +-
.../vendor/groonga/src/suggest/CMakeLists.txt | 2 +-
.../src/suggest/groonga_suggest_create_dataset.c | 2 +-
.../groonga/src/suggest/groonga_suggest_httpd.c | 2 +-
.../groonga/src/suggest/groonga_suggest_learner.c | 2 +-
storage/mroonga/vendor/groonga/src/suggest/util.c | 2 +-
storage/mroonga/vendor/groonga/src/suggest/util.h | 2 +-
.../vendor/groonga/src/suggest/zmq_compatible.h | 2 +-
.../groonga/tools/groonga-object-list-checker.rb | 2 +-
.../groonga/tools/groonga-suggest-httpd-client.rb | 2 +-
.../mroonga/vendor/groonga/vendor/CMakeLists.txt | 2 +-
.../vendor/groonga/vendor/lz4/CMakeLists.txt | 2 +-
.../vendor/groonga/vendor/mecab/CMakeLists.txt | 2 +-
.../groonga/vendor/message_pack/CMakeLists.txt | 2 +-
.../vendor/groonga/vendor/mruby/CMakeLists.txt | 2 +-
.../vendor/groonga/vendor/onigmo/CMakeLists.txt | 2 +-
.../vendor/groonga/vendor/plugins/CMakeLists.txt | 2 +-
.../groonga-normalizer-mysql/CMakeLists.txt | 2 +-
.../plugins/groonga-normalizer-mysql/Makefile.am | 2 +-
.../plugins/groonga-normalizer-mysql/autogen.sh | 2 +-
.../groonga-normalizer-mysql/build/Makefile.am | 2 +-
.../build/cmake_modules/Makefile.am | 2 +-
.../build/cmake_modules/ReadFileList.cmake | 2 +-
.../plugins/groonga-normalizer-mysql/configure.ac | 2 +-
.../groonga-normalizer-mysql/data/travis/setup.sh | 2 +-
.../groonga-normalizer-mysql/doc/Makefile.am | 2 +-
.../groonga-normalizer-mysql/doc/text/Makefile.am | 2 +-
.../groonga-normalizer-mysql/doc/text/lgpl-2.0.txt | 4 +-
.../normalizers/CMakeLists.txt | 2 +-
.../normalizers/Makefile.am | 2 +-
.../groonga-normalizer-mysql/normalizers/mysql.c | 2 +-
.../normalizers/mysql_general_ci_table.h | 4 +-
...ept_kana_ci_kana_with_voiced_sound_mark_table.h | 4 +-
.../normalizers/mysql_unicode_520_ci_table.h | 4 +-
...ept_kana_ci_kana_with_voiced_sound_mark_table.h | 4 +-
.../normalizers/mysql_unicode_ci_table.h | 4 +-
.../packages/debian/copyright | 4 +-
.../tool/dump_difference_uca.rb | 2 +-
.../tool/dump_difference_utf8.rb | 2 +-
.../tool/generate_uca_table.rb | 6 +-
.../tool/generate_utf8_table.rb | 6 +-
.../groonga-normalizer-mysql/tool/parser.rb | 2 +-
.../tool/travis/before_script.sh | 2 +-
.../tool/travis/install.sh | 2 +-
storage/myisam/CMakeLists.txt | 2 +-
storage/myisam/NEWS | 4 +-
storage/myisam/ft_boolean_search.c | 4 +-
storage/myisam/ft_myisam.c | 2 +-
storage/myisam/ft_nlq_search.c | 4 +-
storage/myisam/ft_parser.c | 2 +-
storage/myisam/ft_static.c | 2 +-
storage/myisam/ft_stopwords.c | 2 +-
storage/myisam/ft_update.c | 2 +-
storage/myisam/ftbench/Ecompare.pl | 2 +-
storage/myisam/ftbench/Ecreate.pl | 2 +-
storage/myisam/ftbench/Ereport.pl | 2 +-
storage/myisam/ftbench/ft-test-run.sh | 2 +-
storage/myisam/ftdefs.h | 2 +-
storage/myisam/fulltext.h | 2 +-
storage/myisam/ha_myisam.cc | 24 +-
storage/myisam/ha_myisam.h | 2 +-
storage/myisam/mi_cache.c | 2 +-
storage/myisam/mi_changed.c | 2 +-
storage/myisam/mi_check.c | 18 +-
storage/myisam/mi_checksum.c | 2 +-
storage/myisam/mi_close.c | 19 +-
storage/myisam/mi_create.c | 6 +-
storage/myisam/mi_dbug.c | 2 +-
storage/myisam/mi_delete.c | 4 +-
storage/myisam/mi_delete_all.c | 2 +-
storage/myisam/mi_delete_table.c | 2 +-
storage/myisam/mi_dynrec.c | 6 +-
storage/myisam/mi_extra.c | 10 +-
storage/myisam/mi_extrafunc.h | 2 +-
storage/myisam/mi_info.c | 2 +-
storage/myisam/mi_key.c | 8 +-
storage/myisam/mi_keycache.c | 2 +-
storage/myisam/mi_locking.c | 10 +-
storage/myisam/mi_log.c | 2 +-
storage/myisam/mi_open.c | 10 +-
storage/myisam/mi_packrec.c | 4 +-
storage/myisam/mi_page.c | 2 +-
storage/myisam/mi_panic.c | 2 +-
storage/myisam/mi_preload.c | 2 +-
storage/myisam/mi_range.c | 2 +-
storage/myisam/mi_rename.c | 2 +-
storage/myisam/mi_rfirst.c | 4 +-
storage/myisam/mi_rkey.c | 2 +-
storage/myisam/mi_rlast.c | 2 +-
storage/myisam/mi_rnext.c | 2 +-
storage/myisam/mi_rnext_same.c | 2 +-
storage/myisam/mi_rprev.c | 2 +-
storage/myisam/mi_rrnd.c | 2 +-
storage/myisam/mi_rsame.c | 2 +-
storage/myisam/mi_rsamepos.c | 2 +-
storage/myisam/mi_scan.c | 2 +-
storage/myisam/mi_search.c | 4 +-
storage/myisam/mi_static.c | 2 +-
storage/myisam/mi_statrec.c | 2 +-
storage/myisam/mi_test1.c | 2 +-
storage/myisam/mi_test2.c | 2 +-
storage/myisam/mi_test3.c | 4 +-
storage/myisam/mi_test_all.sh | 6 +-
storage/myisam/mi_unique.c | 2 +-
storage/myisam/mi_update.c | 2 +-
storage/myisam/mi_write.c | 21 +-
storage/myisam/myisam_ftdump.c | 2 +-
storage/myisam/myisamchk.c | 8 +-
storage/myisam/myisamdef.h | 4 +-
storage/myisam/myisamlog.c | 12 +-
storage/myisam/myisampack.c | 6 +-
storage/myisam/rt_index.c | 2 +-
storage/myisam/rt_index.h | 2 +-
storage/myisam/rt_key.c | 2 +-
storage/myisam/rt_key.h | 2 +-
storage/myisam/rt_mbr.c | 2 +-
storage/myisam/rt_mbr.h | 2 +-
storage/myisam/rt_split.c | 2 +-
storage/myisam/rt_test.c | 2 +-
storage/myisam/sort.c | 4 +-
storage/myisam/sp_defs.h | 2 +-
storage/myisam/sp_key.c | 4 +-
storage/myisam/sp_test.c | 2 +-
storage/myisammrg/CMakeLists.txt | 2 +-
storage/myisammrg/ha_myisammrg.cc | 49 +-
storage/myisammrg/ha_myisammrg.h | 2 +-
storage/myisammrg/myrg_close.c | 2 +-
storage/myisammrg/myrg_create.c | 2 +-
storage/myisammrg/myrg_def.h | 2 +-
storage/myisammrg/myrg_delete.c | 2 +-
storage/myisammrg/myrg_extra.c | 2 +-
storage/myisammrg/myrg_info.c | 2 +-
storage/myisammrg/myrg_locking.c | 2 +-
storage/myisammrg/myrg_open.c | 2 +-
storage/myisammrg/myrg_panic.c | 2 +-
storage/myisammrg/myrg_queue.c | 2 +-
storage/myisammrg/myrg_range.c | 2 +-
storage/myisammrg/myrg_records.c | 2 +-
storage/myisammrg/myrg_rfirst.c | 2 +-
storage/myisammrg/myrg_rkey.c | 2 +-
storage/myisammrg/myrg_rlast.c | 2 +-
storage/myisammrg/myrg_rnext.c | 2 +-
storage/myisammrg/myrg_rnext_same.c | 2 +-
storage/myisammrg/myrg_rprev.c | 2 +-
storage/myisammrg/myrg_rrnd.c | 2 +-
storage/myisammrg/myrg_rsame.c | 2 +-
storage/myisammrg/myrg_static.c | 2 +-
storage/myisammrg/myrg_update.c | 2 +-
storage/myisammrg/myrg_write.c | 2 +-
.../mysql-test/storage_engine/disabled.def | 1 +
.../myisammrg/mysql-test/storage_engine/vcol.rdiff | 16 +-
storage/oqgraph/graphcore-config.h | 2 +-
storage/oqgraph/graphcore-graph.cc | 2 +-
storage/oqgraph/graphcore-graph.h | 2 +-
storage/oqgraph/graphcore-types.h | 2 +-
storage/oqgraph/graphcore.cc | 2 +-
storage/oqgraph/graphcore.h | 2 +-
storage/oqgraph/ha_oqgraph.cc | 2 +-
storage/oqgraph/ha_oqgraph.h | 2 +-
storage/oqgraph/oqgraph_judy.cc | 2 +-
storage/oqgraph/oqgraph_judy.h | 2 +-
storage/oqgraph/oqgraph_probes.d | 2 +-
storage/oqgraph/oqgraph_shim.cc | 2 +-
storage/oqgraph/oqgraph_shim.h | 2 +-
storage/oqgraph/oqgraph_thunk.cc | 2 +-
storage/oqgraph/oqgraph_thunk.h | 2 +-
storage/perfschema/CMakeLists.txt | 17 +-
storage/perfschema/cursor_by_account.cc | 15 +-
storage/perfschema/cursor_by_account.h | 15 +-
storage/perfschema/cursor_by_host.cc | 15 +-
storage/perfschema/cursor_by_host.h | 15 +-
storage/perfschema/cursor_by_thread.cc | 15 +-
storage/perfschema/cursor_by_thread.h | 15 +-
.../perfschema/cursor_by_thread_connect_attr.cc | 15 +-
storage/perfschema/cursor_by_thread_connect_attr.h | 15 +-
storage/perfschema/cursor_by_user.cc | 15 +-
storage/perfschema/cursor_by_user.h | 15 +-
storage/perfschema/gen_pfs_lex_token.cc | 15 +-
storage/perfschema/ha_perfschema.cc | 17 +-
storage/perfschema/ha_perfschema.h | 15 +-
storage/perfschema/pfs.cc | 15 +-
storage/perfschema/pfs.h | 15 +-
storage/perfschema/pfs_account.cc | 15 +-
storage/perfschema/pfs_account.h | 15 +-
storage/perfschema/pfs_atomic.h | 15 +-
storage/perfschema/pfs_autosize.cc | 15 +-
storage/perfschema/pfs_column_types.h | 15 +-
storage/perfschema/pfs_column_values.cc | 15 +-
storage/perfschema/pfs_column_values.h | 15 +-
storage/perfschema/pfs_con_slice.cc | 15 +-
storage/perfschema/pfs_con_slice.h | 15 +-
storage/perfschema/pfs_defaults.cc | 15 +-
storage/perfschema/pfs_defaults.h | 15 +-
storage/perfschema/pfs_digest.cc | 15 +-
storage/perfschema/pfs_digest.h | 15 +-
storage/perfschema/pfs_engine_table.cc | 15 +-
storage/perfschema/pfs_engine_table.h | 15 +-
storage/perfschema/pfs_events.h | 27 +-
storage/perfschema/pfs_events_stages.cc | 15 +-
storage/perfschema/pfs_events_stages.h | 15 +-
storage/perfschema/pfs_events_statements.cc | 15 +-
storage/perfschema/pfs_events_statements.h | 15 +-
storage/perfschema/pfs_events_waits.cc | 15 +-
storage/perfschema/pfs_events_waits.h | 49 +-
storage/perfschema/pfs_global.cc | 15 +-
storage/perfschema/pfs_global.h | 15 +-
storage/perfschema/pfs_host.cc | 15 +-
storage/perfschema/pfs_host.h | 15 +-
storage/perfschema/pfs_instr.cc | 20 +-
storage/perfschema/pfs_instr.h | 15 +-
storage/perfschema/pfs_instr_class.cc | 15 +-
storage/perfschema/pfs_instr_class.h | 15 +-
storage/perfschema/pfs_lock.h | 15 +-
storage/perfschema/pfs_server.cc | 15 +-
storage/perfschema/pfs_server.h | 15 +-
storage/perfschema/pfs_setup_actor.cc | 15 +-
storage/perfschema/pfs_setup_actor.h | 15 +-
storage/perfschema/pfs_setup_object.cc | 15 +-
storage/perfschema/pfs_setup_object.h | 15 +-
storage/perfschema/pfs_stat.h | 15 +-
storage/perfschema/pfs_timer.cc | 38 +-
storage/perfschema/pfs_timer.h | 17 +-
storage/perfschema/pfs_user.cc | 15 +-
storage/perfschema/pfs_user.h | 15 +-
storage/perfschema/pfs_visitor.cc | 15 +-
storage/perfschema/pfs_visitor.h | 15 +-
storage/perfschema/table_accounts.cc | 15 +-
storage/perfschema/table_accounts.h | 15 +-
storage/perfschema/table_all_instr.cc | 15 +-
storage/perfschema/table_all_instr.h | 15 +-
.../table_esgs_by_account_by_event_name.cc | 15 +-
.../table_esgs_by_account_by_event_name.h | 15 +-
.../perfschema/table_esgs_by_host_by_event_name.cc | 15 +-
.../perfschema/table_esgs_by_host_by_event_name.h | 15 +-
.../table_esgs_by_thread_by_event_name.cc | 15 +-
.../table_esgs_by_thread_by_event_name.h | 15 +-
.../perfschema/table_esgs_by_user_by_event_name.cc | 15 +-
.../perfschema/table_esgs_by_user_by_event_name.h | 15 +-
.../perfschema/table_esgs_global_by_event_name.cc | 15 +-
.../perfschema/table_esgs_global_by_event_name.h | 15 +-
.../table_esms_by_account_by_event_name.cc | 15 +-
.../table_esms_by_account_by_event_name.h | 15 +-
storage/perfschema/table_esms_by_digest.cc | 15 +-
storage/perfschema/table_esms_by_digest.h | 15 +-
.../perfschema/table_esms_by_host_by_event_name.cc | 15 +-
.../perfschema/table_esms_by_host_by_event_name.h | 15 +-
.../table_esms_by_thread_by_event_name.cc | 15 +-
.../table_esms_by_thread_by_event_name.h | 15 +-
.../perfschema/table_esms_by_user_by_event_name.cc | 15 +-
.../perfschema/table_esms_by_user_by_event_name.h | 15 +-
.../perfschema/table_esms_global_by_event_name.cc | 15 +-
.../perfschema/table_esms_global_by_event_name.h | 15 +-
storage/perfschema/table_events_stages.cc | 15 +-
storage/perfschema/table_events_stages.h | 15 +-
storage/perfschema/table_events_statements.cc | 15 +-
storage/perfschema/table_events_statements.h | 15 +-
storage/perfschema/table_events_waits.cc | 15 +-
storage/perfschema/table_events_waits.h | 15 +-
storage/perfschema/table_events_waits_summary.cc | 15 +-
storage/perfschema/table_events_waits_summary.h | 15 +-
.../table_ews_by_account_by_event_name.cc | 15 +-
.../table_ews_by_account_by_event_name.h | 15 +-
.../perfschema/table_ews_by_host_by_event_name.cc | 15 +-
.../perfschema/table_ews_by_host_by_event_name.h | 15 +-
.../table_ews_by_thread_by_event_name.cc | 15 +-
.../perfschema/table_ews_by_thread_by_event_name.h | 15 +-
.../perfschema/table_ews_by_user_by_event_name.cc | 15 +-
.../perfschema/table_ews_by_user_by_event_name.h | 15 +-
.../perfschema/table_ews_global_by_event_name.cc | 17 +-
.../perfschema/table_ews_global_by_event_name.h | 17 +-
storage/perfschema/table_file_instances.cc | 15 +-
storage/perfschema/table_file_instances.h | 15 +-
.../perfschema/table_file_summary_by_event_name.cc | 15 +-
.../perfschema/table_file_summary_by_event_name.h | 15 +-
.../perfschema/table_file_summary_by_instance.cc | 15 +-
.../perfschema/table_file_summary_by_instance.h | 15 +-
storage/perfschema/table_helper.cc | 15 +-
storage/perfschema/table_helper.h | 15 +-
storage/perfschema/table_host_cache.cc | 15 +-
storage/perfschema/table_host_cache.h | 15 +-
storage/perfschema/table_hosts.cc | 15 +-
storage/perfschema/table_hosts.h | 15 +-
storage/perfschema/table_os_global_by_type.cc | 15 +-
storage/perfschema/table_os_global_by_type.h | 15 +-
storage/perfschema/table_performance_timers.cc | 25 +-
storage/perfschema/table_performance_timers.h | 15 +-
.../table_session_account_connect_attrs.cc | 15 +-
.../table_session_account_connect_attrs.h | 15 +-
storage/perfschema/table_session_connect.cc | 15 +-
storage/perfschema/table_session_connect.h | 15 +-
storage/perfschema/table_session_connect_attrs.cc | 15 +-
storage/perfschema/table_session_connect_attrs.h | 15 +-
storage/perfschema/table_setup_actors.cc | 15 +-
storage/perfschema/table_setup_actors.h | 15 +-
storage/perfschema/table_setup_consumers.cc | 15 +-
storage/perfschema/table_setup_consumers.h | 15 +-
storage/perfschema/table_setup_instruments.cc | 15 +-
storage/perfschema/table_setup_instruments.h | 15 +-
storage/perfschema/table_setup_objects.cc | 15 +-
storage/perfschema/table_setup_objects.h | 15 +-
storage/perfschema/table_setup_timers.cc | 15 +-
storage/perfschema/table_setup_timers.h | 15 +-
storage/perfschema/table_socket_instances.cc | 15 +-
storage/perfschema/table_socket_instances.h | 15 +-
.../table_socket_summary_by_event_name.cc | 15 +-
.../table_socket_summary_by_event_name.h | 15 +-
.../perfschema/table_socket_summary_by_instance.cc | 15 +-
.../perfschema/table_socket_summary_by_instance.h | 15 +-
storage/perfschema/table_sync_instances.cc | 15 +-
storage/perfschema/table_sync_instances.h | 15 +-
storage/perfschema/table_threads.cc | 15 +-
storage/perfschema/table_threads.h | 15 +-
storage/perfschema/table_tiws_by_index_usage.cc | 15 +-
storage/perfschema/table_tiws_by_index_usage.h | 15 +-
storage/perfschema/table_tiws_by_table.cc | 15 +-
storage/perfschema/table_tiws_by_table.h | 15 +-
storage/perfschema/table_tlws_by_table.cc | 15 +-
storage/perfschema/table_tlws_by_table.h | 15 +-
storage/perfschema/table_users.cc | 15 +-
storage/perfschema/table_users.h | 15 +-
storage/perfschema/unittest/CMakeLists.txt | 19 +-
storage/perfschema/unittest/conf.txt | 15 +-
storage/perfschema/unittest/pfs-t.cc | 20 +-
storage/perfschema/unittest/pfs_account-oom-t.cc | 15 +-
storage/perfschema/unittest/pfs_connect_attr-t.cc | 15 +-
storage/perfschema/unittest/pfs_host-oom-t.cc | 15 +-
storage/perfschema/unittest/pfs_instr-oom-t.cc | 15 +-
storage/perfschema/unittest/pfs_instr-t.cc | 15 +-
.../perfschema/unittest/pfs_instr_class-oom-t.cc | 15 +-
storage/perfschema/unittest/pfs_instr_class-t.cc | 15 +-
storage/perfschema/unittest/pfs_misc-t.cc | 15 +-
storage/perfschema/unittest/pfs_server_stubs.cc | 17 +-
storage/perfschema/unittest/pfs_timer-t.cc | 17 +-
storage/perfschema/unittest/pfs_user-oom-t.cc | 15 +-
storage/perfschema/unittest/stub_pfs_defaults.h | 15 +-
storage/perfschema/unittest/stub_pfs_global.h | 15 +-
storage/perfschema/unittest/stub_print_error.h | 15 +-
storage/rocksdb/.clang-format | 96 +-
storage/rocksdb/CMakeLists.txt | 60 +-
storage/rocksdb/build_rocksdb.cmake | 271 +-
storage/rocksdb/event_listener.cc | 21 +-
storage/rocksdb/event_listener.h | 11 +-
storage/rocksdb/ha_rocksdb.cc | 6598 ++--
storage/rocksdb/ha_rocksdb.h | 729 +-
storage/rocksdb/ha_rocksdb_proto.h | 13 +-
storage/rocksdb/logger.h | 8 +-
storage/rocksdb/myrocks_hotbackup | 686 -
storage/rocksdb/myrocks_hotbackup.py | 698 +
storage/rocksdb/mysql-test/rocksdb/combinations | 5 +
.../rocksdb/include/autoinc_crash_safe.inc | 150 +
.../mysql-test/rocksdb/include/bulk_load.inc | 165 +
.../rocksdb/include/bulk_load_unsorted.inc | 143 +
.../rocksdb/include/bypass_create_table.inc | 298 +
.../mysql-test/rocksdb/include/group_min_max.inc | 1438 +
.../mysql-test/rocksdb/include/have_direct_io.inc | 23 +
.../rocksdb/include/have_write_committed.inc | 3 +
.../rocksdb/include/have_write_prepared.inc | 3 +
.../mysql-test/rocksdb/include/index_merge1.inc | 60 +
.../mysql-test/rocksdb/include/index_merge2.inc | 28 +
.../mysql-test/rocksdb/include/index_merge_ror.inc | 36 +
.../rocksdb/include/index_merge_ror_cpk.inc | 8 +
.../rocksdb/include/locking_issues_case3.inc | 5 +-
.../rocksdb/include/locking_issues_case4.inc | 5 +-
.../rocksdb/include/locking_issues_case5.inc | 5 +-
.../rocksdb/include/locking_issues_case6.inc | 5 +-
.../include/restart_mysqld_with_invalid_option.inc | 8 +
.../rocksdb/include/rocksdb_concurrent_delete.inc | 53 -
.../rocksdb/include/start_mysqld_with_option.inc | 14 +
.../rocksdb/include/use_direct_io_option.inc | 23 +
storage/rocksdb/mysql-test/rocksdb/my.cnf | 1 -
.../mysql-test/rocksdb/r/2pc_group_commit.result | 42 +-
.../mysql-test/rocksdb/r/add_index_inplace.result | 24 +
.../r/add_index_inplace_sstfilewriter.result | 7 +
.../rocksdb/r/allow_no_primary_key.result | 31 +
.../rocksdb/r/allow_no_primary_key_with_sk.result | 17 +
.../r/allow_to_start_after_corruption.result | 38 +
.../mysql-test/rocksdb/r/analyze_table.result | 26 +
.../mysql-test/rocksdb/r/autoinc_crash_safe.result | 132 +
.../rocksdb/r/autoinc_crash_safe_partition.result | 132 +
.../mysql-test/rocksdb/r/autoinc_debug.result | 99 +
.../mysql-test/rocksdb/r/autoinc_vars.result | 136 +
.../rocksdb/r/autoinc_vars_thread.result | 5 +-
.../mysql-test/rocksdb/r/autoincrement.result | 1 -
.../mysql-test/rocksdb/r/blind_delete_rc.result | 87 +
.../mysql-test/rocksdb/r/blind_delete_rr.result | 87 +
.../rocksdb/r/blind_delete_without_tx_api.result | 85 -
.../mysql-test/rocksdb/r/bloomfilter.result | 5 +
.../mysql-test/rocksdb/r/bloomfilter3.result | 18 +
.../mysql-test/rocksdb/r/bloomfilter5.result | 85 +
.../rocksdb/r/bloomfilter_bulk_load.result | 15 +
.../mysql-test/rocksdb/r/bloomfilter_skip.result | 5 +
.../rocksdb/mysql-test/rocksdb/r/bulk_load.result | 72 +-
.../rocksdb/r/bulk_load_drop_table.result | 11 +
.../mysql-test/rocksdb/r/bulk_load_errors.result | 64 +-
.../mysql-test/rocksdb/r/bulk_load_rev_cf.result | 72 +-
.../rocksdb/r/bulk_load_rev_cf_and_data.result | 72 +-
.../mysql-test/rocksdb/r/bulk_load_rev_data.result | 72 +-
.../mysql-test/rocksdb/r/bulk_load_sk.result | 229 +
.../mysql-test/rocksdb/r/bulk_load_unsorted.result | 107 +-
.../rocksdb/r/bulk_load_unsorted_rev.result | 108 +
.../rocksdb/r/bypass_select_basic.result | 693 +
.../rocksdb/r/bypass_select_basic_bloom.result | 693 +
.../mysql-test/rocksdb/r/cardinality.result | 52 +-
.../mysql-test/rocksdb/r/check_flags.result | 66 +
.../rocksdb/r/check_ignore_unknown_options.result | 7 +
.../mysql-test/rocksdb/r/col_opt_not_null.result | 4 +-
.../mysql-test/rocksdb/r/col_opt_null.result | 4 +-
.../rocksdb/mysql-test/rocksdb/r/collation.result | 20 +-
.../rocksdb/mysql-test/rocksdb/r/com_rpc_tx.result | 21 +
.../mysql-test/rocksdb/r/concurrent_alter.result | 2 +-
.../rocksdb/r/create_no_primary_key_table.result | 52 +
.../mysql-test/rocksdb/r/ddl_high_priority.result | 219 +-
.../mysql-test/rocksdb/r/deadlock_tracking.result | 114 +-
.../mysql-test/rocksdb/r/delete_before_lock.result | 22 -
.../rocksdb/mysql-test/rocksdb/r/drop_table.result | 19 +
.../mysql-test/rocksdb/r/explicit_snapshot.result | 265 +
.../mysql-test/rocksdb/r/force_shutdown.result | 38 +
.../mysql-test/rocksdb/r/group_min_max.result | 3504 ++
.../mysql-test/rocksdb/r/ha_extra_keyread.result | 10 +
.../rocksdb/mysql-test/rocksdb/r/i_s_ddl.result | 19 +-
.../mysql-test/rocksdb/r/i_s_deadlock.result | 216 +
.../mysql-test/rocksdb/r/index_file_map.result | 3 +
.../rocksdb/r/index_merge_rocksdb.result | 2 +-
.../rocksdb/r/index_merge_rocksdb2.result | 76 +-
.../mysql-test/rocksdb/r/information_schema.result | 8 +-
.../rocksdb/r/innodb_i_s_tables_disabled.result | 6 +-
.../mysql-test/rocksdb/r/insert_with_keys.result | 203 +-
.../rocksdb/mysql-test/rocksdb/r/issue255.result | 53 +-
.../rocksdb/mysql-test/rocksdb/r/issue884.result | 79 +
.../rocksdb/mysql-test/rocksdb/r/issue896.result | 17 +
.../rocksdb/mysql-test/rocksdb/r/issue900.result | 11 +
.../mysql-test/rocksdb/r/iterator_bounds.result | 15 +
storage/rocksdb/mysql-test/rocksdb/r/kill.result | 6 +
storage/rocksdb/mysql-test/rocksdb/r/lock.result | 15 +
.../rocksdb/r/lock_wait_timeout_stats.result | 8 +
.../mysql-test/rocksdb/r/locking_issues.result | 675 +-
.../rocksdb/r/locking_issues_case1_1_rc.result | 30 +
.../rocksdb/r/locking_issues_case1_1_rr.result | 30 +
.../rocksdb/r/locking_issues_case1_2_rc.result | 30 +
.../rocksdb/r/locking_issues_case1_2_rr.result | 30 +
.../rocksdb/r/locking_issues_case2_rc.result | 50 +
.../rocksdb/r/locking_issues_case2_rc_lsr.result | 37 +
.../rocksdb/r/locking_issues_case2_rr.result | 50 +
.../rocksdb/r/locking_issues_case2_rr_lsr.result | 37 +
.../rocksdb/r/locking_issues_case3_rc.result | 25 +
.../rocksdb/r/locking_issues_case3_rr.result | 23 +
.../rocksdb/r/locking_issues_case4_rc.result | 23 +
.../rocksdb/r/locking_issues_case4_rr.result | 23 +
.../rocksdb/r/locking_issues_case5_rc.result | 29 +
.../rocksdb/r/locking_issues_case5_rr.result | 28 +
.../rocksdb/r/locking_issues_case6_rc.result | 29 +
.../rocksdb/r/locking_issues_case6_rr.result | 28 +
.../rocksdb/r/locking_issues_case7_rc.result | 41 +
.../rocksdb/r/locking_issues_case7_rc_lsr.result | 45 +
.../rocksdb/r/locking_issues_case7_rr.result | 41 +
.../rocksdb/r/locking_issues_case7_rr_lsr.result | 45 +
.../rocksdb/r/mariadb_misc_binlog.result | 11 +-
.../mysql-test/rocksdb/r/mariadb_plugin.result | 12 +-
.../mysql-test/rocksdb/r/mariadb_port_fixes.result | 53 +-
.../mysql-test/rocksdb/r/max_open_files.result | 21 +
.../rocksdb/r/mysqlbinlog_blind_replace.result | 128 +
.../rocksdb/mysql-test/rocksdb/r/mysqldump.result | 87 +-
.../r/optimize_myrocks_replace_into_base.result | 98 +
.../r/optimize_myrocks_replace_into_lock.result | 46 +
.../rocksdb/r/optimizer_loose_index_scans.result | 42 +-
.../r/percona_nonflushing_analyze_debug.result | 19 +
.../mysql-test/rocksdb/r/perf_context.result | 32 +-
.../rocksdb/r/prefix_extractor_override.result | 14 +-
.../rocksdb/mysql-test/rocksdb/r/rocksdb.result | 144 +-
.../rocksdb/r/rocksdb_cf_per_partition.result | 2 +-
.../mysql-test/rocksdb/r/rocksdb_checksums.result | 29 +-
.../rocksdb/r/rocksdb_concurrent_delete.result | 603 +-
.../rocksdb/r/rocksdb_deadlock_detect_rc.result | 23 +-
.../rocksdb/r/rocksdb_deadlock_detect_rr.result | 23 +-
.../mysql-test/rocksdb/r/rocksdb_debug.result | 11 +
.../mysql-test/rocksdb/r/rocksdb_qcache.result | 6 +
.../mysql-test/rocksdb/r/rocksdb_range2.result | 19 +-
.../rocksdb/r/rocksdb_read_free_rpl.result | 335 +
.../rocksdb/r/rocksdb_read_free_rpl_stress.result | 35 +
.../rocksdb/r/rocksdb_timeout_rollback.result | 84 +
.../mysql-test/rocksdb/r/rpl_read_free.result | 321 -
.../rocksdb/r/rpl_row_not_found_rc.result | 56 +
.../mysql-test/rocksdb/r/rpl_statement.result | 4 +-
.../rocksdb/r/secondary_key_update_lock.result | 18 +
storage/rocksdb/mysql-test/rocksdb/r/select.result | 3 +-
.../mysql-test/rocksdb/r/show_engine.result | 105 +-
.../mysql-test/rocksdb/r/show_table_status.result | 6 +-
.../rocksdb/r/skip_core_dump_on_error.result | 31 +
.../rocksdb/r/skip_validate_tmp_table.result | 18 +-
.../rocksdb/mysql-test/rocksdb/r/statistics.result | 18 +-
.../rocksdb/r/tbl_opt_data_index_dir.result | 24 +-
.../mysql-test/rocksdb/r/transaction.result | 17 +
.../mysql-test/rocksdb/r/truncate_partition.result | 620 +
.../mysql-test/rocksdb/r/trx_info_rpl.result | 2 +-
.../rocksdb/r/ttl_primary_read_filtering.result | 29 +
.../mysql-test/rocksdb/r/ttl_rows_examined.result | 45 +
.../rocksdb/r/ttl_secondary_read_filtering.result | 1 +
.../rocksdb/mysql-test/rocksdb/r/type_bool.result | 4 +-
.../mysql-test/rocksdb/r/type_decimal.result | 6 +-
.../mysql-test/rocksdb/r/type_varchar.result | 14 +-
.../mysql-test/rocksdb/r/unique_check.result | 10 +-
storage/rocksdb/mysql-test/rocksdb/r/update.result | 8 +
.../use_direct_io_for_flush_and_compaction.result | 18 +
.../mysql-test/rocksdb/r/use_direct_reads.result | 18 +
.../rocksdb/r/use_direct_reads_writes.result | 32 +-
.../mysql-test/rocksdb/r/validate_datadic.result | 5 +-
.../rocksdb/mysql-test/rocksdb/r/write_sync.result | 5 +-
storage/rocksdb/mysql-test/rocksdb/r/xa.result | 32 +
.../rocksdb/mysql-test/rocksdb/slow_query_log.awk | 2 -
storage/rocksdb/mysql-test/rocksdb/suite.pm | 6 +-
.../mysql-test/rocksdb/t/2pc_group_commit.test | 53 +-
.../mysql-test/rocksdb/t/add_index_inplace.test | 18 +
.../rocksdb/t/add_index_inplace_crash.test | 1 +
.../rocksdb/t/add_index_inplace_sstfilewriter.test | 8 +
.../mysql-test/rocksdb/t/allow_no_primary_key.test | 28 +
.../rocksdb/t/allow_no_primary_key_with_sk.test | 12 +
.../t/allow_to_start_after_corruption-master.opt | 1 +
.../rocksdb/t/allow_to_start_after_corruption.test | 75 +
.../mysql-test/rocksdb/t/analyze_table.test | 26 +
.../mysql-test/rocksdb/t/autoinc_crash_safe.cnf | 8 +
.../mysql-test/rocksdb/t/autoinc_crash_safe.test | 9 +
.../rocksdb/t/autoinc_crash_safe_partition.cnf | 8 +
.../rocksdb/t/autoinc_crash_safe_partition.test | 10 +
.../mysql-test/rocksdb/t/autoinc_debug-master.opt | 1 +
.../mysql-test/rocksdb/t/autoinc_debug.test | 119 +
.../rocksdb/mysql-test/rocksdb/t/autoinc_vars.test | 104 +
.../mysql-test/rocksdb/t/autoinc_vars_thread.test | 10 +-
.../mysql-test/rocksdb/t/autoincrement.test | 3 -
.../mysql-test/rocksdb/t/blind_delete_rc.cnf | 11 +
.../mysql-test/rocksdb/t/blind_delete_rc.test | 3 +
.../mysql-test/rocksdb/t/blind_delete_rr.cnf | 11 +
.../mysql-test/rocksdb/t/blind_delete_rr.test | 3 +
.../rocksdb/t/blind_delete_without_tx_api.cnf | 11 -
.../rocksdb/t/blind_delete_without_tx_api.inc | 132 +
.../rocksdb/t/blind_delete_without_tx_api.test | 130 -
.../mysql-test/rocksdb/t/bloomfilter3-master.opt | 1 +
.../rocksdb/mysql-test/rocksdb/t/bloomfilter3.test | 18 +
.../mysql-test/rocksdb/t/bloomfilter5-master.opt | 3 +
.../rocksdb/mysql-test/rocksdb/t/bloomfilter5.test | 86 +
.../rocksdb/t/bloomfilter_bulk_load-master.opt | 2 +
.../rocksdb/t/bloomfilter_bulk_load.test | 35 +
.../rocksdb/t/bloomfilter_load_select.inc | 1 +
storage/rocksdb/mysql-test/rocksdb/t/bulk_load.inc | 156 -
.../rocksdb/mysql-test/rocksdb/t/bulk_load.test | 3 +-
.../mysql-test/rocksdb/t/bulk_load_drop_table.test | 19 +
.../mysql-test/rocksdb/t/bulk_load_errors.test | 124 +-
.../mysql-test/rocksdb/t/bulk_load_rev_cf.test | 3 +-
.../rocksdb/t/bulk_load_rev_cf_and_data.test | 3 +-
.../mysql-test/rocksdb/t/bulk_load_rev_data.test | 3 +-
.../rocksdb/mysql-test/rocksdb/t/bulk_load_sk.test | 119 +
.../mysql-test/rocksdb/t/bulk_load_unsorted.test | 134 +-
.../rocksdb/t/bulk_load_unsorted_rev.test | 5 +
.../mysql-test/rocksdb/t/bypass_select_basic.inc | 213 +
.../mysql-test/rocksdb/t/bypass_select_basic.test | 3 +
.../rocksdb/t/bypass_select_basic_bloom-master.opt | 3 +
.../rocksdb/t/bypass_select_basic_bloom.test | 3 +
.../rocksdb/mysql-test/rocksdb/t/cardinality.test | 63 +-
.../rocksdb/mysql-test/rocksdb/t/check_flags.test | 117 +
.../rocksdb/t/check_ignore_unknown_options.test | 56 +
.../rocksdb/mysql-test/rocksdb/t/collation.test | 36 +-
.../rocksdb/mysql-test/rocksdb/t/com_rpc_tx.cnf | 4 +
.../rocksdb/mysql-test/rocksdb/t/com_rpc_tx.test | 90 +
.../mysql-test/rocksdb/t/concurrent_alter.test | 2 +
.../rocksdb/t/cons_snapshot_read_committed.opt | 1 +
.../rocksdb/t/cons_snapshot_repeatable_read.opt | 1 +
.../rocksdb/t/cons_snapshot_serializable.opt | 1 +
.../t/create_no_primary_key_table-master.opt | 1 +
.../rocksdb/t/create_no_primary_key_table.test | 63 +
storage/rocksdb/mysql-test/rocksdb/t/deadlock.test | 1 +
.../mysql-test/rocksdb/t/deadlock_tracking.test | 78 +-
.../mysql-test/rocksdb/t/delete_before_lock.test | 36 -
storage/rocksdb/mysql-test/rocksdb/t/disabled.def | 25 +-
.../rocksdb/mysql-test/rocksdb/t/drop_table.test | 27 +
.../rocksdb/t/explicit_snapshot-master.opt | 1 +
.../mysql-test/rocksdb/t/explicit_snapshot.test | 263 +
.../mysql-test/rocksdb/t/force_shutdown.test | 97 +
.../mysql-test/rocksdb/t/group_min_max-master.opt | 1 +
.../mysql-test/rocksdb/t/group_min_max.test | 9 +
.../mysql-test/rocksdb/t/ha_extra_keyread.test | 15 +
storage/rocksdb/mysql-test/rocksdb/t/i_s_ddl.test | 7 +-
.../rocksdb/mysql-test/rocksdb/t/i_s_deadlock.test | 158 +
.../mysql-test/rocksdb/t/index_file_map.test | 3 +
.../mysql-test/rocksdb/t/index_merge_rocksdb.test | 7 +-
.../rocksdb/t/index_merge_rocksdb2-master.opt | 2 +-
.../mysql-test/rocksdb/t/index_merge_rocksdb2.test | 4 +-
.../mysql-test/rocksdb/t/information_schema.test | 5 +-
.../rocksdb/t/insert_optimized_config-master.opt | 7 -
.../rocksdb/t/insert_optimized_config.test | 10 +
.../mysql-test/rocksdb/t/insert_with_keys.test | 104 +-
storage/rocksdb/mysql-test/rocksdb/t/issue255.test | 38 +-
storage/rocksdb/mysql-test/rocksdb/t/issue884.test | 43 +
storage/rocksdb/mysql-test/rocksdb/t/issue896.test | 17 +
storage/rocksdb/mysql-test/rocksdb/t/issue900.test | 13 +
.../rocksdb/t/iterator_bounds-master.opt | 2 +
.../mysql-test/rocksdb/t/iterator_bounds.test | 29 +
storage/rocksdb/mysql-test/rocksdb/t/kill.test | 9 +
.../rocksdb/t/level_read_uncommitted.opt | 1 +
storage/rocksdb/mysql-test/rocksdb/t/lock.test | 22 +
.../rocksdb/t/lock_wait_timeout_stats.test | 4 +
.../mysql-test/rocksdb/t/locking_issues.test | 66 +-
.../rocksdb/t/locking_issues_case1_1_rc.test | 4 +
.../rocksdb/t/locking_issues_case1_1_rr.test | 4 +
.../rocksdb/t/locking_issues_case1_2_rc.test | 4 +
.../rocksdb/t/locking_issues_case1_2_rr.test | 4 +
.../rocksdb/t/locking_issues_case2_rc.test | 5 +
.../rocksdb/t/locking_issues_case2_rc_lsr.test | 5 +
.../rocksdb/t/locking_issues_case2_rr.test | 5 +
.../rocksdb/t/locking_issues_case2_rr_lsr.test | 5 +
.../rocksdb/t/locking_issues_case3_rc.test | 4 +
.../rocksdb/t/locking_issues_case3_rr.test | 4 +
.../rocksdb/t/locking_issues_case4_rc.test | 4 +
.../rocksdb/t/locking_issues_case4_rr.test | 4 +
.../rocksdb/t/locking_issues_case5_rc.test | 4 +
.../rocksdb/t/locking_issues_case5_rr.test | 4 +
.../rocksdb/t/locking_issues_case6_rc.test | 4 +
.../rocksdb/t/locking_issues_case6_rr.test | 4 +
.../rocksdb/t/locking_issues_case7_rc.test | 5 +
.../rocksdb/t/locking_issues_case7_rc_lsr.test | 5 +
.../rocksdb/t/locking_issues_case7_rr.test | 5 +
.../rocksdb/t/locking_issues_case7_rr_lsr.test | 5 +
.../mysql-test/rocksdb/t/mariadb_misc_binlog.test | 12 +-
.../mysql-test/rocksdb/t/mariadb_plugin.test | 16 +-
.../mysql-test/rocksdb/t/mariadb_port_fixes.test | 29 +
.../mysql-test/rocksdb/t/max_open_files.test | 53 +
.../rocksdb/t/mysqlbinlog_blind_replace.test | 62 +
.../rocksdb/mysql-test/rocksdb/t/mysqldump.test | 16 +-
.../rocksdb/mysql-test/rocksdb/t/mysqldump2.test | 2 +-
.../t/optimize_myrocks_replace_into_base.test | 96 +
.../t/optimize_myrocks_replace_into_lock.test | 88 +
.../t/percona_nonflushing_analyze_debug.test | 11 +
.../rocksdb/t/prefix_extractor_override.test | 18 +-
.../mysql-test/rocksdb/t/records_in_range.test | 2 +-
storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test | 17 +-
.../rocksdb/t/rocksdb_cf_per_partition.test | 1 +
.../rocksdb/t/rocksdb_checksums-master.opt | 1 +
.../mysql-test/rocksdb/t/rocksdb_checksums.test | 23 +-
.../rocksdb/t/rocksdb_concurrent_delete.inc | 109 +
.../rocksdb/t/rocksdb_concurrent_delete.test | 52 +-
.../rocksdb/t/rocksdb_concurrent_delete_main.inc | 30 +
.../rocksdb/t/rocksdb_concurrent_delete_range.inc | 85 +
.../rocksdb/t/rocksdb_concurrent_delete_sk.inc | 82 +
.../rocksdb/t/rocksdb_deadlock_detect.inc | 35 +-
.../mysql-test/rocksdb/t/rocksdb_debug.test | 14 +
.../mysql-test/rocksdb/t/rocksdb_locks.test | 5 +-
.../mysql-test/rocksdb/t/rocksdb_qcache.test | 13 +-
.../mysql-test/rocksdb/t/rocksdb_range2.test | 13 +
.../mysql-test/rocksdb/t/rocksdb_read_free_rpl.cnf | 16 +
.../rocksdb/t/rocksdb_read_free_rpl.test | 414 +
.../rocksdb/t/rocksdb_read_free_rpl_stress.cnf | 17 +
.../rocksdb/t/rocksdb_read_free_rpl_stress.inc | 69 +
.../rocksdb/t/rocksdb_read_free_rpl_stress.test | 22 +
.../rocksdb/t/rocksdb_timeout_rollback-master.opt | 1 +
.../rocksdb/t/rocksdb_timeout_rollback.test | 78 +
.../rocksdb/mysql-test/rocksdb/t/rpl_read_free.cnf | 14 -
.../mysql-test/rocksdb/t/rpl_read_free.test | 302 -
.../mysql-test/rocksdb/t/rpl_row_not_found_rc.cnf | 11 +
.../mysql-test/rocksdb/t/rpl_row_not_found_rc.test | 4 +
.../mysql-test/rocksdb/t/rpl_row_triggers.cnf | 4 +-
.../mysql-test/rocksdb/t/rpl_statement.test | 4 +-
.../rocksdb/mysql-test/rocksdb/t/rqg_examples.test | 4 +
.../rocksdb/mysql-test/rocksdb/t/rqg_runtime.test | 4 +
.../mysql-test/rocksdb/t/rqg_transactions.test | 4 +
.../rocksdb/t/secondary_key_update_lock.test | 26 +
storage/rocksdb/mysql-test/rocksdb/t/select.test | 4 +-
.../mysql-test/rocksdb/t/set_checkpoint.inc | 2 +-
.../rocksdb/mysql-test/rocksdb/t/show_engine.test | 13 +
.../rocksdb/t/skip_core_dump_on_error-master.opt | 1 +
.../rocksdb/t/skip_core_dump_on_error.test | 53 +
.../rocksdb/t/skip_validate_tmp_table.test | 38 +-
.../rocksdb/t/tbl_opt_data_index_dir.test | 14 +
.../rocksdb/mysql-test/rocksdb/t/transaction.test | 23 +
.../mysql-test/rocksdb/t/truncate_partition.inc | 102 +
.../mysql-test/rocksdb/t/truncate_partition.test | 83 +
.../rocksdb/mysql-test/rocksdb/t/trx_info_rpl.test | 4 +-
.../rocksdb/t/ttl_primary_read_filtering.test | 21 +-
.../mysql-test/rocksdb/t/ttl_rows_examined.test | 57 +
.../rocksdb/t/ttl_secondary_read_filtering.test | 3 +
.../rocksdb/mysql-test/rocksdb/t/type_varchar.test | 15 +-
.../rocksdb/mysql-test/rocksdb/t/unique_check.test | 14 +-
storage/rocksdb/mysql-test/rocksdb/t/update.test | 10 +
.../t/use_direct_io_for_flush_and_compaction.test | 5 +
.../mysql-test/rocksdb/t/use_direct_reads.test | 5 +
.../rocksdb/t/use_direct_reads_writes.test | 65 +-
.../mysql-test/rocksdb/t/validate_datadic.test | 25 +-
.../rocksdb/mysql-test/rocksdb/t/write_sync.test | 10 +-
storage/rocksdb/mysql-test/rocksdb/t/xa-master.opt | 1 +
storage/rocksdb/mysql-test/rocksdb/t/xa.test | 38 +
.../rocksdb_hotbackup/include/clean_tmpfiles.sh | 8 +
.../include/create_slocket_socket.sh | 2 +
.../rocksdb_hotbackup/include/create_table.sh | 2 +
.../rocksdb_hotbackup/include/load_data.sh | 2 +
.../rocksdb_hotbackup/include/load_data_and_run.sh | 2 +
.../rocksdb_hotbackup/include/load_data_slocket.sh | 2 +
.../include/remove_slocket_socket.sh | 2 +
.../include/setup_replication_gtid.sh | 2 +
.../rocksdb_hotbackup/include/stream_run.sh | 30 +-
.../rocksdb_hotbackup/r/xbstream_direct.result | 21 +
.../mysql-test/rocksdb_hotbackup/t/xbstream.inc | 25 +
.../mysql-test/rocksdb_hotbackup/t/xbstream.test | 30 +-
.../rocksdb_hotbackup/t/xbstream_direct-master.opt | 1 +
.../rocksdb_hotbackup/t/xbstream_direct.test | 7 +
.../rocksdb/mysql-test/rocksdb_rpl/combinations | 7 +-
.../rocksdb_rpl/include/rpl_gtid_crash_safe.inc | 37 +
.../include/rpl_no_unique_check_on_lag.inc | 1 +
storage/rocksdb/mysql-test/rocksdb_rpl/my.cnf | 1 -
.../r/optimize_myrocks_replace_into.result | 282 +
...sdb_slave_check_before_image_consistency.result | 165 +
.../r/rpl_gtid_crash_safe_optimized.result | 361 +
.../r/rpl_missing_columns_sk_update.result | 62 +
.../rpl_mts_dependency_unique_key_conflicts.result | 44 +
.../r/rpl_rocksdb_slave_gtid_info_optimized.result | 43 +
.../rocksdb_rpl/r/rpl_rocksdb_snapshot.result | 4 +-
.../r/singledelete_idempotent_recovery.result | 1 +
storage/rocksdb/mysql-test/rocksdb_rpl/suite.pm | 2 +-
.../rocksdb/mysql-test/rocksdb_rpl/t/combinations | 2 -
.../rocksdb/mysql-test/rocksdb_rpl/t/disabled.def | 7 +-
.../mysql-test/rocksdb_rpl/t/multiclient_2pc.test | 1 +
.../t/optimize_myrocks_replace_into.test | 149 +
..._slave_check_before_image_consistency-slave.opt | 1 +
...cksdb_slave_check_before_image_consistency.test | 22 +
.../rocksdb_rpl/t/rpl_gtid_crash_safe.test | 39 +-
.../t/rpl_gtid_crash_safe_optimized-master.opt | 1 +
.../t/rpl_gtid_crash_safe_optimized-slave.opt | 2 +
.../t/rpl_gtid_crash_safe_optimized.test | 11 +
.../t/rpl_gtid_crash_safe_wal_corrupt.inc | 2 +-
.../t/rpl_missing_columns_sk_update.cnf | 13 +
.../t/rpl_missing_columns_sk_update.test | 69 +
.../t/rpl_mts_dependency_unique_key_conflicts.test | 64 +
.../t/rpl_rocksdb_2pc_crash_recover.test | 1 +
...pl_rocksdb_slave_gtid_info_optimized-master.opt | 1 +
...rpl_rocksdb_slave_gtid_info_optimized-slave.opt | 1 +
.../t/rpl_rocksdb_slave_gtid_info_optimized.test | 51 +
.../t/singledelete_idempotent_recovery.test | 6 +
.../rocksdb/mysql-test/rocksdb_stress/combinations | 5 +
.../rocksdb_stress/include/have_rocksdb.inc | 10 +
.../rocksdb_stress/include/have_rocksdb.opt | 12 +
.../rocksdb_stress/include/rocksdb_stress.inc | 11 +-
storage/rocksdb/mysql-test/rocksdb_stress/my.cnf | 3 +-
.../rocksdb_stress/r/rocksdb_stress.result | 2 +
.../rocksdb_stress/r/rocksdb_stress_crash.result | 2 +
.../rocksdb/mysql-test/rocksdb_stress/suite.opt | 2 +
storage/rocksdb/mysql-test/rocksdb_stress/suite.pm | 28 +
.../mysql-test/rocksdb_stress/t/disabled.def | 2 +
.../mysql-test/rocksdb_stress/t/load_generator.py | 13 +
.../rocksdb_stress/t/rocksdb_stress.test | 4 +-
.../rocksdb_stress/t/rocksdb_stress_crash.test | 4 +-
storage/rocksdb/mysql-test/rocksdb_sys_vars/my.cnf | 1 -
...db_allow_to_start_after_corruption_basic.result | 7 +
.../r/rocksdb_block_cache_size_basic.result | 84 +-
.../r/rocksdb_bulk_load_allow_sk_basic.result | 100 +
.../r/rocksdb_bytes_per_sync_basic.result | 84 +-
.../r/rocksdb_cache_dump_basic.result | 19 +
.../rocksdb_cache_high_pri_pool_ratio_basic.result | 22 +
...ndex_and_filter_with_high_priority_basic.result | 19 +
...sdb_commit_time_batch_for_recovery_basic.result | 121 +
.../r/rocksdb_concurrent_prepare_basic.result | 14 -
.../r/rocksdb_create_checkpoint_basic.result | 2 +-
...ksdb_debug_manual_compaction_delay_basic.result | 46 +
.../r/rocksdb_delete_cf_basic.result | 6 +
..._enable_insert_with_update_caching_basic.result | 75 +
...ksdb_error_on_suboptimal_collation_basic.result | 7 +
.../rocksdb_flush_memtable_on_analyze_basic.result | 58 -
.../r/rocksdb_ignore_unknown_options_basic.result | 14 +
.../rocksdb_manual_compaction_threads_basic.result | 93 +
.../r/rocksdb_max_manifest_file_size_basic.result | 2 +-
.../r/rocksdb_max_manual_compactions_basic.result | 57 +
.../r/rocksdb_max_open_files_basic.result | 10 +-
.../r/rocksdb_max_row_locks_basic.result | 39 +-
.../r/rocksdb_read_free_rpl_basic.result | 58 +
.../r/rocksdb_read_free_rpl_tables_basic.result | 50 +-
...ksdb_remove_mariabackup_checkpoint_basic.result | 4 +
.../r/rocksdb_rollback_on_timeout_basic.result | 97 +
.../rocksdb_skip_unique_check_tables_basic.result | 2 +
.../r/rocksdb_stats_level_basic.result | 85 +
.../r/rocksdb_stats_recalc_rate_basic.result | 53 +
.../r/rocksdb_two_write_queues_basic.result | 14 +
.../r/rocksdb_update_cf_options.result | 38 +
.../r/rocksdb_update_cf_options_basic.result | 22 +-
.../r/rocksdb_wal_bytes_per_sync_basic.result | 84 +-
.../r/rocksdb_write_batch_max_bytes_basic.result | 4 +-
.../r/rocksdb_write_policy_basic.result | 15 +
.../rocksdb/mysql-test/rocksdb_sys_vars/suite.pm | 2 +-
.../mysql-test/rocksdb_sys_vars/t/disabled.def | 5 +
...ksdb_allow_to_start_after_corruption_basic.test | 6 +
.../t/rocksdb_block_cache_size_basic.test | 16 +-
.../t/rocksdb_bulk_load_allow_sk_basic.test | 18 +
.../t/rocksdb_bytes_per_sync_basic.test | 17 +-
.../t/rocksdb_cache_dump_basic.test | 21 +
.../t/rocksdb_cache_high_pri_pool_ratio_basic.test | 24 +
..._index_and_filter_with_high_priority_basic.test | 21 +
...cksdb_commit_time_batch_for_recovery_basic.test | 20 +
.../t/rocksdb_concurrent_prepare_basic.test | 16 -
.../t/rocksdb_create_checkpoint_basic.test | 2 +-
...ocksdb_debug_manual_compaction_delay_basic.test | 16 +
.../t/rocksdb_delete_cf_basic-master.opt | 1 +
.../t/rocksdb_delete_cf_basic.test | 75 +
...db_enable_insert_with_update_caching_basic.test | 21 +
...ocksdb_error_on_suboptimal_collation_basic.test | 6 +
.../t/rocksdb_flush_memtable_on_analyze_basic.test | 46 -
.../t/rocksdb_ignore_unknown_options_basic.test | 16 +
.../t/rocksdb_manual_compaction_threads_basic.test | 17 +
.../t/rocksdb_max_manual_compactions_basic.test | 17 +
.../t/rocksdb_max_open_files_basic.test | 10 +-
.../t/rocksdb_max_row_locks_basic.test | 1 +
.../t/rocksdb_read_free_rpl_basic.test | 19 +
.../t/rocksdb_read_free_rpl_tables_basic.test | 7 +-
...ocksdb_remove_mariabackup_checkpoint_basic.test | 5 +
.../t/rocksdb_rollback_on_timeout_basic.test | 21 +
.../t/rocksdb_skip_unique_check_tables_basic.test | 3 +
.../t/rocksdb_stats_level_basic.test | 21 +
.../t/rocksdb_stats_recalc_rate_basic.test | 17 +
.../t/rocksdb_two_write_queues_basic.test | 16 +
.../t/rocksdb_update_cf_options.test | 22 +
.../t/rocksdb_update_cf_options_basic.test | 28 +-
.../t/rocksdb_wal_bytes_per_sync_basic.test | 18 +-
.../t/rocksdb_write_batch_max_bytes_basic.test | 4 +-
.../t/rocksdb_write_policy_basic.test | 17 +
.../rocksdb/mysql-test/storage_engine/disabled.def | 1 +
storage/rocksdb/nosql_access.cc | 52 +
storage/rocksdb/nosql_access.h | 36 +
storage/rocksdb/patch/port/win/io_win.h | 446 -
storage/rocksdb/properties_collector.cc | 286 +-
storage/rocksdb/properties_collector.h | 95 +-
storage/rocksdb/rdb_buff.h | 140 +-
storage/rocksdb/rdb_cf_manager.cc | 114 +-
storage/rocksdb/rdb_cf_manager.h | 14 +-
storage/rocksdb/rdb_cf_options.cc | 78 +-
storage/rocksdb/rdb_cf_options.h | 19 +-
storage/rocksdb/rdb_compact_filter.h | 36 +-
storage/rocksdb/rdb_comparator.h | 54 +-
storage/rocksdb/rdb_converter.cc | 838 +
storage/rocksdb/rdb_converter.h | 247 +
storage/rocksdb/rdb_datadic.cc | 1999 +-
storage/rocksdb/rdb_datadic.h | 660 +-
storage/rocksdb/rdb_global.h | 392 +
storage/rocksdb/rdb_i_s.cc | 429 +-
storage/rocksdb/rdb_i_s.h | 6 +-
storage/rocksdb/rdb_index_merge.cc | 27 +-
storage/rocksdb/rdb_index_merge.h | 17 +-
storage/rocksdb/rdb_io_watchdog.cc | 15 +-
storage/rocksdb/rdb_io_watchdog.h | 16 +-
storage/rocksdb/rdb_mariadb_server_port.cc | 4 +-
storage/rocksdb/rdb_mutex_wrapper.cc | 21 +-
storage/rocksdb/rdb_mutex_wrapper.h | 42 +-
storage/rocksdb/rdb_perf_context.cc | 59 +-
storage/rocksdb/rdb_perf_context.h | 29 +-
storage/rocksdb/rdb_psi.cc | 34 +-
storage/rocksdb/rdb_psi.h | 12 +-
storage/rocksdb/rdb_sst_info.cc | 259 +-
storage/rocksdb/rdb_sst_info.h | 121 +-
storage/rocksdb/rdb_threads.cc | 14 +-
storage/rocksdb/rdb_threads.h | 56 +-
storage/rocksdb/rdb_utils.cc | 70 +-
storage/rocksdb/rdb_utils.h | 77 +-
storage/rocksdb/rocksdb | 2 +-
.../rocksdb/unittest/test_properties_collector.cc | 2 +-
storage/sequence/sequence.cc | 11 +-
storage/sphinx/ha_sphinx.cc | 27 +-
storage/sphinx/mysql-test/sphinx/disabled.def | 2 -
storage/sphinx/mysql-test/sphinx/sphinx.result | 20 +
storage/sphinx/mysql-test/sphinx/sphinx.test | 13 +
storage/sphinx/mysql-test/sphinx/suite.pm | 33 +-
storage/sphinx/mysql-test/sphinx/union-5539.result | 2 +
storage/spider/ha_spider.cc | 4 +-
storage/spider/ha_spider.h | 2 +-
storage/spider/hs_client/hs_compat.h | 2 +-
.../mysql-test/spider/include/init_child2_1.inc | 14 +
.../mysql-test/spider/include/init_master_1.inc | 4 +
.../mysql-test/spider/r/pushdown_not_like.result | 63 +
.../mysql-test/spider/r/spider_fixes_part.result | 49 +
.../mysql-test/spider/t/pushdown_not_like.test | 138 +
.../mysql-test/spider/t/spider_fixes_part.test | 109 +
storage/spider/scripts/install_spider.sql | 26 +-
storage/spider/spd_conn.cc | 31 +-
storage/spider/spd_conn.h | 2 +-
storage/spider/spd_copy_tables.cc | 86 +-
storage/spider/spd_copy_tables.h | 2 +-
storage/spider/spd_db_conn.cc | 7 +-
storage/spider/spd_db_conn.h | 2 +-
storage/spider/spd_db_handlersocket.cc | 2 +-
storage/spider/spd_db_handlersocket.h | 2 +-
storage/spider/spd_db_include.h | 4 +-
storage/spider/spd_db_mysql.cc | 39 +-
storage/spider/spd_db_mysql.h | 2 +-
storage/spider/spd_db_oracle.cc | 2 +-
storage/spider/spd_db_oracle.h | 2 +-
storage/spider/spd_direct_sql.cc | 118 +-
storage/spider/spd_direct_sql.h | 2 +-
storage/spider/spd_err.h | 2 +-
storage/spider/spd_i_s.cc | 2 +-
storage/spider/spd_include.h | 5 +-
storage/spider/spd_malloc.cc | 2 +-
storage/spider/spd_malloc.h | 4 +-
storage/spider/spd_param.cc | 40 +-
storage/spider/spd_param.h | 4 +-
storage/spider/spd_ping_table.cc | 24 +-
storage/spider/spd_ping_table.h | 2 +-
storage/spider/spd_sys_table.cc | 2 +-
storage/spider/spd_sys_table.h | 2 +-
storage/spider/spd_table.cc | 354 +-
storage/spider/spd_table.h | 218 +-
storage/spider/spd_trx.cc | 59 +-
storage/spider/spd_trx.h | 2 +-
storage/spider/spd_udf.cc | 2 +-
storage/spider/spd_udf.h | 2 +-
storage/test_sql_discovery/test_sql_discovery.cc | 2 +-
storage/tokudb/.clang-format | 40 +
storage/tokudb/CMakeLists.txt | 53 +-
storage/tokudb/PerconaFT/.clang-format | 36 +
storage/tokudb/PerconaFT/CMakeLists.txt | 6 +-
storage/tokudb/PerconaFT/COPYING.APACHEv2 | 174 +
storage/tokudb/PerconaFT/COPYING.GPLv2 | 4 +-
storage/tokudb/PerconaFT/DartConfig.cmake | 10 -
storage/tokudb/PerconaFT/README.md | 34 +-
.../PerconaFT/cmake/merge_archives_unix.cmake.in | 2 +-
.../PerconaFT/cmake_modules/TokuMergeLibs.cmake | 2 +-
.../cmake_modules/TokuSetupCompiler.cmake | 5 +-
.../PerconaFT/cmake_modules/TokuThirdParty.cmake | 34 -
.../tokudb/PerconaFT/ft/cachetable/cachetable.cc | 27 +-
.../tokudb/PerconaFT/ft/cachetable/cachetable.h | 8 +-
storage/tokudb/PerconaFT/ft/comparator.h | 14 +
.../tokudb/PerconaFT/ft/ft-cachetable-wrappers.cc | 13 +-
storage/tokudb/PerconaFT/ft/ft-flusher.cc | 44 +-
storage/tokudb/PerconaFT/ft/ft-internal.h | 21 +-
storage/tokudb/PerconaFT/ft/ft-ops.cc | 157 +-
storage/tokudb/PerconaFT/ft/ft-ops.h | 4 +-
storage/tokudb/PerconaFT/ft/ft-recount-rows.cc | 2 +-
storage/tokudb/PerconaFT/ft/ft-status.cc | 14 +
storage/tokudb/PerconaFT/ft/ft-status.h | 14 +
storage/tokudb/PerconaFT/ft/ft-test-helpers.cc | 5 +-
storage/tokudb/PerconaFT/ft/ft-verify.cc | 2 +-
storage/tokudb/PerconaFT/ft/ft.cc | 28 +-
storage/tokudb/PerconaFT/ft/ft.h | 13 +-
storage/tokudb/PerconaFT/ft/logger/logger.cc | 20 +-
storage/tokudb/PerconaFT/ft/node.cc | 20 +-
storage/tokudb/PerconaFT/ft/node.h | 21 +-
.../PerconaFT/ft/serialize/block_allocator.cc | 2 +-
.../tokudb/PerconaFT/ft/serialize/block_table.cc | 4 +-
.../PerconaFT/ft/serialize/ft-node-deserialize.cc | 2 +-
.../tokudb/PerconaFT/ft/serialize/ft-serialize.cc | 18 +-
.../PerconaFT/ft/serialize/ft_node-serialize.cc | 128 +-
.../tokudb/PerconaFT/ft/tests/cachetable-4357.cc | 4 -
.../tokudb/PerconaFT/ft/tests/cachetable-4365.cc | 4 -
.../tokudb/PerconaFT/ft/tests/cachetable-5097.cc | 6 +-
.../tokudb/PerconaFT/ft/tests/cachetable-5978-2.cc | 7 +-
.../tokudb/PerconaFT/ft/tests/cachetable-5978.cc | 13 +-
.../PerconaFT/ft/tests/cachetable-all-write.cc | 5 +-
.../ft/tests/cachetable-checkpoint-pending.cc | 8 +-
.../ft/tests/cachetable-checkpoint-pinned-nodes.cc | 6 +-
.../ft/tests/cachetable-cleaner-checkpoint.cc | 5 +-
.../ft/tests/cachetable-cleaner-checkpoint2.cc | 5 +-
.../cachetable-cleaner-thread-attrs-accumulate.cc | 8 +-
.../cachetable-cleaner-thread-everything-pinned.cc | 5 +-
...etable-cleaner-thread-nothing-needs-flushing.cc | 5 +-
.../cachetable-cleaner-thread-same-fullhash.cc | 7 +-
.../ft/tests/cachetable-cleaner-thread-simple.cc | 7 +-
.../ft/tests/cachetable-clock-eviction.cc | 9 +-
.../ft/tests/cachetable-clock-eviction2.cc | 9 +-
.../ft/tests/cachetable-clock-eviction3.cc | 9 +-
.../ft/tests/cachetable-clock-eviction4.cc | 9 +-
.../ft/tests/cachetable-clone-checkpoint.cc | 5 +-
.../cachetable-clone-partial-fetch-pinned-node.cc | 7 +-
.../ft/tests/cachetable-clone-partial-fetch.cc | 7 +-
.../ft/tests/cachetable-clone-pin-nonblocking.cc | 7 +-
.../ft/tests/cachetable-clone-unpin-remove.cc | 5 +-
.../ft/tests/cachetable-eviction-close-test.cc | 4 -
.../ft/tests/cachetable-eviction-close-test2.cc | 4 -
.../ft/tests/cachetable-eviction-getandpin-test.cc | 14 +-
.../tests/cachetable-eviction-getandpin-test2.cc | 12 +-
.../ft/tests/cachetable-fetch-inducing-evictor.cc | 15 +-
.../ft/tests/cachetable-flush-during-cleaner.cc | 3 +-
.../ft/tests/cachetable-getandpin-test.cc | 8 +-
.../cachetable-kibbutz_and_flush_cachefile.cc | 3 +-
.../PerconaFT/ft/tests/cachetable-partial-fetch.cc | 18 +-
.../ft/tests/cachetable-pin-checkpoint.cc | 6 -
.../cachetable-pin-nonblocking-checkpoint-clean.cc | 9 +-
.../ft/tests/cachetable-prefetch-close-test.cc | 2 -
.../ft/tests/cachetable-prefetch-getandpin-test.cc | 12 +-
.../ft/tests/cachetable-put-checkpoint.cc | 9 -
.../PerconaFT/ft/tests/cachetable-simple-clone.cc | 7 +-
.../PerconaFT/ft/tests/cachetable-simple-clone2.cc | 5 +-
.../PerconaFT/ft/tests/cachetable-simple-close.cc | 20 +-
.../ft/tests/cachetable-simple-maybe-get-pin.cc | 3 +-
.../ft/tests/cachetable-simple-pin-cheap.cc | 9 +-
.../ft/tests/cachetable-simple-pin-dep-nodes.cc | 8 +-
.../cachetable-simple-pin-nonblocking-cheap.cc | 19 +-
.../ft/tests/cachetable-simple-pin-nonblocking.cc | 13 +-
.../PerconaFT/ft/tests/cachetable-simple-pin.cc | 11 +-
.../ft/tests/cachetable-simple-put-dep-nodes.cc | 6 +-
.../cachetable-simple-read-pin-nonblocking.cc | 13 +-
.../ft/tests/cachetable-simple-read-pin.cc | 13 +-
.../cachetable-simple-unpin-remove-checkpoint.cc | 7 +-
.../PerconaFT/ft/tests/cachetable-simple-verify.cc | 5 +-
.../tokudb/PerconaFT/ft/tests/cachetable-test.cc | 22 +-
.../ft/tests/cachetable-unpin-and-remove-test.cc | 4 +-
.../cachetable-unpin-remove-and-checkpoint.cc | 6 +-
.../PerconaFT/ft/tests/cachetable-unpin-test.cc | 2 -
storage/tokudb/PerconaFT/ft/tests/ft-clock-test.cc | 4 +-
storage/tokudb/PerconaFT/ft/tests/log-test4.cc | 2 +-
storage/tokudb/PerconaFT/ft/tests/test-TDB2-pe.cc | 178 +
storage/tokudb/PerconaFT/ft/tests/test-TDB89.cc | 208 +
storage/tokudb/PerconaFT/ft/txn/rollback-apply.cc | 2 +
storage/tokudb/PerconaFT/ft/txn/rollback.cc | 6 +-
storage/tokudb/PerconaFT/ft/txn/txn.cc | 4 +
storage/tokudb/PerconaFT/ft/txn/txn_manager.h | 4 +-
storage/tokudb/PerconaFT/ftcxx/malloc_utils.cpp | 2 +-
storage/tokudb/PerconaFT/ftcxx/malloc_utils.hpp | 2 +-
.../tokudb/PerconaFT/ftcxx/tests/CMakeLists.txt | 4 +-
.../tokudb/PerconaFT/locktree/concurrent_tree.cc | 14 +
.../tokudb/PerconaFT/locktree/concurrent_tree.h | 14 +
storage/tokudb/PerconaFT/locktree/keyrange.cc | 14 +
storage/tokudb/PerconaFT/locktree/keyrange.h | 14 +
storage/tokudb/PerconaFT/locktree/lock_request.cc | 14 +
storage/tokudb/PerconaFT/locktree/lock_request.h | 14 +
storage/tokudb/PerconaFT/locktree/locktree.cc | 14 +
storage/tokudb/PerconaFT/locktree/locktree.h | 14 +
storage/tokudb/PerconaFT/locktree/manager.cc | 14 +
storage/tokudb/PerconaFT/locktree/range_buffer.cc | 14 +
storage/tokudb/PerconaFT/locktree/range_buffer.h | 14 +
storage/tokudb/PerconaFT/locktree/treenode.cc | 14 +
storage/tokudb/PerconaFT/locktree/treenode.h | 14 +
storage/tokudb/PerconaFT/locktree/txnid_set.cc | 14 +
storage/tokudb/PerconaFT/locktree/txnid_set.h | 14 +
storage/tokudb/PerconaFT/locktree/wfg.cc | 14 +
storage/tokudb/PerconaFT/locktree/wfg.h | 14 +
storage/tokudb/PerconaFT/portability/memory.cc | 45 +-
storage/tokudb/PerconaFT/portability/memory.h | 16 +-
.../tokudb/PerconaFT/portability/portability.cc | 2 +
.../PerconaFT/portability/tests/test-max-data.cc | 2 +-
storage/tokudb/PerconaFT/portability/toku_assert.h | 2 +-
storage/tokudb/PerconaFT/portability/toku_atomic.h | 14 +
.../tokudb/PerconaFT/portability/toku_debug_sync.h | 6 +-
.../PerconaFT/portability/toku_instr_mysql.cc | 27 +-
.../PerconaFT/portability/toku_instr_mysql.h | 11 +-
.../PerconaFT/portability/toku_instrumentation.h | 54 +-
.../PerconaFT/portability/toku_portability.h | 18 +-
.../tokudb/PerconaFT/portability/toku_pthread.cc | 14 +
.../tokudb/PerconaFT/portability/toku_pthread.h | 108 +-
.../tokudb/PerconaFT/portability/toku_race_tools.h | 18 +-
storage/tokudb/PerconaFT/portability/toku_time.cc | 14 +
storage/tokudb/PerconaFT/portability/toku_time.h | 19 +
.../scripts/run-nightly-coverage-tests.bash | 2 +-
.../PerconaFT/scripts/run-nightly-drd-tests.bash | 2 +-
.../scripts/run-nightly-release-tests.bash | 2 +-
storage/tokudb/PerconaFT/scripts/tokuvalgrind | 1 -
storage/tokudb/PerconaFT/src/CMakeLists.txt | 2 +-
.../PerconaFT/src/tests/checkpoint_stress.cc | 2 +-
.../tokudb/PerconaFT/src/tests/directory_lock.cc | 2 +-
storage/tokudb/PerconaFT/src/tests/get_last_key.cc | 32 +-
.../PerconaFT/src/tests/loader-cleanup-test.cc | 18 +-
.../src/tests/recover-del-multiple-abort.cc | 6 +-
.../recover-del-multiple-srcdb-fdelete-all.cc | 6 +-
.../PerconaFT/src/tests/recover-del-multiple.cc | 6 +-
.../src/tests/recover-put-multiple-abort.cc | 6 +-
.../PerconaFT/src/tests/recovery_fileops_unit.cc | 4 +-
.../tokudb/PerconaFT/src/tests/test-prepare3.cc | 1 +
storage/tokudb/PerconaFT/src/ydb.cc | 61 +-
storage/tokudb/PerconaFT/src/ydb_db.cc | 8 +-
storage/tokudb/PerconaFT/src/ydb_db.h | 1 +
storage/tokudb/PerconaFT/src/ydb_lib.cc | 2 +-
.../PerconaFT/third_party/snappy-1.1.2/aclocal.m4 | 4 +-
.../PerconaFT/third_party/snappy-1.1.2/configure | 2 +-
.../PerconaFT/third_party/snappy-1.1.2/ltmain.sh | 2 +-
.../third_party/xz-4.999.9beta/COPYING.GPLv2 | 4 +-
.../third_party/xz-4.999.9beta/COPYING.LGPLv2.1 | 4 +-
.../third_party/xz-4.999.9beta/autogen.sh | 0
.../third_party/xz-4.999.9beta/build-aux/compile | 0
.../xz-4.999.9beta/build-aux/config.guess | 0
.../xz-4.999.9beta/build-aux/config.rpath | 0
.../xz-4.999.9beta/build-aux/config.sub | 2 +-
.../third_party/xz-4.999.9beta/build-aux/depcomp | 0
.../xz-4.999.9beta/build-aux/install-sh | 0
.../third_party/xz-4.999.9beta/build-aux/ltmain.sh | 2 +-
.../third_party/xz-4.999.9beta/build-aux/missing | 0
.../PerconaFT/third_party/xz-4.999.9beta/configure | 2 +-
.../xz-4.999.9beta/extra/7z2lzma/7z2lzma.bash | 0
.../third_party/xz-4.999.9beta/lib/getopt.c | 2 +-
.../third_party/xz-4.999.9beta/lib/getopt.in.h | 2 +-
.../third_party/xz-4.999.9beta/lib/getopt1.c | 2 +-
.../third_party/xz-4.999.9beta/lib/getopt_int.h | 2 +-
.../third_party/xz-4.999.9beta/m4/libtool.m4 | 2 +-
.../xz-4.999.9beta/tests/test_compress.sh | 0
.../third_party/xz-4.999.9beta/tests/test_files.sh | 0
storage/tokudb/PerconaFT/tools/tokuftdump.cc | 2 +-
storage/tokudb/PerconaFT/util/dbt.h | 14 +
storage/tokudb/PerconaFT/util/dmt.cc | 4 +-
storage/tokudb/PerconaFT/util/growable_array.h | 14 +
storage/tokudb/PerconaFT/util/memarena.cc | 14 +
storage/tokudb/PerconaFT/util/memarena.h | 14 +
storage/tokudb/PerconaFT/util/minicron.cc | 3 +-
storage/tokudb/PerconaFT/util/omt.cc | 2262 +-
storage/tokudb/PerconaFT/util/omt.h | 22 +-
.../tokudb/PerconaFT/util/partitioned_counter.cc | 14 +
.../tokudb/PerconaFT/util/partitioned_counter.h | 14 +
storage/tokudb/PerconaFT/util/scoped_malloc.cc | 2 +-
storage/tokudb/PerconaFT/util/status.h | 14 +
.../util/tests/minicron-change-period-data-race.cc | 66 +
storage/tokudb/ha_tokudb.cc | 382 +-
storage/tokudb/ha_tokudb.h | 99 +-
storage/tokudb/ha_tokudb_admin.cc | 8 +-
storage/tokudb/ha_tokudb_alter_55.cc | 4 +
storage/tokudb/ha_tokudb_alter_56.cc | 265 +-
storage/tokudb/ha_tokudb_alter_common.cc | 6 +-
storage/tokudb/ha_tokudb_mrr_mysql.cc | 1 +
storage/tokudb/ha_tokudb_update.cc | 96 +-
storage/tokudb/hatoku_cmp.cc | 41 +-
storage/tokudb/hatoku_cmp.h | 14 +-
storage/tokudb/hatoku_defines.h | 65 +-
storage/tokudb/hatoku_hton.cc | 207 +-
storage/tokudb/hatoku_hton.h | 26 +-
storage/tokudb/mysql-test/rpl/disabled.def | 1 +
.../rpl/r/rpl_extra_col_master_tokudb.result | 6 +-
.../rpl/r/rpl_extra_col_slave_tokudb.result | 12 +-
.../mysql-test/rpl/r/rpl_mixed_replace_into.result | 23 +
.../rpl/r/rpl_parallel_tokudb_delete_pk.result | 5 -
...pl_parallel_tokudb_update_pk_uc0_lookup0.result | 5 -
.../rpl/r/rpl_parallel_tokudb_write_pk.result | 2 -
.../mysql-test/rpl/r/rpl_row_basic_3tokudb.result | 4 +-
.../mysql-test/rpl/r/rpl_row_replace_into.result | 23 +
.../mysql-test/rpl/r/rpl_stmt_replace_into.result | 23 +
.../mysql-test/rpl/r/rpl_tokudb_mixed_dml.result | 70 +-
.../rpl/r/rpl_tokudb_row_crash_safe.result | 2183 --
.../rpl/r/rpl_tokudb_stm_mixed_crash_safe.result | 1773 -
.../mysql-test/rpl/r/rpl_xa_interleave.result | 78 +
.../mysql-test/rpl/t/rpl_mixed_replace_into.test | 25 +
.../mysql-test/rpl/t/rpl_row_replace_into.test | 25 +
.../mysql-test/rpl/t/rpl_stmt_replace_into.test | 25 +
.../rpl/t/rpl_tokudb_row_crash_safe-master.opt | 1 -
.../rpl/t/rpl_tokudb_row_crash_safe-slave.opt | 1 -
.../rpl/t/rpl_tokudb_row_crash_safe.test | 19 -
.../t/rpl_tokudb_stm_mixed_crash_safe-master.opt | 1 -
.../t/rpl_tokudb_stm_mixed_crash_safe-slave.opt | 1 -
.../rpl/t/rpl_tokudb_stm_mixed_crash_safe.test | 18 -
.../tokudb/mysql-test/rpl/t/rpl_xa_interleave.test | 103 +
storage/tokudb/mysql-test/tokudb/disabled.def | 4 +-
.../tokudb/include/fast_update_gen_footer.inc | 2 +
.../include/fast_update_gen_footer_silent.inc | 9 +
.../tokudb/include/fast_update_gen_header.inc | 6 +
.../mysql-test/tokudb/include/fast_update_int.inc | 48 +
.../tokudb/include/fast_upsert_gen_header.inc | 6 +
.../mysql-test/tokudb/include/fast_upsert_int.inc | 19 +
.../tokudb/mysql-test/tokudb/include/have_mrr.inc | 0
.../tokudb/include/setup_fast_update_upsert.inc | 8 +
.../tokudb/mysql-test/tokudb/r/compressions.result | 11 +
.../dir_per_db_rename_to_nonexisting_schema.result | 1 +
.../mysql-test/tokudb/r/ext_key_1_innodb.result | 3 -
.../mysql-test/tokudb/r/ext_key_1_tokudb.result | 3 -
.../mysql-test/tokudb/r/ext_key_2_innodb.result | 3 -
.../mysql-test/tokudb/r/ext_key_2_tokudb.result | 3 -
.../tokudb/r/fast_update_binlog_mixed.result | 225 +-
.../tokudb/r/fast_update_binlog_row.result | 19 +-
.../tokudb/r/fast_update_binlog_statement.result | 222 +-
.../mysql-test/tokudb/r/fast_update_blobs.result | 18253 +---------
.../r/fast_update_blobs_fixed_varchar.result | 33026 ------------------
.../tokudb/r/fast_update_blobs_with_varchar.result | 32771 +-----------------
.../mysql-test/tokudb/r/fast_update_char.result | 60 +-
.../tokudb/r/fast_update_deadlock.result | 19 +-
.../tokudb/r/fast_update_decr_floor.result | 314 +-
.../r/fast_update_disable_slow_update.result | 7 -
.../mysql-test/tokudb/r/fast_update_error.result | 12 +-
.../mysql-test/tokudb/r/fast_update_int.result | 562 +-
.../tokudb/r/fast_update_int_bounds.result | 52 +-
.../mysql-test/tokudb/r/fast_update_key.result | 54 +-
.../mysql-test/tokudb/r/fast_update_sqlmode.result | 21 +-
.../tokudb/r/fast_update_uint_bounds.result | 36 +-
.../mysql-test/tokudb/r/fast_update_varchar.result | 13575 +-------
.../mysql-test/tokudb/r/fast_upsert_bin_pad.result | Bin 659 -> 738 bytes
.../mysql-test/tokudb/r/fast_upsert_char.result | 24 +-
.../tokudb/r/fast_upsert_deadlock.result | 19 +-
.../mysql-test/tokudb/r/fast_upsert_int.result | 428 +-
.../mysql-test/tokudb/r/fast_upsert_key.result | 43 +-
.../mysql-test/tokudb/r/fast_upsert_sqlmode.result | 23 +-
.../mysql-test/tokudb/r/fast_upsert_values.result | 18 +-
storage/tokudb/mysql-test/tokudb/r/mvcc-29.result | 4 +-
storage/tokudb/mysql-test/tokudb/r/mvcc-30.result | 4 +-
storage/tokudb/mysql-test/tokudb/r/mvcc-31.result | 4 +-
.../tokudb/mysql-test/tokudb/r/tokudb_mrr.result | 334 +
.../tokudb/mysql-test/tokudb/r/type_date.result | 6 +-
.../mysql-test/tokudb/r/type_datetime.result | 4 +-
.../tokudb/mysql-test/tokudb/r/type_decimal.result | 4 +-
.../tokudb/mysql-test/tokudb/r/type_float.result | 2 +-
.../mysql-test/tokudb/r/type_newdecimal.result | 2 +-
storage/tokudb/mysql-test/tokudb/suite.pm | 6 +
.../mysql-test/tokudb/t/change_column_Makefile | 10 +-
.../mysql-test/tokudb/t/change_column_bin.py | 2 +-
.../tokudb/t/change_column_bin_rename.py | 2 +-
.../mysql-test/tokudb/t/change_column_char.py | 2 +-
.../tokudb/t/change_column_char_binary.py | 2 +-
.../tokudb/t/change_column_char_charbinary.py | 2 +-
.../tokudb/t/change_column_char_rename.py | 2 +-
.../mysql-test/tokudb/t/change_column_int.py | 2 +-
.../mysql-test/tokudb/t/change_column_int_key.py | 2 +-
.../tokudb/t/change_column_int_not_supported.py | 2 +-
.../tokudb/t/change_column_int_rename.py | 2 +-
.../tokudb/mysql-test/tokudb/t/cluster_2968-0.test | 1 +
.../tokudb/mysql-test/tokudb/t/cluster_2968-1.test | 1 +
.../tokudb/mysql-test/tokudb/t/cluster_2968-2.test | 1 +
.../tokudb/mysql-test/tokudb/t/cluster_2968-3.test | 2 +
.../tokudb/mysql-test/tokudb/t/compressions.test | 68 +
storage/tokudb/mysql-test/tokudb/t/disabled.def | 24 -
.../mysql-test/tokudb/t/ext_key_1_innodb.test | 2 -
.../mysql-test/tokudb/t/ext_key_1_tokudb.test | 2 -
.../mysql-test/tokudb/t/ext_key_2_innodb.test | 2 -
.../mysql-test/tokudb/t/ext_key_2_tokudb.test | 2 -
.../mysql-test/tokudb/t/fast_update_Makefile | 4 +-
.../tokudb/t/fast_update_binlog_mixed-master.opt | 2 +
.../tokudb/t/fast_update_binlog_mixed.test | 15 +-
.../tokudb/t/fast_update_binlog_row-master.opt | 2 +
.../tokudb/t/fast_update_binlog_row.test | 19 +-
.../t/fast_update_binlog_statement-master.opt | 2 +
.../tokudb/t/fast_update_binlog_statement.test | 15 +-
.../mysql-test/tokudb/t/fast_update_blobs.py | 57 -
.../mysql-test/tokudb/t/fast_update_blobs.test | 18575 +----------
.../tokudb/t/fast_update_blobs_fixed_varchar.py | 63 -
.../tokudb/t/fast_update_blobs_fixed_varchar.test | 33287 -------------------
.../tokudb/t/fast_update_blobs_with_varchar.py | 62 -
.../tokudb/t/fast_update_blobs_with_varchar.test | 33115 +-----------------
.../mysql-test/tokudb/t/fast_update_char.test | 66 +-
.../mysql-test/tokudb/t/fast_update_deadlock.test | 21 +-
.../mysql-test/tokudb/t/fast_update_decr_floor.py | 58 -
.../tokudb/t/fast_update_decr_floor.test | 409 +-
.../tokudb/t/fast_update_disable_slow_update.test | 17 -
.../mysql-test/tokudb/t/fast_update_error.test | 16 +-
.../tokudb/mysql-test/tokudb/t/fast_update_int.py | 77 -
.../mysql-test/tokudb/t/fast_update_int.test | 682 +-
.../tokudb/t/fast_update_int_bounds.test | 55 +-
.../mysql-test/tokudb/t/fast_update_key.test | 63 +-
.../mysql-test/tokudb/t/fast_update_sqlmode.test | 25 +-
.../tokudb/t/fast_update_uint_bounds.test | 42 +-
.../mysql-test/tokudb/t/fast_update_varchar.py | 63 -
.../mysql-test/tokudb/t/fast_update_varchar.test | 7390 +---
.../mysql-test/tokudb/t/fast_upsert_bin_pad.test | 19 +-
.../mysql-test/tokudb/t/fast_upsert_char.test | 27 +-
.../mysql-test/tokudb/t/fast_upsert_deadlock.test | 22 +-
.../tokudb/mysql-test/tokudb/t/fast_upsert_int.py | 50 -
.../mysql-test/tokudb/t/fast_upsert_int.test | 486 +-
.../mysql-test/tokudb/t/fast_upsert_key.test | 46 +-
.../mysql-test/tokudb/t/fast_upsert_sqlmode.test | 27 +-
.../mysql-test/tokudb/t/fast_upsert_values.test | 21 +-
storage/tokudb/mysql-test/tokudb/t/tokudb_mrr.test | 73 +
.../tokudb/mysql-test/tokudb/t/type_varchar.opt | 1 +
.../tokudb/mysql-test/tokudb/t/type_varchar.test | 1 +
.../tokudb/mysql-test/tokudb_bugs/r/2970.result | 2 +-
.../tokudb/mysql-test/tokudb_bugs/r/PS-3773.result | 8 +
.../tokudb/mysql-test/tokudb_bugs/r/PS-4979.result | 2 +
.../tokudb/mysql-test/tokudb_bugs/r/PS-5158.result | 6 +
.../tokudb/mysql-test/tokudb_bugs/r/PS-5163.result | 5 +
.../r/alter_table_comment_rebuild_data.result | 177 +
.../tokudb_bugs/r/rpl_mixed_replace_into.result | 23 -
.../tokudb_bugs/r/rpl_row_replace_into.result | 23 -
.../tokudb_bugs/r/rpl_stmt_replace_into.result | 23 -
.../tokudb/mysql-test/tokudb_bugs/t/PS-3773.test | 26 +
.../tokudb/mysql-test/tokudb_bugs/t/PS-4979.test | 13 +
.../mysql-test/tokudb_bugs/t/PS-5158-master.opt | 2 +
.../tokudb/mysql-test/tokudb_bugs/t/PS-5158.test | 27 +
.../tokudb/mysql-test/tokudb_bugs/t/PS-5163.test | 11 +
.../t/alter_table_comment_rebuild_data.test | 188 +
.../tokudb_bugs/t/rpl_mixed_replace_into.test | 25 -
.../tokudb_bugs/t/rpl_row_replace_into.test | 25 -
.../tokudb_bugs/t/rpl_stmt_replace_into.test | 25 -
.../tokudb/mysql-test/tokudb_parts/disabled.def | 1 +
.../r/partition_debug_sync_tokudb.result | 3 +
.../tokudb_parts/r/partition_debug_tokudb.result | 430 +-
.../t/partition_debug_sync_tokudb-master.opt | 1 -
.../t/partition_debug_tokudb-master.opt | 1 -
.../t/partition_special_tokudb-master.opt | 1 -
storage/tokudb/tests/math_test_int.cc | 162 +-
storage/tokudb/tests/math_test_uint.cc | 84 +-
storage/tokudb/tests/sint_test.cc | 1 -
storage/tokudb/tests/tokudb_buffer_test.cc | 11 +-
storage/tokudb/tests/uint_test.cc | 1 -
storage/tokudb/tests/vlq_test.cc | 9 +-
storage/tokudb/tests/vlq_test_uint32.cc | 15 +-
storage/tokudb/tests/vlq_test_uint64.cc | 15 +-
storage/tokudb/tokudb.cnf | 6 -
storage/tokudb/tokudb.cnf.in | 8 +
storage/tokudb/tokudb.conf.in | 2 +
storage/tokudb/tokudb_background.cc | 4 +-
storage/tokudb/tokudb_buffer.h | 4 +-
storage/tokudb/tokudb_debug.h | 5 -
storage/tokudb/tokudb_dir_cmd.h | 6 +-
storage/tokudb/tokudb_information_schema.cc | 74 +-
storage/tokudb/tokudb_math.h | 6 +-
storage/tokudb/tokudb_status.h | 4 +-
storage/tokudb/tokudb_sysvars.cc | 136 +-
storage/tokudb/tokudb_sysvars.h | 20 +-
storage/tokudb/tokudb_thread.h | 75 +-
storage/tokudb/tokudb_update_fun.cc | 230 +-
storage/xtradb/.clang-format | 111 +
storage/xtradb/CMakeLists.txt | 39 +-
storage/xtradb/api/api0api.cc | 2 +-
storage/xtradb/api/api0misc.cc | 2 +-
storage/xtradb/btr/btr0btr.cc | 2 +-
storage/xtradb/btr/btr0cur.cc | 2 +-
storage/xtradb/btr/btr0defragment.cc | 68 +-
storage/xtradb/btr/btr0pcur.cc | 2 +-
storage/xtradb/btr/btr0scrub.cc | 2 +-
storage/xtradb/btr/btr0sea.cc | 17 +-
storage/xtradb/buf/buf0buddy.cc | 13 +-
storage/xtradb/buf/buf0buf.cc | 755 +-
storage/xtradb/buf/buf0checksum.cc | 2 +-
storage/xtradb/buf/buf0dblwr.cc | 82 +-
storage/xtradb/buf/buf0dump.cc | 11 +-
storage/xtradb/buf/buf0flu.cc | 4 +-
storage/xtradb/buf/buf0lru.cc | 75 +-
storage/xtradb/buf/buf0mtflu.cc | 2 +-
storage/xtradb/buf/buf0rea.cc | 2 +-
storage/xtradb/data/data0data.cc | 5 +-
storage/xtradb/data/data0type.cc | 2 +-
storage/xtradb/dict/dict0boot.cc | 2 +-
storage/xtradb/dict/dict0crea.cc | 17 +-
storage/xtradb/dict/dict0dict.cc | 267 +-
storage/xtradb/dict/dict0load.cc | 9 +-
storage/xtradb/dict/dict0mem.cc | 16 +-
storage/xtradb/dict/dict0stats.cc | 19 +-
storage/xtradb/dict/dict0stats_bg.cc | 20 +-
storage/xtradb/dyn/dyn0dyn.cc | 2 +-
storage/xtradb/eval/eval0eval.cc | 5 +-
storage/xtradb/eval/eval0proc.cc | 2 +-
storage/xtradb/fil/fil0crypt.cc | 266 +-
storage/xtradb/fil/fil0fil.cc | 183 +-
storage/xtradb/fil/fil0pagecompress.cc | 698 +-
storage/xtradb/fsp/fsp0fsp.cc | 8 +-
storage/xtradb/fts/fts0ast.cc | 11 +-
storage/xtradb/fts/fts0blex.cc | 1116 +-
storage/xtradb/fts/fts0blex.l | 2 +-
storage/xtradb/fts/fts0config.cc | 26 +-
storage/xtradb/fts/fts0fts.cc | 494 +-
storage/xtradb/fts/fts0opt.cc | 765 +-
storage/xtradb/fts/fts0pars.cc | 16 +-
storage/xtradb/fts/fts0pars.y | 18 +-
storage/xtradb/fts/fts0que.cc | 74 +-
storage/xtradb/fts/fts0sql.cc | 156 +-
storage/xtradb/fts/fts0tlex.cc | 829 +-
storage/xtradb/fts/fts0tlex.l | 2 +-
storage/xtradb/fts/make_parser.sh | 2 +-
storage/xtradb/fut/fut0fut.cc | 2 +-
storage/xtradb/fut/fut0lst.cc | 2 +-
storage/xtradb/ha/ha0ha.cc | 2 +-
storage/xtradb/ha/ha0storage.cc | 2 +-
storage/xtradb/ha/hash0hash.cc | 2 +-
storage/xtradb/handler/ha_innodb.cc | 751 +-
storage/xtradb/handler/ha_innodb.h | 21 +-
storage/xtradb/handler/handler0alter.cc | 389 +-
storage/xtradb/handler/i_s.cc | 302 +-
storage/xtradb/handler/i_s.h | 8 +-
storage/xtradb/handler/xtradb_i_s.cc | 2 +-
storage/xtradb/handler/xtradb_i_s.h | 2 +-
storage/xtradb/ibuf/ibuf0ibuf.cc | 14 +-
storage/xtradb/include/api0api.h | 2 +-
storage/xtradb/include/api0misc.h | 2 +-
storage/xtradb/include/btr0btr.h | 2 +-
storage/xtradb/include/btr0btr.ic | 2 +-
storage/xtradb/include/btr0cur.h | 2 +-
storage/xtradb/include/btr0cur.ic | 2 +-
storage/xtradb/include/btr0defragment.h | 2 +-
storage/xtradb/include/btr0pcur.h | 2 +-
storage/xtradb/include/btr0pcur.ic | 2 +-
storage/xtradb/include/btr0sea.h | 15 +-
storage/xtradb/include/btr0sea.ic | 6 +-
storage/xtradb/include/btr0types.h | 2 +-
storage/xtradb/include/buf0buddy.h | 2 +-
storage/xtradb/include/buf0buddy.ic | 2 +-
storage/xtradb/include/buf0buf.h | 69 +-
storage/xtradb/include/buf0buf.ic | 2 +-
storage/xtradb/include/buf0checksum.h | 2 +-
storage/xtradb/include/buf0dblwr.h | 2 +-
storage/xtradb/include/buf0dump.h | 2 +-
storage/xtradb/include/buf0flu.h | 13 +-
storage/xtradb/include/buf0flu.ic | 2 +-
storage/xtradb/include/buf0lru.h | 24 +-
storage/xtradb/include/buf0lru.ic | 2 +-
storage/xtradb/include/buf0mtflu.h | 2 +-
storage/xtradb/include/buf0rea.h | 2 +-
storage/xtradb/include/buf0types.h | 2 +-
storage/xtradb/include/data0data.h | 2 +-
storage/xtradb/include/data0data.ic | 30 +-
storage/xtradb/include/data0type.h | 2 +-
storage/xtradb/include/data0type.ic | 2 +-
storage/xtradb/include/data0types.h | 2 +-
storage/xtradb/include/db0err.h | 2 +-
storage/xtradb/include/dict0boot.h | 2 +-
storage/xtradb/include/dict0boot.ic | 2 +-
storage/xtradb/include/dict0crea.h | 2 +-
storage/xtradb/include/dict0crea.ic | 12 +-
storage/xtradb/include/dict0dict.h | 14 +-
storage/xtradb/include/dict0dict.ic | 42 +-
storage/xtradb/include/dict0load.h | 2 +-
storage/xtradb/include/dict0load.ic | 2 +-
storage/xtradb/include/dict0mem.h | 13 +-
storage/xtradb/include/dict0mem.ic | 2 +-
storage/xtradb/include/dict0pagecompress.h | 2 +-
storage/xtradb/include/dict0pagecompress.ic | 2 +-
storage/xtradb/include/dict0priv.h | 2 +-
storage/xtradb/include/dict0priv.ic | 2 +-
storage/xtradb/include/dict0stats.h | 2 +-
storage/xtradb/include/dict0stats.ic | 2 +-
storage/xtradb/include/dict0stats_bg.h | 2 +-
storage/xtradb/include/dict0stats_bg.ic | 2 +-
storage/xtradb/include/dict0types.h | 2 +-
storage/xtradb/include/dyn0dyn.h | 2 +-
storage/xtradb/include/dyn0dyn.ic | 2 +-
storage/xtradb/include/eval0eval.h | 2 +-
storage/xtradb/include/eval0eval.ic | 2 +-
storage/xtradb/include/eval0proc.h | 2 +-
storage/xtradb/include/eval0proc.ic | 2 +-
storage/xtradb/include/fil0crypt.h | 13 +-
storage/xtradb/include/fil0crypt.ic | 2 +-
storage/xtradb/include/fil0fil.h | 30 +-
storage/xtradb/include/fil0fil.ic | 10 +-
storage/xtradb/include/fil0pagecompress.h | 97 +-
storage/xtradb/include/fsp0fsp.h | 4 +-
storage/xtradb/include/fsp0fsp.ic | 2 +-
storage/xtradb/include/fsp0pagecompress.h | 2 +-
storage/xtradb/include/fsp0pagecompress.ic | 72 +-
storage/xtradb/include/fsp0types.h | 2 +-
storage/xtradb/include/fts0ast.h | 8 +-
storage/xtradb/include/fts0blex.h | 465 +-
storage/xtradb/include/fts0fts.h | 107 +-
storage/xtradb/include/fts0opt.h | 5 +-
storage/xtradb/include/fts0priv.h | 66 +-
storage/xtradb/include/fts0priv.ic | 2 +-
storage/xtradb/include/fts0tlex.h | 465 +-
storage/xtradb/include/fts0types.h | 10 +-
storage/xtradb/include/fts0types.ic | 2 +-
storage/xtradb/include/fts0vlc.ic | 2 +-
storage/xtradb/include/fut0fut.h | 2 +-
storage/xtradb/include/fut0fut.ic | 2 +-
storage/xtradb/include/fut0lst.h | 2 +-
storage/xtradb/include/fut0lst.ic | 2 +-
storage/xtradb/include/ha0ha.h | 2 +-
storage/xtradb/include/ha0ha.ic | 2 +-
storage/xtradb/include/ha0storage.h | 2 +-
storage/xtradb/include/ha0storage.ic | 2 +-
storage/xtradb/include/ha_prototypes.h | 4 +-
storage/xtradb/include/handler0alter.h | 13 +-
storage/xtradb/include/hash0hash.h | 2 +-
storage/xtradb/include/hash0hash.ic | 2 +-
storage/xtradb/include/ibuf0ibuf.h | 2 +-
storage/xtradb/include/ibuf0ibuf.ic | 2 +-
storage/xtradb/include/ibuf0types.h | 2 +-
storage/xtradb/include/lock0iter.h | 2 +-
storage/xtradb/include/lock0lock.h | 18 +-
storage/xtradb/include/lock0lock.ic | 2 +-
storage/xtradb/include/lock0priv.h | 14 +-
storage/xtradb/include/lock0priv.ic | 2 +-
storage/xtradb/include/lock0types.h | 2 +-
storage/xtradb/include/log0crypt.h | 2 +-
storage/xtradb/include/log0log.h | 2 +-
storage/xtradb/include/log0log.ic | 2 +-
storage/xtradb/include/log0online.h | 5 +-
storage/xtradb/include/log0recv.h | 6 +-
storage/xtradb/include/log0recv.ic | 2 +-
storage/xtradb/include/mach0data.h | 2 +-
storage/xtradb/include/mach0data.ic | 2 +-
storage/xtradb/include/mem0dbg.h | 2 +-
storage/xtradb/include/mem0dbg.ic | 2 +-
storage/xtradb/include/mem0mem.h | 2 +-
storage/xtradb/include/mem0mem.ic | 2 +-
storage/xtradb/include/mem0pool.h | 2 +-
storage/xtradb/include/mem0pool.ic | 2 +-
storage/xtradb/include/mtr0log.h | 2 +-
storage/xtradb/include/mtr0log.ic | 2 +-
storage/xtradb/include/mtr0mtr.h | 2 +-
storage/xtradb/include/mtr0mtr.ic | 2 +-
storage/xtradb/include/mtr0types.h | 2 +-
storage/xtradb/include/os0file.h | 2 +-
storage/xtradb/include/os0file.ic | 2 +-
storage/xtradb/include/os0once.h | 2 +-
storage/xtradb/include/os0proc.h | 5 +-
storage/xtradb/include/os0proc.ic | 2 +-
storage/xtradb/include/os0stacktrace.h | 2 +-
storage/xtradb/include/os0sync.h | 2 +-
storage/xtradb/include/os0sync.ic | 2 +-
storage/xtradb/include/os0thread.h | 2 +-
storage/xtradb/include/os0thread.ic | 2 +-
storage/xtradb/include/page0cur.h | 2 +-
storage/xtradb/include/page0cur.ic | 2 +-
storage/xtradb/include/page0page.h | 20 +-
storage/xtradb/include/page0page.ic | 2 +-
storage/xtradb/include/page0types.h | 2 +-
storage/xtradb/include/page0zip.h | 2 +-
storage/xtradb/include/page0zip.ic | 2 +-
storage/xtradb/include/pars0grm.h | 2 +-
storage/xtradb/include/pars0opt.h | 2 +-
storage/xtradb/include/pars0opt.ic | 2 +-
storage/xtradb/include/pars0pars.h | 7 +-
storage/xtradb/include/pars0pars.ic | 2 +-
storage/xtradb/include/pars0sym.h | 2 +-
storage/xtradb/include/pars0sym.ic | 2 +-
storage/xtradb/include/pars0types.h | 2 +-
storage/xtradb/include/que0que.h | 2 +-
storage/xtradb/include/que0que.ic | 2 +-
storage/xtradb/include/que0types.h | 2 +-
storage/xtradb/include/read0i_s.h | 2 +-
storage/xtradb/include/read0read.h | 2 +-
storage/xtradb/include/read0read.ic | 2 +-
storage/xtradb/include/read0types.h | 2 +-
storage/xtradb/include/rem0cmp.h | 2 +-
storage/xtradb/include/rem0cmp.ic | 2 +-
storage/xtradb/include/rem0rec.h | 2 +-
storage/xtradb/include/rem0rec.ic | 26 +-
storage/xtradb/include/rem0types.h | 2 +-
storage/xtradb/include/row0ext.h | 2 +-
storage/xtradb/include/row0ext.ic | 2 +-
storage/xtradb/include/row0ftsort.h | 12 +-
storage/xtradb/include/row0import.h | 2 +-
storage/xtradb/include/row0import.ic | 2 +-
storage/xtradb/include/row0ins.h | 2 +-
storage/xtradb/include/row0ins.ic | 2 +-
storage/xtradb/include/row0log.h | 2 +-
storage/xtradb/include/row0log.ic | 2 +-
storage/xtradb/include/row0merge.h | 2 +-
storage/xtradb/include/row0mysql.h | 6 +-
storage/xtradb/include/row0mysql.ic | 2 +-
storage/xtradb/include/row0purge.h | 2 +-
storage/xtradb/include/row0purge.ic | 2 +-
storage/xtradb/include/row0quiesce.h | 2 +-
storage/xtradb/include/row0quiesce.ic | 2 +-
storage/xtradb/include/row0row.h | 2 +-
storage/xtradb/include/row0row.ic | 2 +-
storage/xtradb/include/row0sel.h | 2 +-
storage/xtradb/include/row0sel.ic | 2 +-
storage/xtradb/include/row0types.h | 2 +-
storage/xtradb/include/row0uins.h | 2 +-
storage/xtradb/include/row0uins.ic | 2 +-
storage/xtradb/include/row0umod.h | 2 +-
storage/xtradb/include/row0umod.ic | 2 +-
storage/xtradb/include/row0undo.h | 2 +-
storage/xtradb/include/row0undo.ic | 2 +-
storage/xtradb/include/row0upd.h | 2 +-
storage/xtradb/include/row0upd.ic | 2 +-
storage/xtradb/include/row0vers.h | 2 +-
storage/xtradb/include/row0vers.ic | 2 +-
storage/xtradb/include/srv0conc.h | 2 +-
storage/xtradb/include/srv0mon.h | 12 +-
storage/xtradb/include/srv0mon.ic | 2 +-
storage/xtradb/include/srv0srv.h | 16 +-
storage/xtradb/include/srv0srv.ic | 2 +-
storage/xtradb/include/srv0start.h | 2 +-
storage/xtradb/include/sync0arr.h | 2 +-
storage/xtradb/include/sync0arr.ic | 2 +-
storage/xtradb/include/sync0rw.h | 2 +-
storage/xtradb/include/sync0rw.ic | 5 +-
storage/xtradb/include/sync0sync.h | 2 +-
storage/xtradb/include/sync0sync.ic | 2 +-
storage/xtradb/include/sync0types.h | 2 +-
storage/xtradb/include/trx0i_s.h | 7 +-
storage/xtradb/include/trx0purge.h | 2 +-
storage/xtradb/include/trx0purge.ic | 2 +-
storage/xtradb/include/trx0rec.h | 2 +-
storage/xtradb/include/trx0rec.ic | 2 +-
storage/xtradb/include/trx0roll.h | 2 +-
storage/xtradb/include/trx0roll.ic | 2 +-
storage/xtradb/include/trx0rseg.h | 2 +-
storage/xtradb/include/trx0rseg.ic | 2 +-
storage/xtradb/include/trx0sys.h | 2 +-
storage/xtradb/include/trx0sys.ic | 2 +-
storage/xtradb/include/trx0trx.h | 18 +-
storage/xtradb/include/trx0trx.ic | 5 +-
storage/xtradb/include/trx0types.h | 9 +-
storage/xtradb/include/trx0undo.h | 2 +-
storage/xtradb/include/trx0undo.ic | 2 +-
storage/xtradb/include/trx0xa.h | 2 +-
storage/xtradb/include/univ.i | 18 +-
storage/xtradb/include/usr0sess.h | 2 +-
storage/xtradb/include/usr0sess.ic | 2 +-
storage/xtradb/include/usr0types.h | 2 +-
storage/xtradb/include/ut0bh.h | 2 +-
storage/xtradb/include/ut0bh.ic | 2 +-
storage/xtradb/include/ut0byte.h | 2 +-
storage/xtradb/include/ut0byte.ic | 2 +-
storage/xtradb/include/ut0counter.h | 48 +-
storage/xtradb/include/ut0crc32.h | 2 +-
storage/xtradb/include/ut0dbg.h | 5 +-
storage/xtradb/include/ut0list.h | 2 +-
storage/xtradb/include/ut0list.ic | 2 +-
storage/xtradb/include/ut0lst.h | 2 +-
storage/xtradb/include/ut0mem.h | 2 +-
storage/xtradb/include/ut0mem.ic | 2 +-
storage/xtradb/include/ut0rbt.h | 2 +-
storage/xtradb/include/ut0rnd.h | 2 +-
storage/xtradb/include/ut0rnd.ic | 2 +-
storage/xtradb/include/ut0sort.h | 2 +-
storage/xtradb/include/ut0timer.h | 104 -
storage/xtradb/include/ut0timer.ic | 113 -
storage/xtradb/include/ut0ut.h | 75 +-
storage/xtradb/include/ut0ut.ic | 2 +-
storage/xtradb/include/ut0vec.h | 2 +-
storage/xtradb/include/ut0vec.ic | 2 +-
storage/xtradb/include/ut0wqueue.h | 37 +-
storage/xtradb/lock/lock0iter.cc | 2 +-
storage/xtradb/lock/lock0lock.cc | 285 +-
storage/xtradb/lock/lock0wait.cc | 68 +-
storage/xtradb/log/log0crypt.cc | 2 +-
storage/xtradb/log/log0log.cc | 44 +-
storage/xtradb/log/log0online.cc | 61 +-
storage/xtradb/log/log0recv.cc | 49 +-
storage/xtradb/mach/mach0data.cc | 2 +-
storage/xtradb/mem/mem0dbg.cc | 2 +-
storage/xtradb/mem/mem0mem.cc | 2 +-
storage/xtradb/mem/mem0pool.cc | 2 +-
storage/xtradb/mtr/mtr0log.cc | 2 +-
storage/xtradb/mtr/mtr0mtr.cc | 2 +-
storage/xtradb/os/os0file.cc | 123 +-
storage/xtradb/os/os0proc.cc | 68 +-
storage/xtradb/os/os0stacktrace.cc | 2 +-
storage/xtradb/os/os0sync.cc | 28 +-
storage/xtradb/os/os0thread.cc | 2 +-
storage/xtradb/page/page0cur.cc | 12 +-
storage/xtradb/page/page0page.cc | 48 +-
storage/xtradb/page/page0zip.cc | 104 +-
storage/xtradb/pars/lexyy.cc | 514 +-
storage/xtradb/pars/make_bison.sh | 2 +-
storage/xtradb/pars/make_flex.sh | 11 +-
storage/xtradb/pars/pars0grm.cc | 2 +-
storage/xtradb/pars/pars0grm.y | 2 +-
storage/xtradb/pars/pars0lex.l | 12 +-
storage/xtradb/pars/pars0opt.cc | 2 +-
storage/xtradb/pars/pars0pars.cc | 11 +-
storage/xtradb/pars/pars0sym.cc | 2 +-
storage/xtradb/que/que0que.cc | 12 +-
storage/xtradb/read/read0read.cc | 2 +-
storage/xtradb/rem/rem0cmp.cc | 2 +-
storage/xtradb/rem/rem0rec.cc | 20 +-
storage/xtradb/row/row0ext.cc | 2 +-
storage/xtradb/row/row0ftsort.cc | 29 +-
storage/xtradb/row/row0import.cc | 324 +-
storage/xtradb/row/row0ins.cc | 56 +-
storage/xtradb/row/row0log.cc | 146 +-
storage/xtradb/row/row0merge.cc | 60 +-
storage/xtradb/row/row0mysql.cc | 277 +-
storage/xtradb/row/row0purge.cc | 6 +-
storage/xtradb/row/row0quiesce.cc | 2 +-
storage/xtradb/row/row0row.cc | 7 +-
storage/xtradb/row/row0sel.cc | 37 +-
storage/xtradb/row/row0uins.cc | 2 +-
storage/xtradb/row/row0umod.cc | 2 +-
storage/xtradb/row/row0undo.cc | 2 +-
storage/xtradb/row/row0upd.cc | 148 +-
storage/xtradb/row/row0vers.cc | 2 +-
storage/xtradb/srv/srv0conc.cc | 19 +-
storage/xtradb/srv/srv0mon.cc | 30 +-
storage/xtradb/srv/srv0srv.cc | 66 +-
storage/xtradb/srv/srv0start.cc | 19 +-
storage/xtradb/sync/sync0arr.cc | 12 +-
storage/xtradb/sync/sync0rw.cc | 2 +-
storage/xtradb/sync/sync0sync.cc | 2 +-
storage/xtradb/trx/trx0i_s.cc | 39 +-
storage/xtradb/trx/trx0purge.cc | 27 +-
storage/xtradb/trx/trx0rec.cc | 8 +-
storage/xtradb/trx/trx0roll.cc | 12 +-
storage/xtradb/trx/trx0rseg.cc | 2 +-
storage/xtradb/trx/trx0sys.cc | 14 +-
storage/xtradb/trx/trx0trx.cc | 101 +-
storage/xtradb/trx/trx0undo.cc | 5 +-
storage/xtradb/usr/usr0sess.cc | 2 +-
storage/xtradb/ut/ut0bh.cc | 2 +-
storage/xtradb/ut/ut0byte.cc | 2 +-
storage/xtradb/ut/ut0crc32.cc | 20 +-
storage/xtradb/ut/ut0dbg.cc | 2 +-
storage/xtradb/ut/ut0list.cc | 2 +-
storage/xtradb/ut/ut0mem.cc | 2 +-
storage/xtradb/ut/ut0rbt.cc | 2 +-
storage/xtradb/ut/ut0rnd.cc | 2 +-
storage/xtradb/ut/ut0timer.cc | 92 -
storage/xtradb/ut/ut0ut.cc | 196 +-
storage/xtradb/ut/ut0vec.cc | 2 +-
storage/xtradb/ut/ut0wqueue.cc | 26 +-
strings/CMakeLists.txt | 2 +-
strings/conf_to_src.c | 4 +-
strings/ctype-big5.c | 2 +-
strings/ctype-bin.c | 10 +-
strings/ctype-cp932.c | 2 +-
strings/ctype-czech.c | 2 +-
strings/ctype-euc_kr.c | 6 +-
strings/ctype-eucjpms.c | 2 +-
strings/ctype-extra.c | 2 +-
strings/ctype-gb2312.c | 2 +-
strings/ctype-gbk.c | 2 +-
strings/ctype-latin1.c | 2 +-
strings/ctype-mb.c | 102 +-
strings/ctype-mb.ic | 2 +-
strings/ctype-simple.c | 49 +-
strings/ctype-sjis.c | 2 +-
strings/ctype-uca.c | 118 +-
strings/ctype-ucs2.c | 80 +-
strings/ctype-ujis.c | 10 +-
strings/ctype-utf8.c | 68 +-
strings/ctype-win1250ch.c | 2 +-
strings/ctype.c | 2 +-
strings/decimal.c | 37 +-
strings/do_ctype.c | 2 +-
strings/dtoa.c | 2 +-
strings/dump_map.c | 2 +-
strings/json_lib.c | 29 +-
strings/my_strchr.c | 2 +-
strings/my_strtoll10.c | 17 +-
strings/my_vsnprintf.c | 2 +-
strings/strcoll.ic | 2 +-
strings/strings_def.h | 2 +-
strings/strmake.c | 2 +-
strings/strmov_overlapp.c | 2 +-
strings/t_ctype.h | 2 +-
strings/uca-dump.c | 2 +-
strings/uctypedump.c | 2 +-
strings/utr11-dump.c | 2 +-
strings/xml.c | 2 +-
support-files/CMakeLists.txt | 27 +-
support-files/MacOSX/Description.plist.sh | 2 +-
support-files/MacOSX/Info.plist.sh | 2 +-
support-files/MacOSX/MySQLCOM | 2 +-
support-files/MacOSX/StartupItem.Description.plist | 2 +-
support-files/MacOSX/StartupItem.Info.plist | 2 +-
support-files/MacOSX/StartupItem.postinstall | 2 +-
support-files/MacOSX/StartupParameters.plist.sh | 2 +-
support-files/MacOSX/mwar-wrapper | 2 +-
support-files/MacOSX/mwcc-wrapper | 2 +-
support-files/MacOSX/postflight.sh | 2 +-
support-files/MacOSX/preflight.sh | 2 +-
support-files/dtrace/locktime.d | 2 +-
support-files/dtrace/query-execandqc.d | 2 +-
support-files/dtrace/query-filesort-time.d | 2 +-
support-files/dtrace/query-network-time.d | 2 +-
support-files/dtrace/query-parse-time.d | 2 +-
support-files/dtrace/query-rowops.d | 2 +-
support-files/dtrace/query-time.d | 2 +-
support-files/dtrace/statement-time.d | 2 +-
support-files/dtrace/statement-type-aggregate.d | 2 +-
support-files/mariadb.service.in | 35 +-
support-files/mariadb@.service.in | 48 +-
support-files/mysql-log-rotate.sh | 10 +-
support-files/mysql.m4 | 2 +-
support-files/mysql.server.sh | 38 +-
support-files/policy/apparmor/usr.sbin.mysqld | 1 +
support-files/policy/selinux/mariadb-server.fc | 3 +-
support-files/policy/selinux/mariadb-server.te | 2 +-
support-files/rpm/plugin-postin.sh | 3 +
support-files/rpm/server-postin.sh | 11 +-
support-files/rpm/server-posttrans.sh | 10 +
support-files/rpm/server-postun.sh | 9 +-
support-files/rpm/server-preun.sh | 18 +-
support-files/use_galera_new_cluster.conf | 3 +
support-files/wsrep.cnf.sh | 7 +-
tests/CMakeLists.txt | 2 +-
tests/big_record.pl | 2 +-
tests/bug25714.c | 2 +-
tests/connect_test.c | 2 +-
tests/deadlock_test.c | 2 +-
tests/drop_test.pl | 2 +-
tests/export.pl | 2 +-
tests/fork2_test.pl | 2 +-
tests/fork_big.pl | 2 +-
tests/fork_big2.pl | 2 +-
tests/grant.pl | 2 +-
tests/index_corrupt.pl | 2 +-
tests/insert_and_repair.pl | 2 +-
tests/insert_test.c | 2 +-
tests/list_test.c | 2 +-
tests/lock_test.pl | 2 +-
tests/mysql_client_fw.c | 6 +-
tests/mysql_client_test.c | 199 +-
tests/pmail.pl | 2 +-
tests/rename_test.pl | 2 +-
tests/select_test.c | 2 +-
tests/showdb_test.c | 2 +-
tests/ssl_test.c | 2 +-
tests/table_types.pl | 2 +-
tests/test_delayed_insert.pl | 2 +-
tests/thread_test.c | 2 +-
tests/truncate.pl | 2 +-
unittest/examples/CMakeLists.txt | 2 +-
unittest/examples/core-t.c | 2 +-
unittest/examples/no_plan-t.c | 2 +-
unittest/examples/simple-t.c | 2 +-
unittest/examples/skip-t.c | 2 +-
unittest/examples/skip_all-t.c | 2 +-
unittest/examples/todo-t.c | 2 +-
unittest/json_lib/CMakeLists.txt | 2 +-
unittest/my_decimal/CMakeLists.txt | 2 +-
unittest/my_decimal/my_decimal-t.cc | 2 +-
unittest/mysys/CMakeLists.txt | 6 +-
unittest/mysys/aes-t.c | 2 +-
unittest/mysys/base64-t.c | 2 +-
unittest/mysys/bitmap-t.c | 2 +-
unittest/mysys/byte_order-t.c | 102 +
unittest/mysys/dynstring-t.c | 2 +-
unittest/mysys/lf-t.c | 7 +-
unittest/mysys/my_atomic-t.c | 23 +-
unittest/mysys/my_delete-t.c | 2 +-
unittest/mysys/my_malloc-t.c | 2 +-
unittest/mysys/my_rdtsc-t.c | 2 +-
unittest/mysys/my_vsnprintf-t.c | 2 +-
unittest/mysys/thr_template.c | 33 +-
unittest/mysys/waiting_threads-t.c | 6 +-
unittest/mytap/CMakeLists.txt | 2 +-
unittest/mytap/t/basic-t.c | 2 +-
unittest/mytap/tap.c | 2 +-
unittest/mytap/tap.h | 2 +-
unittest/sql/CMakeLists.txt | 4 +-
unittest/sql/explain_filename-t.cc | 2 +-
unittest/sql/mf_iocache-t.cc | 271 +-
unittest/sql/my_apc-t.cc | 2 +-
unittest/strings/strings-t.c | 2 +-
unittest/unit.pl | 2 +-
vio/CMakeLists.txt | 2 +-
vio/test-ssl.c | 2 +-
vio/test-sslclient.c | 2 +-
vio/test-sslserver.c | 2 +-
vio/vio.c | 2 +-
vio/vio_priv.h | 2 +-
vio/viopipe.c | 2 +-
vio/vioshm.c | 2 +-
vio/viosocket.c | 2 +-
vio/viossl.c | 14 +-
vio/viosslfactories.c | 3 +-
vio/viotest-ssl.c | 2 +-
vio/viotest-sslconnect.cc | 2 +-
vio/viotest.cc | 2 +-
win/create_def_file.js | 2 +-
win/packaging/CMakeLists.txt | 19 +-
win/packaging/COPYING.rtf | 4 +-
win/packaging/CPackWixConfig.cmake | 2 +-
win/packaging/CPackZIPConfig.cmake | 11 +
win/packaging/CPackZIPDebugInfoConfig.cmake | 6 +
win/packaging/ca/CMakeLists.txt | 2 +-
win/packaging/ca/CustomAction.cpp | 2 +-
win/packaging/create_msi.cmake.in | 5 +-
win/packaging/heidisql.cmake | 9 +-
win/packaging/heidisql.wxi.in | 20 +-
wsrep/CMakeLists.txt | 2 +-
wsrep/wsrep_api.h | 2 +-
wsrep/wsrep_dummy.c | 2 +-
wsrep/wsrep_gtid.c | 2 +-
wsrep/wsrep_loader.c | 2 +-
wsrep/wsrep_uuid.c | 2 +-
zlib/CMakeLists.txt | 155 +-
zlib/ChangeLog | 666 +-
zlib/FAQ | 267 +-
zlib/INDEX | 41 +-
zlib/README | 94 +-
zlib/README.MySQL | 16 -
zlib/adler32.c | 113 +-
zlib/algorithm.txt | 209 -
zlib/amiga/Makefile.pup | 69 +
zlib/amiga/Makefile.sas | 68 +
zlib/compress.c | 45 +-
zlib/crc32.c | 149 +-
zlib/crc32.h | 2 +-
zlib/deflate.c | 1269 +-
zlib/deflate.h | 78 +-
zlib/gzclose.c | 25 +
zlib/gzguts.h | 218 +
zlib/gzio.c | 1031 -
zlib/gzlib.c | 637 +
zlib/gzread.c | 654 +
zlib/gzwrite.c | 665 +
zlib/infback.c | 107 +-
zlib/inffast.c | 159 +-
zlib/inffast.h | 4 +-
zlib/inffixed.h | 6 +-
zlib/inflate.c | 507 +-
zlib/inflate.h | 38 +-
zlib/inftrees.c | 109 +-
zlib/inftrees.h | 27 +-
zlib/make_vms.com | 867 +
zlib/msdos/Makefile.bor | 115 +
zlib/msdos/Makefile.dj2 | 104 +
zlib/msdos/Makefile.emx | 69 +
zlib/msdos/Makefile.msc | 112 +
zlib/msdos/Makefile.tc | 100 +
zlib/nintendods/README | 5 +
zlib/old/Makefile.emx | 69 +
zlib/old/Makefile.riscos | 151 +
zlib/old/README | 3 +
zlib/old/descrip.mms | 48 +
zlib/old/os2/Makefile.os2 | 136 +
zlib/old/os2/zlib.def | 51 +
zlib/old/visual-basic.txt | 160 +
zlib/os400/README400 | 48 +
zlib/os400/bndsrc | 119 +
zlib/os400/make.sh | 366 +
zlib/os400/zlib.inc | 527 +
zlib/qnx/package.qpg | 141 +
zlib/test/example.c | 602 +
zlib/test/infcover.c | 671 +
zlib/test/minigzip.c | 651 +
zlib/treebuild.xml | 116 +
zlib/trees.c | 246 +-
zlib/trees.h | 4 +-
zlib/uncompr.c | 100 +-
zlib/watcom/watcom_f.mak | 43 +
zlib/watcom/watcom_l.mak | 43 +
zlib/win32/DLL_FAQ.txt | 397 +
zlib/win32/Makefile.bor | 110 +
zlib/win32/Makefile.gcc | 182 +
zlib/win32/Makefile.msc | 163 +
zlib/win32/README-WIN32.txt | 103 +
zlib/win32/VisualC.txt | 3 +
zlib/win32/zlib.def | 94 +
zlib/win32/zlib1.rc | 40 +
zlib/zconf.h | 336 -
zlib/zconf.h.cmakein | 536 +
zlib/zconf.h.in | 534 +
zlib/zlib.3 | 122 +-
zlib/zlib.h | 1639 +-
zlib/zlib.pc.cmakein | 13 +
zlib/zlib.pc.in | 13 +
zlib/zlib2ansi | 152 +
zlib/zutil.c | 101 +-
zlib/zutil.h | 192 +-
7744 files changed, 199458 insertions(+), 295897 deletions(-)
diff --cc mysql-test/r/join_cache.result
index 4f57266,e41c79a..af5e0af
--- a/mysql-test/r/join_cache.result
+++ b/mysql-test/r/join_cache.result
@@@ -6015,67 -6053,5 +6053,67 @@@ set join_buffer_size = 222222208
select f2 from t2,t1 where f2 = 0;
f2
drop table t1, t2;
- set join_buffer_size = default;
+ set join_buffer_size=@save_join_buffer_size;
+#
+# MDEV-15357: join cache denied: optimize_join_buffer_size=off and
+# join_buffer_size > join_buffer_space_limit
+#
+CREATE TABLE t1 (
+id varchar(30) NOT NULL,
+PRIMARY KEY (id)
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES
+('ZSBILL1000'),('ZSBILL1010'),('ZSBILL1020'),('ZSBILL1030'),('ZSBILL2000'),
+('ZSBILL2010'),('ZSBILL2020'),('ZSBILL6040'),('ZSBILL6050'),('ZSBILL7000');
+CREATE TABLE t2 (
+id varchar(30) NOT NULL,
+a char(1) NOT NULL DEFAULT '3',
+PRIMARY KEY (id,a)
+) ENGINE=MyISAM;
+INSERT INTO t2(id) VALUES
+('ZSBILL1000'),('ZSBILL1010'),('ZSBILL1020'),('ZSBILL1030'),('ZSBILL2000'),
+('ZSBILL2010'),('ZSBILL2020'),('ZSBILL2030'),('ZSBILL3000');
+SET join_buffer_size=30000000;
+SET join_cache_level=4;
+SELECT @@join_buffer_space_limit;
+@@join_buffer_space_limit
+2097152
+set @tmp_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='optimize_join_buffer_size=on';
+EXPLAIN EXTENDED SELECT t1.id, t2.id FROM t1,t2 WHERE t1.id = t2.id;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 index PRIMARY PRIMARY 33 NULL 9 100.00 Using index
+1 SIMPLE t1 hash_index PRIMARY #hash#PRIMARY:PRIMARY 32:32 test.t2.id 10 10.00 Using index; Using join buffer (flat, BNLH join)
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t2`.`id` AS `id` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`id` = `test`.`t2`.`id`
+SELECT t1.id, t2.id FROM t1,t2 WHERE t1.id = t2.id;
+id id
+ZSBILL1000 ZSBILL1000
+ZSBILL1010 ZSBILL1010
+ZSBILL1020 ZSBILL1020
+ZSBILL1030 ZSBILL1030
+ZSBILL2000 ZSBILL2000
+ZSBILL2010 ZSBILL2010
+ZSBILL2020 ZSBILL2020
+set @tmp_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='optimize_join_buffer_size=off';
+EXPLAIN EXTENDED SELECT t1.id, t2.id FROM t1,t2 WHERE t1.id = t2.id;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 index PRIMARY PRIMARY 33 NULL 9 100.00 Using index
+1 SIMPLE t1 eq_ref PRIMARY PRIMARY 32 test.t2.id 1 100.00 Using index
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t2`.`id` AS `id` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`id` = `test`.`t2`.`id`
+SELECT t1.id, t2.id FROM t1,t2 WHERE t1.id = t2.id;
+id id
+ZSBILL1000 ZSBILL1000
+ZSBILL1010 ZSBILL1010
+ZSBILL1020 ZSBILL1020
+ZSBILL1030 ZSBILL1030
+ZSBILL2000 ZSBILL2000
+ZSBILL2010 ZSBILL2010
+ZSBILL2020 ZSBILL2020
+SET join_buffer_size=default;
+SET join_cache_level=default;
+set optimizer_switch= @tmp_optimizer_switch;
+DROP TABLE t1,t2;
set @@optimizer_switch=@save_optimizer_switch;
diff --cc mysql-test/t/join_cache.test
index 5356341,9576d59..a7866e4
--- a/mysql-test/t/join_cache.test
+++ b/mysql-test/t/join_cache.test
@@@ -3955,55 -4012,7 +4012,54 @@@ insert t2 values (4,1,1), (6,1,1)
set join_buffer_size = 222222208;
select f2 from t2,t1 where f2 = 0;
drop table t1, t2;
- set join_buffer_size = default;
+ set join_buffer_size=@save_join_buffer_size;
+--echo #
+--echo # MDEV-15357: join cache denied: optimize_join_buffer_size=off and
+--echo # join_buffer_size > join_buffer_space_limit
+--echo #
+
+CREATE TABLE t1 (
+ id varchar(30) NOT NULL,
+ PRIMARY KEY (id)
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES
+('ZSBILL1000'),('ZSBILL1010'),('ZSBILL1020'),('ZSBILL1030'),('ZSBILL2000'),
+('ZSBILL2010'),('ZSBILL2020'),('ZSBILL6040'),('ZSBILL6050'),('ZSBILL7000');
+
+CREATE TABLE t2 (
+ id varchar(30) NOT NULL,
+ a char(1) NOT NULL DEFAULT '3',
+ PRIMARY KEY (id,a)
+) ENGINE=MyISAM;
+INSERT INTO t2(id) VALUES
+('ZSBILL1000'),('ZSBILL1010'),('ZSBILL1020'),('ZSBILL1030'),('ZSBILL2000'),
+('ZSBILL2010'),('ZSBILL2020'),('ZSBILL2030'),('ZSBILL3000');
+
+SET join_buffer_size=30000000;
+SET join_cache_level=4;
+
+SELECT @@join_buffer_space_limit;
+
+let $q=
+SELECT t1.id, t2.id FROM t1,t2 WHERE t1.id = t2.id;
+
+set @tmp_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='optimize_join_buffer_size=on';
+eval EXPLAIN EXTENDED $q;
+eval $q;
+
+set @tmp_optimizer_switch=@@optimizer_switch;
+set optimizer_switch='optimize_join_buffer_size=off';
+eval EXPLAIN EXTENDED $q;
+eval $q;
+
+SET join_buffer_size=default;
+SET join_cache_level=default;
+
+set optimizer_switch= @tmp_optimizer_switch;
+
+DROP TABLE t1,t2;
+
- # The following command must be the last one the file
- # this must be the last command in the file
+ # The following command must be the last one in the file
set @@optimizer_switch=@save_optimizer_switch;
1
0

778e96749bc: MDEV-20923:UBSAN: member access within address … which does not point to an object of type 'xid_count_per_binlog'
by sujatha 23 Jan '20
by sujatha 23 Jan '20
23 Jan '20
revision-id: 778e96749bcadc5528bb7f214a711272f7413b96 (mariadb-10.1.43-66-g778e96749bc)
parent(s): 982294ac1680938ac9223fb64a64e21f0cbc322a
author: Sujatha
committer: Sujatha
timestamp: 2020-01-23 16:17:55 +0530
message:
MDEV-20923:UBSAN: member access within address … which does not point to an object of type 'xid_count_per_binlog'
Problem:
-------
Accessing a member within 'xid_count_per_binlog' structure results in
following error when 'UBSAN' is enabled.
member access within address 0xXXX which does not point to an object of type
'xid_count_per_binlog'
Analysis:
---------
The problem appears to be that no constructor for 'xid_count_per_binlog' is
being called, and thus the vtable will not be initialized.
Fix:
---
Defined a parameterized constructor for 'xid_count_per_binlog' class.
---
sql/log.cc | 27 +++++++++++----------------
sql/log.h | 13 ++++++++++++-
2 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/sql/log.cc b/sql/log.cc
index acf1f8f8a9c..0efef6d1e29 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -3216,7 +3216,7 @@ void MYSQL_BIN_LOG::cleanup()
DBUG_ASSERT(!binlog_xid_count_list.head());
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::cleanup(): Removing xid_list_entry "
"for %s (%lu)", b);
- my_free(b);
+ delete b;
}
mysql_mutex_destroy(&LOCK_log);
@@ -3580,17 +3580,9 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
*/
uint off= dirname_length(log_file_name);
uint len= strlen(log_file_name) - off;
- char *entry_mem, *name_mem;
- if (!(new_xid_list_entry = (xid_count_per_binlog *)
- my_multi_malloc(MYF(MY_WME),
- &entry_mem, sizeof(xid_count_per_binlog),
- &name_mem, len,
- NULL)))
+ new_xid_list_entry= new xid_count_per_binlog(log_file_name+off, (int)len);
+ if (!new_xid_list_entry)
goto err;
- memcpy(name_mem, log_file_name+off, len);
- new_xid_list_entry->binlog_name= name_mem;
- new_xid_list_entry->binlog_name_len= len;
- new_xid_list_entry->xid_count= 0;
/*
Find the name for the Initial binlog checkpoint.
@@ -3607,7 +3599,10 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
mysql_mutex_unlock(&LOCK_xid_list);
if (!b)
b= new_xid_list_entry;
- strmake(buf, b->binlog_name, b->binlog_name_len);
+ if (b->binlog_name)
+ strmake(buf, b->binlog_name, b->binlog_name_len);
+ else
+ goto err;
Binlog_checkpoint_log_event ev(buf, len);
DBUG_EXECUTE_IF("crash_before_write_checkpoint_event",
flush_io_cache(&log_file);
@@ -3711,7 +3706,7 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
{
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::open(): Removing xid_list_entry for "
"%s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_cond_broadcast(&COND_xid_list);
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::open(): Adding new xid_list_entry for "
@@ -3758,7 +3753,7 @@ Turning logging off for the whole duration of the MySQL server process. \
To turn it on again: fix the cause, \
shutdown the MySQL server and restart it.", name, errno);
if (new_xid_list_entry)
- my_free(new_xid_list_entry);
+ delete new_xid_list_entry;
if (file >= 0)
mysql_file_close(file, MYF(0));
close(LOG_CLOSE_INDEX);
@@ -4252,7 +4247,7 @@ bool MYSQL_BIN_LOG::reset_logs(THD *thd, bool create_new_log,
DBUG_ASSERT(b->xid_count == 0);
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::reset_logs(): Removing "
"xid_list_entry for %s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_cond_broadcast(&COND_xid_list);
reset_master_pending--;
@@ -9736,7 +9731,7 @@ TC_LOG_BINLOG::mark_xid_done(ulong binlog_id, bool write_checkpoint)
break;
WSREP_XID_LIST_ENTRY("TC_LOG_BINLOG::mark_xid_done(): Removing "
"xid_list_entry for %s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_mutex_unlock(&LOCK_xid_list);
diff --git a/sql/log.h b/sql/log.h
index b4c9b24a3a9..277e5c6f69c 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -587,7 +587,18 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
long xid_count;
/* For linking in requests to the binlog background thread. */
xid_count_per_binlog *next_in_queue;
- xid_count_per_binlog(); /* Give link error if constructor used. */
+ xid_count_per_binlog(char *log_file_name, uint log_file_name_len)
+ :binlog_id(0), xid_count(0)
+ {
+ binlog_name_len= log_file_name_len;
+ binlog_name= (char *) my_malloc(binlog_name_len, MYF(MY_ZEROFILL));
+ if (binlog_name)
+ memcpy(binlog_name, log_file_name, binlog_name_len);
+ }
+ ~xid_count_per_binlog()
+ {
+ my_free(binlog_name);
+ }
};
I_List<xid_count_per_binlog> binlog_xid_count_list;
mysql_mutex_t LOCK_binlog_background_thread;
1
0

d9716cfadb8: MDEV-20923:UBSAN: member access within address … which does not point to an object of type 'xid_count_per_binlog'
by sujatha 23 Jan '20
by sujatha 23 Jan '20
23 Jan '20
revision-id: d9716cfadb8cd3448f25d8b411451f87064cecaf (mariadb-10.1.43-66-gd9716cfadb8)
parent(s): 982294ac1680938ac9223fb64a64e21f0cbc322a
author: Sujatha
committer: Sujatha
timestamp: 2020-01-23 16:00:41 +0530
message:
MDEV-20923:UBSAN: member access within address … which does not point to an object of type 'xid_count_per_binlog'
Problem:
-------
Accessing a member within 'xid_count_per_binlog' structure results in
following error when 'UBSAN' is enabled.
member access within address 0xXXX which does not point to an object of type
'xid_count_per_binlog'
Analysis:
---------
The problem appears to be that no constructor for 'xid_count_per_binlog' is
being called, and thus the vtable will not be initialized.
Fix:
---
Defined a parameterized constructor for 'xid_count_per_binlog' class.
---
sql/log.cc | 27 +++++++++++----------------
sql/log.h | 14 +++++++++++++-
2 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/sql/log.cc b/sql/log.cc
index acf1f8f8a9c..0efef6d1e29 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -3216,7 +3216,7 @@ void MYSQL_BIN_LOG::cleanup()
DBUG_ASSERT(!binlog_xid_count_list.head());
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::cleanup(): Removing xid_list_entry "
"for %s (%lu)", b);
- my_free(b);
+ delete b;
}
mysql_mutex_destroy(&LOCK_log);
@@ -3580,17 +3580,9 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
*/
uint off= dirname_length(log_file_name);
uint len= strlen(log_file_name) - off;
- char *entry_mem, *name_mem;
- if (!(new_xid_list_entry = (xid_count_per_binlog *)
- my_multi_malloc(MYF(MY_WME),
- &entry_mem, sizeof(xid_count_per_binlog),
- &name_mem, len,
- NULL)))
+ new_xid_list_entry= new xid_count_per_binlog(log_file_name+off, (int)len);
+ if (!new_xid_list_entry)
goto err;
- memcpy(name_mem, log_file_name+off, len);
- new_xid_list_entry->binlog_name= name_mem;
- new_xid_list_entry->binlog_name_len= len;
- new_xid_list_entry->xid_count= 0;
/*
Find the name for the Initial binlog checkpoint.
@@ -3607,7 +3599,10 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
mysql_mutex_unlock(&LOCK_xid_list);
if (!b)
b= new_xid_list_entry;
- strmake(buf, b->binlog_name, b->binlog_name_len);
+ if (b->binlog_name)
+ strmake(buf, b->binlog_name, b->binlog_name_len);
+ else
+ goto err;
Binlog_checkpoint_log_event ev(buf, len);
DBUG_EXECUTE_IF("crash_before_write_checkpoint_event",
flush_io_cache(&log_file);
@@ -3711,7 +3706,7 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
{
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::open(): Removing xid_list_entry for "
"%s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_cond_broadcast(&COND_xid_list);
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::open(): Adding new xid_list_entry for "
@@ -3758,7 +3753,7 @@ Turning logging off for the whole duration of the MySQL server process. \
To turn it on again: fix the cause, \
shutdown the MySQL server and restart it.", name, errno);
if (new_xid_list_entry)
- my_free(new_xid_list_entry);
+ delete new_xid_list_entry;
if (file >= 0)
mysql_file_close(file, MYF(0));
close(LOG_CLOSE_INDEX);
@@ -4252,7 +4247,7 @@ bool MYSQL_BIN_LOG::reset_logs(THD *thd, bool create_new_log,
DBUG_ASSERT(b->xid_count == 0);
WSREP_XID_LIST_ENTRY("MYSQL_BIN_LOG::reset_logs(): Removing "
"xid_list_entry for %s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_cond_broadcast(&COND_xid_list);
reset_master_pending--;
@@ -9736,7 +9731,7 @@ TC_LOG_BINLOG::mark_xid_done(ulong binlog_id, bool write_checkpoint)
break;
WSREP_XID_LIST_ENTRY("TC_LOG_BINLOG::mark_xid_done(): Removing "
"xid_list_entry for %s (%lu)", b);
- my_free(binlog_xid_count_list.get());
+ delete binlog_xid_count_list.get();
}
mysql_mutex_unlock(&LOCK_xid_list);
diff --git a/sql/log.h b/sql/log.h
index b4c9b24a3a9..e69c9c39eaf 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -587,7 +587,19 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
long xid_count;
/* For linking in requests to the binlog background thread. */
xid_count_per_binlog *next_in_queue;
- xid_count_per_binlog(); /* Give link error if constructor used. */
+ xid_count_per_binlog(char *log_file_name, uint log_file_name_len)
+ :binlog_name(log_file_name), binlog_name_len(log_file_name_len),
+ binlog_id(0), xid_count(0)
+ {
+ binlog_name_len= log_file_name_len;
+ binlog_name= (char *) my_malloc(binlog_name_len, MYF(MY_ZEROFILL));
+ if (binlog_name)
+ memcpy(binlog_name, log_file_name, binlog_name_len);
+ }
+ ~xid_count_per_binlog()
+ {
+ my_free(binlog_name);
+ }
};
I_List<xid_count_per_binlog> binlog_xid_count_list;
mysql_mutex_t LOCK_binlog_background_thread;
1
0

[Commits] 43f27ae4778: MDEV-21490: binlog tests fail with valgrind: Conditional jump or move depends on uninitialised value in sql_ex_info::init
by sujatha 23 Jan '20
by sujatha 23 Jan '20
23 Jan '20
revision-id: 43f27ae4778b3e7be86897e49c182dc05080fd88 (mariadb-10.1.43-66-g43f27ae4778)
parent(s): 982294ac1680938ac9223fb64a64e21f0cbc322a
author: Sujatha
committer: Sujatha
timestamp: 2020-01-23 11:57:46 +0530
message:
MDEV-21490: binlog tests fail with valgrind: Conditional jump or move depends on uninitialised value in sql_ex_info::init
Problem:
=======
P1) Conditional jump or move depends on uninitialised value(s)
sql_ex_info::init(char const*, char const*, bool) (log_event.cc:3083)
code: All the following variables are not initialized.
----
return ((cached_new_format != -1) ? cached_new_format :
(cached_new_format=(field_term_len > 1 || enclosed_len > 1 ||
line_term_len > 1 || line_start_len > 1 || escaped_len > 1)));
P2) Conditional jump or move depends on uninitialised value(s)
Rows_log_event::Rows_log_event(char const*, unsigned
int, Format_description_log_event const*) (log_event.cc:9571)
Code: Uninitialized values is reported for 'var_header_len' variable.
----
if (var_header_len < 2 || event_len < static_cast<unsigned
int>(var_header_len + (post_start - buf)))
P3) Conditional jump or move depends on uninitialised value(s)
Table_map_log_event::pack_info(Protocol*) (log_event.cc:11553)
code:'m_table_id' is uninitialized.
----
void Table_map_log_event::pack_info(Protocol *protocol)
...
size_t bytes= my_snprintf(buf, sizeof(buf), "table_id: %lu (%s.%s)",
m_table_id, m_dbnam, m_tblnam);
Fix:
===
P1 - Fix)
Initialize cached_new_format,field_term_len, enclosed_len, line_term_len,
line_start_len, escaped_len members in default constructor.
P2 - Fix)
"var_header_len" is initialized by reading the event buffer. In case of an
invalid event the buffer will contain invalid data. Hence added a check to
validate the event data. If event_len is smaller than valid header length
return immediately.
P3 - Fix)
'm_table_id' within Table_map_log_event is initialized by reading data from
the event buffer. Use 'VALIDATE_BYTES_READ' macro to validate the current
state of the buffer. If it is invalid return immediately.
---
sql/log_event.cc | 7 +++++++
sql/log_event.h | 9 ++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/sql/log_event.cc b/sql/log_event.cc
index e8881c77f2b..9924b9a0493 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -9535,6 +9535,12 @@ Rows_log_event::Rows_log_event(const char *buf, uint event_len,
uint8 const post_header_len= description_event->post_header_len[event_type-1];
+ if (event_len < (uint)(common_header_len + post_header_len))
+ {
+ m_cols.bitmap= 0;
+ DBUG_VOID_RETURN;
+ }
+
DBUG_PRINT("enter",("event_len: %u common_header_len: %d "
"post_header_len: %d",
event_len, common_header_len,
@@ -11043,6 +11049,7 @@ Table_map_log_event::Table_map_log_event(const char *buf, uint event_len,
const char *post_start= buf + common_header_len;
post_start+= TM_MAPID_OFFSET;
+ VALIDATE_BYTES_READ(post_start, buf, event_len);
if (post_header_len == 6)
{
/* Master is of an intermediate source tree before 5.1.4. Id is 4 bytes */
diff --git a/sql/log_event.h b/sql/log_event.h
index 2c8dc3d7353..04fce65faeb 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -2057,7 +2057,14 @@ class Query_log_event: public Log_event
****************************************************************************/
struct sql_ex_info
{
- sql_ex_info() {} /* Remove gcc warning */
+ sql_ex_info():
+ cached_new_format(-1),
+ field_term_len(0),
+ enclosed_len(0),
+ line_term_len(0),
+ line_start_len(0),
+ escaped_len(0)
+ {} /* Remove gcc warning */
const char* field_term;
const char* enclosed;
const char* line_term;
1
0

[Commits] 9f831a6cfff: MDEV-21263: Allow packed values of non-sorted fields in the sort buffer
by Varun 20 Jan '20
by Varun 20 Jan '20
20 Jan '20
revision-id: 9f831a6cfff9e7591e012b733d86c7162d33058f (mariadb-10.5.0-119-g9f831a6cfff)
parent(s): 6f65931f889cf920bf52c2debeadc9f559ff687b
author: Varun Gupta
committer: Varun Gupta
timestamp: 2020-01-20 12:14:42 +0530
message:
MDEV-21263: Allow packed values of non-sorted fields in the sort buffer
This task deals with packing the non-sorted fields (or addon fields).
This would lead to efficient usage of the memory allocated for the sort buffer.
The changes brought by this feature are
1) Sort buffers would have records of variable length
2) Each record in the sort buffer would be stored like
<sort_key1><sort_key2>....<addon_length><null_bytes><field1><field2>....
addon_length is the extra bytes that are required to store the variable
length of addon field across different records.
3) Changes in rr_unpack_from_buffer and rr_from_tempfile to take into account
the variable length of records.
Ported WL#1509 Pack values of non-sorted fields in the sort buffer from
MySQL by Tor Didriksen
---
mysql-test/main/order_by_pack_big.result | 328 ++++++++++
mysql-test/main/order_by_pack_big.test | 133 ++++
sql/bounded_queue.h | 4 +-
sql/field.h | 2 +
sql/filesort.cc | 700 +++++++++++++--------
sql/filesort.h | 83 ++-
sql/filesort_utils.cc | 64 +-
sql/filesort_utils.h | 214 ++++++-
sql/records.cc | 141 ++++-
sql/records.h | 14 +-
sql/sql_array.h | 4 +
sql/sql_select.cc | 4 +-
sql/sql_sort.h | 291 ++++++++-
sql/uniques.cc | 80 ++-
sql/uniques.h | 2 +-
.../mysql-test/connect/r/mysql_index.result | 4 +-
.../connect/mysql-test/connect/t/mysql_index.test | 2 +-
17 files changed, 1636 insertions(+), 434 deletions(-)
diff --git a/mysql-test/main/order_by_pack_big.result b/mysql-test/main/order_by_pack_big.result
new file mode 100644
index 00000000000..4ecca9503f2
--- /dev/null
+++ b/mysql-test/main/order_by_pack_big.result
@@ -0,0 +1,328 @@
+set @save_rand_seed1= @@RAND_SEED1;
+set @save_rand_seed2= @@RAND_SEED2;
+set @@RAND_SEED1=810763568, @@RAND_SEED2=600681772;
+create table t1(a int);
+insert into t1 select seq from seq_1_to_10000 order by rand();
+#
+# parameters:
+# mean mean for the column to be considered
+# max_val max_value for the column to be considered
+#
+# This function generate a sample of a normal distribution
+# This function return a point
+# of the normal distribution with a given mean.
+#
+CREATE FUNCTION
+generate_normal_distribution_sample(mean DOUBLE, max_val DOUBLE)RETURNS DOUBLE
+BEGIN
+DECLARE z DOUBLE DEFAULT 0;
+SET z= (rand() + rand() + rand() + rand() + rand() + rand())/6;
+SET z= 2*(max_val-mean)*z;
+SET z= z + mean - (max_val-mean);
+return z;
+END|
+#
+# parameters:
+# len length of the random string to be generated
+#
+# This function generates a random string for the length passed
+# as an argument with characters in the range of [A,Z]
+#
+CREATE FUNCTION generate_random_string(len INT) RETURNS varchar(128)
+BEGIN
+DECLARE str VARCHAR(256) DEFAULT '';
+DECLARE x INT DEFAULT 0;
+WHILE (len > 0) DO
+SET x =round(rand()*25);
+SET str= CONCAT(str, CHAR(65 + x));
+SET len= len-1;
+END WHILE;
+RETURN str;
+END|
+#
+# parameters:
+# mean mean for the column to be considered
+# min_val min_value for the column to be considered
+# max_val max_value for the column to be considered
+#
+# This function generate a normal distribution sample in the range of
+# [min_val, max_val]
+#
+CREATE FUNCTION
+clipped_normal_distribution(mean DOUBLE, min_val DOUBLE, max_val DOUBLE)
+RETURNS INT
+BEGIN
+DECLARE r DOUBLE DEFAULT 0;
+WHILE 1=1 DO
+set r= generate_normal_distribution_sample(mean, max_val);
+IF (r >= min_val AND r <= max_val) THEN
+RETURN round(r);
+end if;
+END WHILE;
+RETURN 0;
+END|
+create table t2 (id INT NOT NULL, a INT, b int);
+insert into t2
+select a, clipped_normal_distribution(12, 0, 64),
+clipped_normal_distribution(32, 0, 128)
+from t1;
+CREATE TABLE t3(
+id INT NOT NULL,
+names VARCHAR(64),
+address VARCHAR(128),
+PRIMARY KEY (id)
+);
+#
+# table t3 stores random strings calculated from the length stored in
+# table t2
+#
+insert into t3
+select id, generate_random_string(a), generate_random_string(b) from t2;
+#
+# All records fit in memory
+#
+set sort_buffer_size=262144*10;
+flush status;
+select id DIV 100 as x,
+MD5(group_concat(substring(names,1,3), substring(address,1,3)
+order by substring(names,1,3), substring(address,1,3)))
+FROM t3
+GROUP BY x;
+x MD5(group_concat(substring(names,1,3), substring(address,1,3)
+order by substring(names,1,3), substring(address,1,3)))
+0 c2ecc41f0e37144931dbd51c286d3169
+1 65104765025a5550d2070c320c896660
+2 d2d10899abcc3be7de55092b260afbfa
+3 a44e5be670968b49b0cb1b5665f53cc5
+4 c906c31cc6f40c63f1901d257680d71f
+5 07ded386a3d789b64462eb9a9525aee1
+6 760ff88f2409ccb3319c57c3a38fe7d2
+7 320d65f718acf0876c0dbda053129d24
+8 73ace6baf48996f86b741105957ce46b
+9 cf80b0efda4108abd584ba47fea0158d
+10 6f8db75fbae31d381472c16d91c1f52b
+11 762315d05abf1d8589eb15238d03d0f3
+12 2948a913b6dfea8499605ac342c897a1
+13 789c300f6576c27d7f9ed5694b0d8fba
+14 8c83fad606cb84de677520dc6fb895f2
+15 37f499f1e50d6fb5ecb09e78d1e2e692
+16 2a953b23c198cf922a58d5ea5e12db0e
+17 ebc1145c9f4324194fc8d85d6e29ed1b
+18 2662c807f21177eb6fcdaf4688641819
+19 a423cee02d23022f9e2ffbd8a3627a7c
+20 0418584d7634ffde4f6988d93f5e2a0f
+21 f832993560565217e6dd30f8300c1c11
+22 b2ffce93f4fc478e0c1ca96fd4accee3
+23 85c7299ac9207a88b6fd9bb69fbf43aa
+24 ab2b9e611e3a8c2f470b05552cb82a4d
+25 2cb134bd2ecf3d07b702ac1f3f171a9c
+26 2e60abcf5605e65075b7e7587f2294a5
+27 705872095781fd7a87882606bb8ab423
+28 78a7e8ab78c35dae4ddf4c4f593c8cf4
+29 943c1fbf466257bb7a4d7af6b6a19165
+30 691c2ce1c6d20fdcfbf65b132c80b7a0
+31 4854dd9d208e0b45cb2e5b6d0fefe6c8
+32 f43993c3d59c03c5cf4c8e2a1ab95533
+33 4c5d5e658aba5bd8aa770a86bff05200
+34 f531b17fba7abce233f95941b42aad58
+35 f44e1f990acfcd7902c5743409412563
+36 a7d39877de8502cce6ffbc4809749eba
+37 49062ade86448805b6a222707bf45ad0
+38 c94368aa13843cc892b75eb71683aaba
+39 483247b82751113caab96ea183a9ca3b
+40 f6cf9046d05c13ae88ba7a5676b81f89
+41 1ca6c62cd730db36d49daca2d1b0ec7c
+42 2b519acd4877e780e7200659d01d43af
+43 eb59acd9a1bf374468b4986325ec2b83
+44 20137caed121517632937703d1011c18
+45 72437c79e41164c2b759702cbb36b179
+46 3c5479be06f2262e8867e967299bbb3b
+47 2084e6be3e7b18019bd874cded1c8bd6
+48 efc7de387fa2399a35a59318052a06f4
+49 8a734e334febc6f2ca45db6b846be5d4
+50 f53fafc0e8d431be62de75e0f16ee745
+51 53a0f5f1b88776c84fe22e2c3254444c
+52 9b53bc61795233850e5d958a9ba415f5
+53 a703edddf3cedbca2d331c96199cf663
+54 0e05181a4a223f43e36742021ac012ad
+55 04dad2a66800104ed8c7fad8c05135a6
+56 913795d9c8c3ddb865b81039a662ba0f
+57 fd84229b981c0dcf9f2a79e9d94cf154
+58 9ae667ec6ab7c2eb0bf5a06807042e59
+59 2e445d3921c94fe2faf400708ea83e8b
+60 dcd5f407001d00f8224bb1449254b3a3
+61 1aaacf09ce7209ed23fa0875be09a133
+62 e5face2b007eeaaa837895a6e32c63f0
+63 43a38c4b0243555e9cf655ce60c8403a
+64 6b3ca212cd7cf131f4bd8bdd9085618b
+65 ffda0a086d4259b9c48bd26391f7ebaf
+66 1f392bbb0662c3e1cb97073a5e119570
+67 33c8041b5a8341f1b117e40b2f8bd0ee
+68 b203f57d48d584ff5479f76ce76e6eba
+69 72a6172c2b14abbf64ab74a27f03fc89
+70 12a05415f69f217712ac65a0858ddfdc
+71 8bdd033aa314600e78585dc42a88c28b
+72 b2b70633781346cfa203e243319f6409
+73 cb158a725e4f3f1ef6f2053751db07d0
+74 82f3963cfebe83618ea21af5fd38d164
+75 cfb9e6e451c6855e1a7dce78d7b4cc5a
+76 eab0e37d16bbc78b21e234767f5056eb
+77 c76407fe3c50d02fba700da0011167cc
+78 1339da94058abc3fcfcf61a81e1597b7
+79 3c58d27f69d6e927bd0cb1b16bdb30ba
+80 1e500d97a85b3dd3a0b4048fe6ad54ae
+81 d03d3e0bc34d1aec0569567d0ca25365
+82 55d7ddafa551c8b7e0f6aec128ca6442
+83 8ee668de06a360b26af96902edd1c12f
+84 3b8914e6a79a67037057781cf25b6825
+85 37039d22b6e3fb8e26c29eb459ca81ae
+86 707da7bd7982b4ba685981bf32b20103
+87 c3bf51c8c12289d200c2aa0532b3b6c3
+88 5a20abf3322051f8cbc5c0d1d96724e1
+89 1e3e3e730c8447afb79331f6740d379d
+90 0414da13cd7ac8cc53ed97f9c12f52a8
+91 b862c11cc516d750ccac6e10436c6746
+92 0e7febc44370fd57a370d3fbdd9bf16c
+93 85488f13dd47b028a9db94e136eae19d
+94 f9605bb472f52d1775e669b86691e848
+95 33b4d6bc8f327e1a48328d5f5071d7e7
+96 917e41d300faaedfb5d1a67eafa85ef4
+97 b7764a86130d50379833b9606460c2d2
+98 f1b5d819e4441898a6278b99859a1774
+99 1a4bcfaa64467f4bc03f0f00b27cf063
+100 cbd5cef546acc0bfa33117d7c1ae58a8
+show status like '%sort%';
+Variable_name Value
+Sort_merge_passes 0
+Sort_priority_queue_sorts 0
+Sort_range 0
+Sort_rows 10000
+Sort_scan 1
+set sort_buffer_size=default;
+#
+# Test for merge_many_buff
+#
+set sort_buffer_size=32768;
+flush status;
+select id DIV 100 as x,
+MD5(group_concat(substring(names,1,3), substring(address,1,3)
+order by substring(names,1,3), substring(address,1,3)))
+FROM t3
+GROUP BY x;
+x MD5(group_concat(substring(names,1,3), substring(address,1,3)
+order by substring(names,1,3), substring(address,1,3)))
+0 c2ecc41f0e37144931dbd51c286d3169
+1 65104765025a5550d2070c320c896660
+2 d2d10899abcc3be7de55092b260afbfa
+3 a44e5be670968b49b0cb1b5665f53cc5
+4 c906c31cc6f40c63f1901d257680d71f
+5 07ded386a3d789b64462eb9a9525aee1
+6 760ff88f2409ccb3319c57c3a38fe7d2
+7 320d65f718acf0876c0dbda053129d24
+8 73ace6baf48996f86b741105957ce46b
+9 cf80b0efda4108abd584ba47fea0158d
+10 6f8db75fbae31d381472c16d91c1f52b
+11 762315d05abf1d8589eb15238d03d0f3
+12 2948a913b6dfea8499605ac342c897a1
+13 789c300f6576c27d7f9ed5694b0d8fba
+14 8c83fad606cb84de677520dc6fb895f2
+15 37f499f1e50d6fb5ecb09e78d1e2e692
+16 2a953b23c198cf922a58d5ea5e12db0e
+17 ebc1145c9f4324194fc8d85d6e29ed1b
+18 2662c807f21177eb6fcdaf4688641819
+19 a423cee02d23022f9e2ffbd8a3627a7c
+20 0418584d7634ffde4f6988d93f5e2a0f
+21 f832993560565217e6dd30f8300c1c11
+22 b2ffce93f4fc478e0c1ca96fd4accee3
+23 85c7299ac9207a88b6fd9bb69fbf43aa
+24 ab2b9e611e3a8c2f470b05552cb82a4d
+25 2cb134bd2ecf3d07b702ac1f3f171a9c
+26 2e60abcf5605e65075b7e7587f2294a5
+27 705872095781fd7a87882606bb8ab423
+28 78a7e8ab78c35dae4ddf4c4f593c8cf4
+29 943c1fbf466257bb7a4d7af6b6a19165
+30 691c2ce1c6d20fdcfbf65b132c80b7a0
+31 4854dd9d208e0b45cb2e5b6d0fefe6c8
+32 f43993c3d59c03c5cf4c8e2a1ab95533
+33 4c5d5e658aba5bd8aa770a86bff05200
+34 f531b17fba7abce233f95941b42aad58
+35 f44e1f990acfcd7902c5743409412563
+36 a7d39877de8502cce6ffbc4809749eba
+37 49062ade86448805b6a222707bf45ad0
+38 c94368aa13843cc892b75eb71683aaba
+39 483247b82751113caab96ea183a9ca3b
+40 f6cf9046d05c13ae88ba7a5676b81f89
+41 1ca6c62cd730db36d49daca2d1b0ec7c
+42 2b519acd4877e780e7200659d01d43af
+43 eb59acd9a1bf374468b4986325ec2b83
+44 20137caed121517632937703d1011c18
+45 72437c79e41164c2b759702cbb36b179
+46 3c5479be06f2262e8867e967299bbb3b
+47 2084e6be3e7b18019bd874cded1c8bd6
+48 efc7de387fa2399a35a59318052a06f4
+49 8a734e334febc6f2ca45db6b846be5d4
+50 f53fafc0e8d431be62de75e0f16ee745
+51 53a0f5f1b88776c84fe22e2c3254444c
+52 9b53bc61795233850e5d958a9ba415f5
+53 a703edddf3cedbca2d331c96199cf663
+54 0e05181a4a223f43e36742021ac012ad
+55 04dad2a66800104ed8c7fad8c05135a6
+56 913795d9c8c3ddb865b81039a662ba0f
+57 fd84229b981c0dcf9f2a79e9d94cf154
+58 9ae667ec6ab7c2eb0bf5a06807042e59
+59 2e445d3921c94fe2faf400708ea83e8b
+60 dcd5f407001d00f8224bb1449254b3a3
+61 1aaacf09ce7209ed23fa0875be09a133
+62 e5face2b007eeaaa837895a6e32c63f0
+63 43a38c4b0243555e9cf655ce60c8403a
+64 6b3ca212cd7cf131f4bd8bdd9085618b
+65 ffda0a086d4259b9c48bd26391f7ebaf
+66 1f392bbb0662c3e1cb97073a5e119570
+67 33c8041b5a8341f1b117e40b2f8bd0ee
+68 b203f57d48d584ff5479f76ce76e6eba
+69 72a6172c2b14abbf64ab74a27f03fc89
+70 12a05415f69f217712ac65a0858ddfdc
+71 8bdd033aa314600e78585dc42a88c28b
+72 b2b70633781346cfa203e243319f6409
+73 cb158a725e4f3f1ef6f2053751db07d0
+74 82f3963cfebe83618ea21af5fd38d164
+75 cfb9e6e451c6855e1a7dce78d7b4cc5a
+76 eab0e37d16bbc78b21e234767f5056eb
+77 c76407fe3c50d02fba700da0011167cc
+78 1339da94058abc3fcfcf61a81e1597b7
+79 3c58d27f69d6e927bd0cb1b16bdb30ba
+80 1e500d97a85b3dd3a0b4048fe6ad54ae
+81 d03d3e0bc34d1aec0569567d0ca25365
+82 55d7ddafa551c8b7e0f6aec128ca6442
+83 8ee668de06a360b26af96902edd1c12f
+84 3b8914e6a79a67037057781cf25b6825
+85 37039d22b6e3fb8e26c29eb459ca81ae
+86 707da7bd7982b4ba685981bf32b20103
+87 c3bf51c8c12289d200c2aa0532b3b6c3
+88 5a20abf3322051f8cbc5c0d1d96724e1
+89 1e3e3e730c8447afb79331f6740d379d
+90 0414da13cd7ac8cc53ed97f9c12f52a8
+91 b862c11cc516d750ccac6e10436c6746
+92 0e7febc44370fd57a370d3fbdd9bf16c
+93 85488f13dd47b028a9db94e136eae19d
+94 f9605bb472f52d1775e669b86691e848
+95 33b4d6bc8f327e1a48328d5f5071d7e7
+96 917e41d300faaedfb5d1a67eafa85ef4
+97 b7764a86130d50379833b9606460c2d2
+98 f1b5d819e4441898a6278b99859a1774
+99 1a4bcfaa64467f4bc03f0f00b27cf063
+100 cbd5cef546acc0bfa33117d7c1ae58a8
+show status like '%sort%';
+Variable_name Value
+Sort_merge_passes 4
+Sort_priority_queue_sorts 0
+Sort_range 0
+Sort_rows 10000
+Sort_scan 1
+set sort_buffer_size=default;
+set @@RAND_SEED1= @save_rand_seed1;
+set @@RAND_SEED2= @save_rand_seed2;
+drop function generate_normal_distribution_sample;
+drop function generate_random_string;
+drop function clipped_normal_distribution;
+drop table t1, t2, t3;
diff --git a/mysql-test/main/order_by_pack_big.test b/mysql-test/main/order_by_pack_big.test
new file mode 100644
index 00000000000..32c5549eb94
--- /dev/null
+++ b/mysql-test/main/order_by_pack_big.test
@@ -0,0 +1,133 @@
+--source include/big_test.inc
+--source include/have_sequence.inc
+--source include/have_64bit.inc
+
+set @save_rand_seed1= @@RAND_SEED1;
+set @save_rand_seed2= @@RAND_SEED2;
+set @@RAND_SEED1=810763568, @@RAND_SEED2=600681772;
+
+create table t1(a int);
+insert into t1 select seq from seq_1_to_10000 order by rand();
+delimiter |;
+
+--echo #
+--echo # parameters:
+--echo # mean mean for the column to be considered
+--echo # max_val max_value for the column to be considered
+--echo #
+--echo # This function generate a sample of a normal distribution
+--echo # This function return a point
+--echo # of the normal distribution with a given mean.
+--echo #
+
+CREATE FUNCTION
+generate_normal_distribution_sample(mean DOUBLE, max_val DOUBLE)RETURNS DOUBLE
+BEGIN
+ DECLARE z DOUBLE DEFAULT 0;
+ SET z= (rand() + rand() + rand() + rand() + rand() + rand())/6;
+ SET z= 2*(max_val-mean)*z;
+ SET z= z + mean - (max_val-mean);
+ return z;
+END|
+
+--echo #
+--echo # parameters:
+--echo # len length of the random string to be generated
+--echo #
+--echo # This function generates a random string for the length passed
+--echo # as an argument with characters in the range of [A,Z]
+--echo #
+
+CREATE FUNCTION generate_random_string(len INT) RETURNS varchar(128)
+BEGIN
+ DECLARE str VARCHAR(256) DEFAULT '';
+ DECLARE x INT DEFAULT 0;
+ WHILE (len > 0) DO
+ SET x =round(rand()*25);
+ SET str= CONCAT(str, CHAR(65 + x));
+ SET len= len-1;
+ END WHILE;
+RETURN str;
+END|
+
+--echo #
+--echo # parameters:
+--echo # mean mean for the column to be considered
+--echo # min_val min_value for the column to be considered
+--echo # max_val max_value for the column to be considered
+--echo #
+--echo # This function generate a normal distribution sample in the range of
+--echo # [min_val, max_val]
+--echo #
+
+CREATE FUNCTION
+clipped_normal_distribution(mean DOUBLE, min_val DOUBLE, max_val DOUBLE)
+RETURNS INT
+BEGIN
+ DECLARE r DOUBLE DEFAULT 0;
+ WHILE 1=1 DO
+ set r= generate_normal_distribution_sample(mean, max_val);
+ IF (r >= min_val AND r <= max_val) THEN
+ RETURN round(r);
+ end if;
+ END WHILE;
+ RETURN 0;
+END|
+
+delimiter ;|
+
+create table t2 (id INT NOT NULL, a INT, b int);
+insert into t2
+select a, clipped_normal_distribution(12, 0, 64),
+ clipped_normal_distribution(32, 0, 128)
+from t1;
+
+CREATE TABLE t3(
+ id INT NOT NULL,
+ names VARCHAR(64),
+ address VARCHAR(128),
+ PRIMARY KEY (id)
+);
+
+--echo #
+--echo # table t3 stores random strings calculated from the length stored in
+--echo # table t2
+--echo #
+
+insert into t3
+select id, generate_random_string(a), generate_random_string(b) from t2;
+
+
+let $query= select id DIV 100 as x,
+ MD5(group_concat(substring(names,1,3), substring(address,1,3)
+ order by substring(names,1,3), substring(address,1,3)))
+ FROM t3
+ GROUP BY x;
+
+--echo #
+--echo # All records fit in memory
+--echo #
+
+set sort_buffer_size=262144*10;
+flush status;
+eval $query;
+show status like '%sort%';
+set sort_buffer_size=default;
+
+--echo #
+--echo # Test for merge_many_buff
+--echo #
+
+set sort_buffer_size=32768;
+flush status;
+eval $query;
+show status like '%sort%';
+set sort_buffer_size=default;
+
+set @@RAND_SEED1= @save_rand_seed1;
+set @@RAND_SEED2= @save_rand_seed2;
+
+drop function generate_normal_distribution_sample;
+drop function generate_random_string;
+drop function clipped_normal_distribution;
+drop table t1, t2, t3;
diff --git a/sql/bounded_queue.h b/sql/bounded_queue.h
index fd733caa019..cd710d835aa 100644
--- a/sql/bounded_queue.h
+++ b/sql/bounded_queue.h
@@ -57,7 +57,7 @@ class Bounded_queue
@param to Where to put the key.
@param from The input data.
*/
- typedef void (*keymaker_function)(Sort_param *param,
+ typedef uint (*keymaker_function)(Sort_param *param,
Key_type *to,
Element_type *from);
@@ -181,7 +181,7 @@ void Bounded_queue<Element_type, Key_type>::push(Element_type *element)
{
// Replace top element with new key, and re-order the queue.
Key_type **pq_top= reinterpret_cast<Key_type **>(queue_top(&m_queue));
- (*m_keymaker)(m_sort_param, *pq_top, element);
+ (void)(*m_keymaker)(m_sort_param, *pq_top, element);
queue_replace_top(&m_queue);
} else {
// Insert new key into the queue.
diff --git a/sql/field.h b/sql/field.h
index 58f49f78cc7..df0f97776fb 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -1527,6 +1527,7 @@ class Field: public Value_source
{ return length;}
virtual uint max_packed_col_length(uint max_length)
{ return max_length;}
+ virtual bool is_packable() { return false; }
uint offset(const uchar *record) const
{
@@ -2139,6 +2140,7 @@ class Field_longstr :public Field_str
bool can_optimize_range(const Item_bool_func *cond,
const Item *item,
bool is_eq_func) const;
+ bool is_packable() { return true; }
};
/* base class for float and double and decimal (old one) */
diff --git a/sql/filesort.cc b/sql/filesort.cc
index df6e1eb9104..d93ae3b595a 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -48,17 +48,17 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
ha_rows *found_rows);
static bool write_keys(Sort_param *param, SORT_INFO *fs_info,
uint count, IO_CACHE *buffer_file, IO_CACHE *tempfile);
-static void make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos);
+static uint make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos);
static void register_used_fields(Sort_param *param);
static bool save_index(Sort_param *param, uint count,
SORT_INFO *table_sort);
static uint suffix_length(ulong string_length);
static uint sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
- bool *multi_byte_charset);
-static SORT_ADDON_FIELD *get_addon_fields(TABLE *table, uint sortlength,
- LEX_STRING *addon_buf);
-static void unpack_addon_fields(struct st_sort_addon_field *addon_field,
- uchar *buff, uchar *buff_end);
+ bool *multi_byte_charset);
+static Addon_fields *get_addon_fields(TABLE *table, uint sortlength,
+ uint *addon_length,
+ uint *m_packable_length);
+
static bool check_if_pq_applicable(Sort_param *param, SORT_INFO *info,
TABLE *table,
ha_rows records, size_t memory_available);
@@ -66,7 +66,7 @@ static bool check_if_pq_applicable(Sort_param *param, SORT_INFO *info,
void Sort_param::init_for_filesort(uint sortlen, TABLE *table,
ha_rows maxrows, bool sort_positions)
{
- DBUG_ASSERT(addon_field == 0 && addon_buf.length == 0);
+ DBUG_ASSERT(addon_fields == NULL);
sort_length= sortlen;
ref_length= table->file->ref_length;
@@ -77,12 +77,13 @@ void Sort_param::init_for_filesort(uint sortlen, TABLE *table,
Get the descriptors of all fields whose values are appended
to sorted fields and get its total length in addon_buf.length
*/
- addon_field= get_addon_fields(table, sort_length, &addon_buf);
+ addon_fields= get_addon_fields(table, sort_length, &addon_length,
+ &m_packable_length);
}
- if (addon_field)
+ if (using_addon_fields())
{
- DBUG_ASSERT(addon_buf.length < UINT_MAX32);
- res_length= (uint)addon_buf.length;
+ DBUG_ASSERT(addon_length < UINT_MAX32);
+ res_length= addon_length;
}
else
{
@@ -93,11 +94,43 @@ void Sort_param::init_for_filesort(uint sortlen, TABLE *table,
*/
sort_length+= ref_length;
}
- rec_length= sort_length + (uint)addon_buf.length;
+ rec_length= sort_length + addon_length;
max_rows= maxrows;
}
+void Sort_param::try_to_pack_addons(ulong max_length_for_sort_data)
+{
+ if (!using_addon_fields() || // no addons, or
+ using_packed_addons()) // already packed
+ return;
+
+ if (!Addon_fields::can_pack_addon_fields(res_length))
+ return;
+
+ const uint sz= Addon_fields::size_of_length_field;;
+ if (rec_length + sz > max_length_for_sort_data)
+ return;
+
+ // Heuristic: skip packing if potential savings are less than 10 bytes.
+ if (m_packable_length < (10 + sz))
+ return;
+
+ SORT_ADDON_FIELD *addonf= addon_fields->begin();
+ for (;addonf != addon_fields->end(); ++addonf)
+ {
+ addonf->offset+= sz;
+ addonf->null_offset+= sz;
+ }
+
+ addon_fields->set_using_packed_addons(true);
+ m_using_packed_addons= true;
+
+ addon_length+= sz;
+ res_length+= sz;
+ rec_length+= sz;
+}
+
/**
Sort a table.
Creates a set of pointers that can be used to read the rows
@@ -134,7 +167,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
DBUG_ASSERT(thd->variables.sortbuff_size <= SIZE_T_MAX);
size_t memory_available= (size_t)thd->variables.sortbuff_size;
uint maxbuffer;
- BUFFPEK *buffpek;
+ Merge_chunk *buffpek;
ha_rows num_rows= HA_POS_ERROR;
IO_CACHE tempfile, buffpek_pointers, *outfile;
Sort_param param;
@@ -164,13 +197,16 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
if (subselect && subselect->filesort_buffer.is_allocated())
{
- /* Reuse cache from last call */
+ // Reuse cache from last call
sort->filesort_buffer= subselect->filesort_buffer;
sort->buffpek= subselect->sortbuffer;
subselect->filesort_buffer.reset();
subselect->sortbuffer.str=0;
}
+ DBUG_ASSERT(sort->sorted_result_in_fsbuf == FALSE ||
+ sort->record_pointers == NULL);
+
outfile= &sort->io_cache;
my_b_clear(&tempfile);
@@ -183,9 +219,8 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
&multi_byte_charset),
table, max_rows, filesort->sort_positions);
- sort->addon_buf= param.addon_buf;
- sort->addon_field= param.addon_field;
- sort->unpack= unpack_addon_fields;
+ sort->addon_fields= param.addon_fields;
+
if (multi_byte_charset &&
!(param.tmp_buffer= (char*) my_malloc(param.sort_length,
MYF(MY_WME | MY_THREAD_SPECIFIC))))
@@ -208,7 +243,15 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
thd->query_plan_flags|= QPLAN_FILESORT_PRIORITY_QUEUE;
status_var_increment(thd->status_var.filesort_pq_sorts_);
tracker->incr_pq_used();
+ param.using_pq= true;
const size_t compare_length= param.sort_length;
+ /*
+ For PQ queries (with limit) we know exactly how many pointers/records
+ we have in the buffer, so to simplify things, we initialize
+ all pointers here. (We cannot pack fields anyways, so there is no
+ point in doing lazy initialization).
+ */
+ sort->init_record_pointers();
if (pq.init(param.max_rows,
true, // max_at_top
NULL, // compare_function
@@ -223,21 +266,23 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
DBUG_ASSERT(thd->is_error());
goto err;
}
- // For PQ queries (with limit) we initialize all pointers.
- sort->init_record_pointers();
}
else
{
DBUG_PRINT("info", ("filesort PQ is not applicable"));
+ param.try_to_pack_addons(thd->variables.max_length_for_sort_data);
+ param.using_pq= false;
+
size_t min_sort_memory= MY_MAX(MIN_SORT_MEMORY,
param.sort_length*MERGEBUFF2);
- set_if_bigger(min_sort_memory, sizeof(BUFFPEK*)*MERGEBUFF2);
+ set_if_bigger(min_sort_memory, sizeof(Merge_chunk*)*MERGEBUFF2);
while (memory_available >= min_sort_memory)
{
ulonglong keys= memory_available / (param.rec_length + sizeof(char*));
param.max_keys_per_buffer= (uint) MY_MIN(num_rows, keys);
- if (sort->alloc_sort_buffer(param.max_keys_per_buffer, param.rec_length))
+ sort->alloc_sort_buffer(param.max_keys_per_buffer, param.rec_length);
+ if (sort->sort_buffer_size() > 0)
break;
size_t old_memory_available= memory_available;
memory_available= memory_available/4*3;
@@ -258,7 +303,9 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
goto err;
param.sort_form= table;
- param.end=(param.local_sortorder=filesort->sortorder)+s_length;
+ param.local_sortorder=
+ Bounds_checked_array<SORT_FIELD>(filesort->sortorder, s_length);
+
num_rows= find_all_keys(thd, ¶m, select,
sort,
&buffpek_pointers,
@@ -287,12 +334,20 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
my_free(sort->buffpek.str);
sort->buffpek.str= 0;
}
+
+ if (param.using_addon_fields())
+ {
+ DBUG_ASSERT(sort->addon_fields);
+ if (!sort->addon_fields->allocate_addon_buf(param.addon_length))
+ goto err;
+ }
+
if (!(sort->buffpek.str=
(char *) read_buffpek_from_file(&buffpek_pointers, maxbuffer,
(uchar*) sort->buffpek.str)))
goto err;
sort->buffpek.length= maxbuffer;
- buffpek= (BUFFPEK *) sort->buffpek.str;
+ buffpek= (Merge_chunk *) sort->buffpek.str;
close_cached_file(&buffpek_pointers);
/* Open cached file if it isn't open */
if (! my_b_inited(outfile) &&
@@ -306,25 +361,25 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
Use also the space previously used by string pointers in sort_buffer
for temporary key storage.
*/
- param.max_keys_per_buffer=((param.max_keys_per_buffer *
- (param.rec_length + sizeof(char*))) /
- param.rec_length - 1);
+
+ param.max_keys_per_buffer= static_cast<uint>(sort->sort_buffer_size()) /
+ param.rec_length;
set_if_bigger(param.max_keys_per_buffer, 1);
maxbuffer--; // Offset from 0
- if (merge_many_buff(¶m,
- (uchar*) sort->get_sort_keys(),
+
+ if (merge_many_buff(¶m, sort->get_raw_buf(),
buffpek,&maxbuffer,
- &tempfile))
+ &tempfile))
goto err;
if (flush_io_cache(&tempfile) ||
reinit_io_cache(&tempfile,READ_CACHE,0L,0,0))
goto err;
if (merge_index(¶m,
- (uchar*) sort->get_sort_keys(),
+ sort->get_raw_buf(),
buffpek,
maxbuffer,
&tempfile,
- outfile))
+ outfile))
goto err;
}
@@ -339,7 +394,8 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
my_free(param.tmp_buffer);
if (!subselect || !subselect->is_uncacheable())
{
- sort->free_sort_buffer();
+ if (!param.using_addon_fields())
+ sort->free_sort_buffer();
my_free(sort->buffpek.str);
}
else
@@ -347,7 +403,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
/* Remember sort buffers for next subquery call */
subselect->filesort_buffer= sort->filesort_buffer;
subselect->sortbuffer= sort->buffpek;
- sort->filesort_buffer.reset(); // Don't free this
+ sort->filesort_buffer.reset(); // Don't free this*/
}
sort->buffpek.str= 0;
@@ -361,7 +417,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
my_off_t save_pos=outfile->pos_in_file;
/* For following reads */
if (reinit_io_cache(outfile,READ_CACHE,0L,0,0))
- error=1;
+ error=1;
outfile->end_of_file=save_pos;
}
}
@@ -490,10 +546,10 @@ uint Filesort::make_sortorder(THD *thd, JOIN *join, table_map first_table_bit)
static uchar *read_buffpek_from_file(IO_CACHE *buffpek_pointers, uint count,
uchar *buf)
{
- size_t length= sizeof(BUFFPEK)*count;
+ size_t length= sizeof(Merge_chunk)*count;
uchar *tmp= buf;
DBUG_ENTER("read_buffpek_from_file");
- if (count > UINT_MAX/sizeof(BUFFPEK))
+ if (count > UINT_MAX/sizeof(Merge_chunk))
return 0; /* sizeof(BUFFPEK)*count will overflow */
if (!tmp)
tmp= (uchar *)my_malloc(length, MYF(MY_WME | MY_THREAD_SPECIFIC));
@@ -702,7 +758,8 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
handler *file;
MY_BITMAP *save_read_set, *save_write_set;
Item *sort_cond;
- ha_rows retval;
+ ha_rows num_records= 0;
+ const bool packed_addon_fields= param->using_packed_addons();
DBUG_ENTER("find_all_keys");
DBUG_PRINT("info",("using: %s",
(select ? select->quick ? "ranges" : "where":
@@ -810,23 +867,27 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
if (write_record)
{
- ++(*found_rows);
if (pq)
- {
pq->push(ref_pos);
- idx= pq->num_elements();
- }
else
{
- if (idx == param->max_keys_per_buffer)
+ if (fs_info->isfull())
{
if (write_keys(param, fs_info, idx, buffpek_pointers, tempfile))
goto err;
- idx= 0;
- indexpos++;
+ idx= 0;
+ indexpos++;
}
- make_sortkey(param, fs_info->get_record_buffer(idx++), ref_pos);
+ if (idx == 0)
+ fs_info->init_next_record_pointer();
+ uchar *start_of_rec= fs_info->get_next_record_pointer();
+
+ const uint rec_sz= make_sortkey(param, start_of_rec, ref_pos);
+ if (packed_addon_fields && rec_sz != param->rec_length)
+ fs_info->adjust_next_record_pointer(rec_sz);
+ idx++;
}
+ num_records++;
}
/* It does not make sense to read more keys in case of a fatal error */
@@ -862,11 +923,14 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select,
if (indexpos && idx &&
write_keys(param, fs_info, idx, buffpek_pointers, tempfile))
DBUG_RETURN(HA_POS_ERROR); /* purecov: inspected */
- retval= (my_b_inited(tempfile) ?
- (ha_rows) (my_b_tell(tempfile)/param->rec_length) :
- idx);
- DBUG_PRINT("info", ("find_all_keys return %llu", (ulonglong) retval));
- DBUG_RETURN(retval);
+
+ (*found_rows)= num_records;
+ if (pq)
+ num_records= pq->num_elements();
+
+
+ DBUG_PRINT("info", ("find_all_keys return %llu", (ulonglong) num_records));
+ DBUG_RETURN(num_records);
err:
sort_form->column_bitmaps_set(save_read_set, save_write_set);
@@ -901,36 +965,48 @@ write_keys(Sort_param *param, SORT_INFO *fs_info, uint count,
IO_CACHE *buffpek_pointers, IO_CACHE *tempfile)
{
size_t rec_length;
- uchar **end;
- BUFFPEK buffpek;
+ Merge_chunk buffpek;
DBUG_ENTER("write_keys");
rec_length= param->rec_length;
- uchar **sort_keys= fs_info->get_sort_keys();
fs_info->sort_buffer(param, count);
if (!my_b_inited(tempfile) &&
open_cached_file(tempfile, mysql_tmpdir, TEMP_PREFIX, DISK_BUFFER_SIZE,
MYF(MY_WME)))
- goto err; /* purecov: inspected */
+ DBUG_RETURN(1); /* purecov: inspected */
/* check we won't have more buffpeks than we can possibly keep in memory */
- if (my_b_tell(buffpek_pointers) + sizeof(BUFFPEK) > (ulonglong)UINT_MAX)
- goto err;
+ if (my_b_tell(buffpek_pointers) + sizeof(Merge_chunk) > (ulonglong)UINT_MAX)
+ DBUG_RETURN(1);
+
bzero(&buffpek, sizeof(buffpek));
- buffpek.file_pos= my_b_tell(tempfile);
+ buffpek.set_file_position(my_b_tell(tempfile));
if ((ha_rows) count > param->max_rows)
count=(uint) param->max_rows; /* purecov: inspected */
- buffpek.count=(ha_rows) count;
- for (end=sort_keys+count ; sort_keys != end ; sort_keys++)
- if (my_b_write(tempfile, (uchar*) *sort_keys, (uint) rec_length))
- goto err;
+ buffpek.set_rowcount(static_cast<ha_rows>(count));
+
+ const bool packed_addon_fields= param->using_packed_addons();
+ for (uint ix= 0; ix < count; ++ix)
+ {
+ uchar *record= fs_info->get_sorted_record(ix);
+ if (packed_addon_fields)
+ {
+ rec_length= param->sort_length +
+ Addon_fields::read_addon_length(record + param->sort_length);
+ }
+ else
+ rec_length= param->rec_length;
+
+ if (my_b_write(tempfile, record, rec_length))
+ DBUG_RETURN(1); /* purecov: inspected */
+ }
+
if (my_b_write(buffpek_pointers, (uchar*) &buffpek, sizeof(buffpek)))
- goto err;
+ DBUG_RETURN(1);
+
DBUG_RETURN(0);
-err:
- DBUG_RETURN(1);
} /* write_keys */
@@ -1168,14 +1244,15 @@ Type_handler_real_result::make_sort_key(uchar *to, Item *item,
/** Make a sort-key from record. */
-static void make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos)
+static uint make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos)
{
Field *field;
SORT_FIELD *sort_field;
uint length;
+ uchar *orig_to= to;
- for (sort_field=param->local_sortorder ;
- sort_field != param->end ;
+ for (sort_field=param->local_sortorder.begin() ;
+ sort_field != param->local_sortorder.end() ;
sort_field++)
{
bool maybe_null=0;
@@ -1202,15 +1279,15 @@ static void make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos)
length=sort_field->length;
while (length--)
{
- *to = (uchar) (~ *to);
- to++;
+ *to = (uchar) (~ *to);
+ to++;
}
}
else
to+= sort_field->length;
}
- if (param->addon_field)
+ if (param->using_addon_fields())
{
/*
Save field values appended to sorted fields.
@@ -1218,41 +1295,44 @@ static void make_sortkey(Sort_param *param, uchar *to, uchar *ref_pos)
In this implementation we use fixed layout for field values -
the same for all records.
*/
- SORT_ADDON_FIELD *addonf= param->addon_field;
+ SORT_ADDON_FIELD *addonf= param->addon_fields->begin();
uchar *nulls= to;
+ uchar *p_len= to;
DBUG_ASSERT(addonf != 0);
+ const bool packed_addon_fields= param->addon_fields->using_packed_addons();
+ uint32 res_len= addonf->offset;
memset(nulls, 0, addonf->offset);
to+= addonf->offset;
- for ( ; (field= addonf->field) ; addonf++)
+ for ( ; addonf != param->addon_fields->end() ; addonf++)
{
+ Field *field= addonf->field;
if (addonf->null_bit && field->is_null())
{
nulls[addonf->null_offset]|= addonf->null_bit;
-#ifdef HAVE_valgrind
- bzero(to, addonf->length);
-#endif
+ if (!packed_addon_fields)
+ to+= addonf->length;
}
else
{
-#ifdef HAVE_valgrind
uchar *end= field->pack(to, field->ptr);
- uint length= (uint) ((to + addonf->length) - end);
- DBUG_ASSERT((int) length >= 0);
- if (length)
- bzero(end, length);
-#else
- (void) field->pack(to, field->ptr);
-#endif
+ int sz= static_cast<int>(end - to);
+ res_len += sz;
+ if (packed_addon_fields)
+ to+= sz;
+ else
+ to+= addonf->length;
}
- to+= addonf->length;
}
+ if (packed_addon_fields)
+ Addon_fields::store_addon_length(p_len, res_len);
}
else
{
/* Save filepos last */
memcpy((uchar*) to, ref_pos, (size_t) param->ref_length);
+ to+= param->ref_length;
}
- return;
+ return static_cast<uint>(to - orig_to);
}
@@ -1265,8 +1345,8 @@ static void register_used_fields(Sort_param *param)
SORT_FIELD *sort_field;
TABLE *table=param->sort_form;
- for (sort_field= param->local_sortorder ;
- sort_field != param->end ;
+ for (sort_field= param->local_sortorder.begin() ;
+ sort_field != param->local_sortorder.end() ;
sort_field++)
{
Field *field;
@@ -1281,12 +1361,14 @@ static void register_used_fields(Sort_param *param)
}
}
- if (param->addon_field)
+ if (param->using_addon_fields())
{
- SORT_ADDON_FIELD *addonf= param->addon_field;
- Field *field;
- for ( ; (field= addonf->field) ; addonf++)
+ SORT_ADDON_FIELD *addonf= param->addon_fields->begin();
+ for ( ; (addonf != param->addon_fields->end()) ; addonf++)
+ {
+ Field *field= addonf->field;
field->register_field_in_read_map();
+ }
}
else
{
@@ -1305,16 +1387,24 @@ static bool save_index(Sort_param *param, uint count,
DBUG_ASSERT(table_sort->record_pointers == 0);
table_sort->sort_buffer(param, count);
+
+ if (param->using_addon_fields())
+ {
+ table_sort->sorted_result_in_fsbuf= TRUE;
+ table_sort->set_sort_length(param->sort_length);
+ DBUG_RETURN(0);
+ }
+
res_length= param->res_length;
offset= param->rec_length-res_length;
if (!(to= table_sort->record_pointers=
(uchar*) my_malloc(res_length*count,
MYF(MY_WME | MY_THREAD_SPECIFIC))))
DBUG_RETURN(1); /* purecov: inspected */
- uchar **sort_keys= table_sort->get_sort_keys();
- for (uchar **end= sort_keys+count ; sort_keys != end ; sort_keys++)
+ for (uint ix= 0; ix < count; ++ix)
{
- memcpy(to, *sort_keys+offset, res_length);
+ uchar *record= table_sort->get_sorted_record(ix);
+ memcpy(to, record + offset, res_length);
to+= res_length;
}
DBUG_RETURN(0);
@@ -1385,8 +1475,9 @@ static bool check_if_pq_applicable(Sort_param *param,
// The whole source set fits into memory.
if (param->max_rows < num_rows/PQ_slowness )
{
- DBUG_RETURN(filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->rec_length) != NULL);
+ filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
+ param->rec_length);
+ DBUG_RETURN(filesort_info->sort_buffer_size() != 0);
}
else
{
@@ -1398,12 +1489,13 @@ static bool check_if_pq_applicable(Sort_param *param,
// Do we have space for LIMIT rows in memory?
if (param->max_keys_per_buffer < num_available_keys)
{
- DBUG_RETURN(filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->rec_length) != NULL);
+ filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
+ param->rec_length);
+ DBUG_RETURN(filesort_info->sort_buffer_size() != 0);
}
// Try to strip off addon fields.
- if (param->addon_field)
+ if (param->addon_fields)
{
const size_t row_length=
param->sort_length + param->ref_length + sizeof(char*);
@@ -1435,14 +1527,15 @@ static bool check_if_pq_applicable(Sort_param *param,
if (sort_merge_cost < pq_cost)
DBUG_RETURN(false);
- if (filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
- param->sort_length +
- param->ref_length))
+ filesort_info->alloc_sort_buffer(param->max_keys_per_buffer,
+ param->sort_length + param->ref_length);
+
+ if (filesort_info->sort_buffer_size() > 0)
{
/* Make attached data to be references instead of fields. */
- my_free(filesort_info->addon_field);
- filesort_info->addon_field= NULL;
- param->addon_field= NULL;
+ my_free(filesort_info->addon_fields);
+ filesort_info->addon_fields= NULL;
+ param->addon_fields= NULL;
param->res_length= param->ref_length;
param->sort_length+= param->ref_length;
@@ -1458,12 +1551,12 @@ static bool check_if_pq_applicable(Sort_param *param,
/** Merge buffers to make < MERGEBUFF2 buffers. */
-int merge_many_buff(Sort_param *param, uchar *sort_buffer,
- BUFFPEK *buffpek, uint *maxbuffer, IO_CACHE *t_file)
+int merge_many_buff(Sort_param *param, Sort_buffer sort_buffer,
+ Merge_chunk *buffpek, uint *maxbuffer, IO_CACHE *t_file)
{
uint i;
IO_CACHE t_file2,*from_file,*to_file,*temp;
- BUFFPEK *lastbuff;
+ Merge_chunk *lastbuff;
DBUG_ENTER("merge_many_buff");
if (*maxbuffer < MERGEBUFF2)
@@ -1483,11 +1576,11 @@ int merge_many_buff(Sort_param *param, uchar *sort_buffer,
lastbuff=buffpek;
for (i=0 ; i <= *maxbuffer-MERGEBUFF*3/2 ; i+=MERGEBUFF)
{
- if (merge_buffers(param,from_file,to_file,sort_buffer,lastbuff++,
+ if (merge_buffers(param,from_file,to_file,sort_buffer, lastbuff++,
buffpek+i,buffpek+i+MERGEBUFF-1,0))
goto cleanup;
}
- if (merge_buffers(param,from_file,to_file,sort_buffer,lastbuff++,
+ if (merge_buffers(param,from_file,to_file,sort_buffer, lastbuff++,
buffpek+i,buffpek+ *maxbuffer,0))
break; /* purecov: inspected */
if (flush_io_cache(to_file))
@@ -1513,24 +1606,68 @@ int merge_many_buff(Sort_param *param, uchar *sort_buffer,
(ulong)-1 if something goes wrong
*/
-ulong read_to_buffer(IO_CACHE *fromfile, BUFFPEK *buffpek,
- uint rec_length)
+ulong read_to_buffer(IO_CACHE *fromfile, Merge_chunk *buffpek,
+ Sort_param *param)
{
- ulong count;
- ulong length= 0;
+ ha_rows count;
+ uint rec_length= param->rec_length;
- if ((count= (ulong) MY_MIN((ha_rows) buffpek->max_keys,buffpek->count)))
+ if ((count= MY_MIN(buffpek->max_keys(),buffpek->rowcount())))
{
- length= rec_length*count;
- if (unlikely(my_b_pread(fromfile, (uchar*) buffpek->base, length,
- buffpek->file_pos)))
+ size_t bytes_to_read;
+ if (param->using_packed_addons())
+ {
+ count= buffpek->rowcount();
+ bytes_to_read= MY_MIN(buffpek->buffer_size(),
+ static_cast<size_t>(fromfile->end_of_file -
+ buffpek->file_position()));
+ }
+ else
+ bytes_to_read= rec_length * static_cast<size_t>(count);
+
+ if (unlikely(my_b_pread(fromfile, buffpek->buffer_start(),
+ bytes_to_read, buffpek->file_position())))
return ((ulong) -1);
- buffpek->key=buffpek->base;
- buffpek->file_pos+= length; /* New filepos */
- buffpek->count-= count;
- buffpek->mem_count= count;
+
+ size_t num_bytes_read;
+ if (param->using_packed_addons())
+ {
+ /*
+ The last record read is most likely not complete here.
+ We need to loop through all the records, reading the length fields,
+ and then "chop off" the final incomplete record.
+ */
+ uchar *record= buffpek->buffer_start();
+ uint ix= 0;
+ for (; ix < count; ++ix)
+ {
+ if (record + param->sort_length + Addon_fields::size_of_length_field >
+ buffpek->buffer_end())
+ break; // Incomplete record.
+ uchar *plen= record + param->sort_length;
+ uint res_length= Addon_fields::read_addon_length(plen);
+ if (plen + res_length > buffpek->buffer_end())
+ break; // Incomplete record.
+ DBUG_ASSERT(res_length > 0);
+ record+= param->sort_length;
+ record+= res_length;
+ }
+ DBUG_ASSERT(ix > 0);
+ count= ix;
+ num_bytes_read= record - buffpek->buffer_start();
+ DBUG_PRINT("info", ("read %llu bytes of complete records",
+ static_cast<ulonglong>(bytes_to_read)));
+ }
+ else
+ num_bytes_read= bytes_to_read;
+
+ buffpek->init_current_key();
+ buffpek->advance_file_position(num_bytes_read); /* New filepos */
+ buffpek->decrement_rowcount(count);
+ buffpek->set_mem_count(count);
+ return (ulong) num_bytes_read;
}
- return (length);
+ return 0;
} /* read_to_buffer */
@@ -1545,25 +1682,15 @@ ulong read_to_buffer(IO_CACHE *fromfile, BUFFPEK *buffpek,
@param[in] key_length key length
*/
-void reuse_freed_buff(QUEUE *queue, BUFFPEK *reuse, uint key_length)
+void reuse_freed_buff(QUEUE *queue, Merge_chunk *reuse, uint key_length)
{
- uchar *reuse_end= reuse->base + reuse->max_keys * key_length;
for (uint i= queue_first_element(queue);
i <= queue_last_element(queue);
i++)
{
- BUFFPEK *bp= (BUFFPEK *) queue_element(queue, i);
- if (bp->base + bp->max_keys * key_length == reuse->base)
- {
- bp->max_keys+= reuse->max_keys;
+ Merge_chunk *bp= (Merge_chunk *) queue_element(queue, i);
+ if (reuse->merge_freed_buff(bp))
return;
- }
- else if (bp->base == reuse_end)
- {
- bp->base= reuse->base;
- bp->max_keys+= reuse->max_keys;
- return;
- }
}
DBUG_ASSERT(0);
}
@@ -1588,8 +1715,8 @@ void reuse_freed_buff(QUEUE *queue, BUFFPEK *reuse, uint key_length)
*/
bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
- IO_CACHE *to_file, uchar *sort_buffer,
- BUFFPEK *lastbuff, BUFFPEK *Fb, BUFFPEK *Tb,
+ IO_CACHE *to_file, Sort_buffer sort_buffer,
+ Merge_chunk *lastbuff, Merge_chunk *Fb, Merge_chunk *Tb,
int flag)
{
bool error= 0;
@@ -1599,7 +1726,7 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
ha_rows max_rows,org_max_rows;
my_off_t to_start_filepos;
uchar *strpos;
- BUFFPEK *buffpek;
+ Merge_chunk *buffpek;
QUEUE queue;
qsort2_cmp cmp;
void *first_cmp_arg;
@@ -1625,7 +1752,7 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
uint wr_offset= flag ? offset : 0;
maxcount= (ulong) (param->max_keys_per_buffer/((uint) (Tb-Fb) +1));
to_start_filepos= my_b_tell(to_file);
- strpos= sort_buffer;
+ strpos= sort_buffer.array();
org_max_rows=max_rows= param->max_rows;
set_if_bigger(maxcount, 1);
@@ -1640,19 +1767,23 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
cmp= get_ptr_compare(sort_length);
first_cmp_arg= (void*) &sort_length;
}
- if (unlikely(init_queue(&queue, (uint) (Tb-Fb)+1, offsetof(BUFFPEK,key), 0,
+ if (unlikely(init_queue(&queue, (uint) (Tb-Fb)+1,
+ offsetof(Merge_chunk,m_current_key), 0,
(queue_compare) cmp, first_cmp_arg, 0, 0)))
DBUG_RETURN(1); /* purecov: inspected */
for (buffpek= Fb ; buffpek <= Tb ; buffpek++)
{
- buffpek->base= strpos;
- buffpek->max_keys= maxcount;
- bytes_read= read_to_buffer(from_file, buffpek, rec_length);
+ buffpek->set_buffer(strpos,
+ strpos + (sort_buffer.size()/((uint) (Tb-Fb) +1)));
+
+ buffpek->set_max_keys(maxcount);
+ bytes_read= read_to_buffer(from_file, buffpek, param);
if (unlikely(bytes_read == (ulong) -1))
goto err; /* purecov: inspected */
-
strpos+= bytes_read;
- buffpek->max_keys= buffpek->mem_count; // If less data in buffers than expected
+ buffpek->set_buffer_end(strpos);
+ // If less data in buffers than expected
+ buffpek->set_max_keys(buffpek->mem_count());
queue_insert(&queue, (uchar*) buffpek);
}
@@ -1663,16 +1794,17 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
Copy the first argument to unique_buff for unique removal.
Store it also in 'to_file'.
*/
- buffpek= (BUFFPEK*) queue_top(&queue);
- memcpy(unique_buff, buffpek->key, rec_length);
+ buffpek= (Merge_chunk*) queue_top(&queue);
+ memcpy(unique_buff, buffpek->current_key(), rec_length);
if (min_dupl_count)
memcpy(&dupl_count, unique_buff+dupl_count_ofs,
sizeof(dupl_count));
- buffpek->key+= rec_length;
- if (! --buffpek->mem_count)
+ buffpek->advance_current_key(rec_length);
+ buffpek->decrement_mem_count();
+ if (buffpek->mem_count() == 0)
{
if (unlikely(!(bytes_read= read_to_buffer(from_file, buffpek,
- rec_length))))
+ param))))
{
(void) queue_remove_top(&queue);
reuse_freed_buff(&queue, buffpek, rec_length);
@@ -1692,61 +1824,68 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
for (;;)
{
- buffpek= (BUFFPEK*) queue_top(&queue);
- src= buffpek->key;
+ buffpek= (Merge_chunk*) queue_top(&queue);
+ src= buffpek->current_key();
if (cmp) // Remove duplicates
{
- if (!(*cmp)(first_cmp_arg, &unique_buff,
- (uchar**) &buffpek->key))
- {
+ uchar *current_key= buffpek->current_key();
+ if (!(*cmp)(first_cmp_arg, &unique_buff, ¤t_key))
+ {
if (min_dupl_count)
- {
+ {
element_count cnt;
- memcpy(&cnt, (uchar *) buffpek->key+dupl_count_ofs, sizeof(cnt));
+ memcpy(&cnt, buffpek->current_key() + dupl_count_ofs, sizeof(cnt));
dupl_count+= cnt;
}
goto skip_duplicate;
}
if (min_dupl_count)
- {
+ {
memcpy(unique_buff+dupl_count_ofs, &dupl_count,
sizeof(dupl_count));
}
- src= unique_buff;
- }
-
- /*
- Do not write into the output file if this is the final merge called
- for a Unique object used for intersection and dupl_count is less
- than min_dupl_count.
- If the Unique object is used to intersect N sets of unique elements
- then for any element:
- dupl_count >= N <=> the element is occurred in each of these N sets.
- */
- if (!check_dupl_count || dupl_count >= min_dupl_count)
- {
- if (my_b_write(to_file, src+wr_offset, wr_len))
- goto err; /* purecov: inspected */
+ src= unique_buff;
}
- if (cmp)
- {
- memcpy(unique_buff, (uchar*) buffpek->key, rec_length);
- if (min_dupl_count)
- memcpy(&dupl_count, unique_buff+dupl_count_ofs,
- sizeof(dupl_count));
- }
- if (!--max_rows)
+
{
- /* Nothing more to do */
- goto end; /* purecov: inspected */
- }
+ param->get_rec_and_res_len(buffpek->current_key(),
+ &rec_length, &res_length);
+ const uint bytes_to_write= (flag == 0) ? rec_length : res_length;
+ /*
+ Do not write into the output file if this is the final merge called
+ for a Unique object used for intersection and dupl_count is less
+ than min_dupl_count.
+ If the Unique object is used to intersect N sets of unique elements
+ then for any element:
+ dupl_count >= N <=> the element is occurred in each of these N sets.
+ */
+ if (!check_dupl_count || dupl_count >= min_dupl_count)
+ {
+ if (my_b_write(to_file, src + wr_offset, bytes_to_write))
+ goto err; /* purecov: inspected */
+ }
+ if (cmp)
+ {
+ memcpy(unique_buff, buffpek->current_key(), rec_length);
+ if (min_dupl_count)
+ memcpy(&dupl_count, unique_buff+dupl_count_ofs,
+ sizeof(dupl_count));
+ }
+ if (!--max_rows)
+ {
+ /* Nothing more to do */
+ goto end; /* purecov: inspected */
+ }
+ }
skip_duplicate:
- buffpek->key+= rec_length;
- if (! --buffpek->mem_count)
+ buffpek->advance_current_key(rec_length);
+ buffpek->decrement_mem_count();
+
+ if (buffpek->mem_count() == 0)
{
if (unlikely(!(bytes_read= read_to_buffer(from_file, buffpek,
- rec_length))))
+ param))))
{
(void) queue_remove_top(&queue);
reuse_freed_buff(&queue, buffpek, rec_length);
@@ -1758,9 +1897,10 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
queue_replace_top(&queue); /* Top element has been replaced */
}
}
- buffpek= (BUFFPEK*) queue_top(&queue);
- buffpek->base= (uchar*) sort_buffer;
- buffpek->max_keys= param->max_keys_per_buffer;
+ buffpek= (Merge_chunk*) queue_top(&queue);
+ buffpek->set_buffer(sort_buffer.array(),
+ sort_buffer.array() + sort_buffer.size());
+ buffpek->set_max_keys(param->max_keys_per_buffer);
/*
As we know all entries in the buffer are unique, we only have to
@@ -1768,16 +1908,17 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
*/
if (cmp)
{
- if (!(*cmp)(first_cmp_arg, &unique_buff, (uchar**) &buffpek->key))
+ uchar *current_key= buffpek->current_key();
+ if (!(*cmp)(first_cmp_arg, &unique_buff, ¤t_key))
{
if (min_dupl_count)
{
element_count cnt;
- memcpy(&cnt, (uchar *) buffpek->key+dupl_count_ofs, sizeof(cnt));
+ memcpy(&cnt, buffpek->current_key() + dupl_count_ofs, sizeof(cnt));
dupl_count+= cnt;
}
- buffpek->key+= rec_length;
- --buffpek->mem_count;
+ buffpek->advance_current_key(rec_length);
+ buffpek->decrement_mem_count();
}
if (min_dupl_count)
@@ -1796,45 +1937,40 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
do
{
- if ((ha_rows) buffpek->mem_count > max_rows)
+ if (buffpek->mem_count() > max_rows)
{ /* Don't write too many records */
- buffpek->mem_count= (uint) max_rows;
- buffpek->count= 0; /* Don't read more */
+ buffpek->set_mem_count(max_rows);
+ buffpek->set_rowcount(0); /* Don't read more */
}
- max_rows-= buffpek->mem_count;
- if (flag == 0)
+ max_rows-= buffpek->mem_count();
+ for (uint ix= 0; ix < buffpek->mem_count(); ++ix)
{
- if (my_b_write(to_file, (uchar*) buffpek->key,
- (size_t)(rec_length*buffpek->mem_count)))
- goto err; /* purecov: inspected */
- }
- else
- {
- uchar *end;
- src= buffpek->key+offset;
- for (end= src+buffpek->mem_count*rec_length ;
- src != end ;
- src+= rec_length)
+ param->get_rec_and_res_len(buffpek->current_key(),
+ &rec_length, &res_length);
+ const uint bytes_to_write= (flag == 0) ? rec_length : res_length;
+ if (check_dupl_count)
{
- if (check_dupl_count)
- {
- memcpy((uchar *) &dupl_count, src+dupl_count_ofs, sizeof(dupl_count));
- if (dupl_count < min_dupl_count)
- continue;
- }
- if (my_b_write(to_file, src, wr_len))
- goto err;
+ memcpy((uchar *) &dupl_count,
+ buffpek->current_key() + offset + dupl_count_ofs,
+ sizeof(dupl_count));
+ if (dupl_count < min_dupl_count)
+ continue;
}
+ if (my_b_write(to_file, buffpek->current_key() + wr_offset,
+ bytes_to_write))
+ goto err;
+ buffpek->advance_current_key(rec_length);
}
}
while (likely(!(error=
(bytes_read= read_to_buffer(from_file, buffpek,
- rec_length)) == (ulong) -1)) &&
+ param)) == (ulong) -1)) &&
bytes_read != 0);
end:
- lastbuff->count= MY_MIN(org_max_rows-max_rows, param->max_rows);
- lastbuff->file_pos= to_start_filepos;
+ lastbuff->set_rowcount(MY_MIN(org_max_rows-max_rows, param->max_rows));
+ lastbuff->set_file_position(to_start_filepos);
+
cleanup:
delete_queue(&queue);
DBUG_RETURN(error);
@@ -1848,13 +1984,13 @@ bool merge_buffers(Sort_param *param, IO_CACHE *from_file,
/* Do a merge to output-file (save only positions) */
-int merge_index(Sort_param *param, uchar *sort_buffer,
- BUFFPEK *buffpek, uint maxbuffer,
- IO_CACHE *tempfile, IO_CACHE *outfile)
+int merge_index(Sort_param *param, Sort_buffer sort_buffer,
+ Merge_chunk *buffpek, uint maxbuffer,
+ IO_CACHE *tempfile, IO_CACHE *outfile)
{
DBUG_ENTER("merge_index");
- if (merge_buffers(param,tempfile,outfile,sort_buffer,buffpek,buffpek,
- buffpek+maxbuffer,1))
+ if (merge_buffers(param, tempfile, outfile, sort_buffer, buffpek, buffpek,
+ buffpek + maxbuffer, 1))
DBUG_RETURN(1); /* purecov: inspected */
DBUG_RETURN(0);
} /* merge_index */
@@ -1977,7 +2113,7 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
sortorder->length= (uint)cs->coll->strnxfrmlen(cs, sortorder->length);
}
if (sortorder->field->maybe_null())
- length++; // Place for NULL marker
+ length++; // Place for NULL marker
}
else
{
@@ -1988,21 +2124,40 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
*multi_byte_charset= true;
}
if (sortorder->item->maybe_null)
- length++; // Place for NULL marker
+ length++; // Place for NULL marker
}
set_if_smaller(sortorder->length, thd->variables.max_sort_length);
length+=sortorder->length;
}
- sortorder->field= (Field*) 0; // end marker
+ sortorder->field= NULL; // end marker
DBUG_PRINT("info",("sort_length: %d",length));
return length;
}
+
+/*
+ Check whether addon fields can be used or not.
+
+ @param table Table structure
+ @param sortlength Length of sort key
+ @param length [OUT] Max length of addon fields
+ @param fields [OUT] Number of addon fields
+ @param null_fields [OUT] Number of nullable addon fields
+ @param packable_length [OUT] Max length of addon fields that can be
+ packed
+
+ @retval
+ TRUE Addon fields can be used
+ FALSE Otherwise
+*/
+
bool filesort_use_addons(TABLE *table, uint sortlength,
- uint *length, uint *fields, uint *null_fields)
+ uint *length, uint *fields, uint *null_fields,
+ uint *packable_length)
{
Field **pfield, *field;
- *length= *fields= *null_fields= 0;
+ *length= *fields= *null_fields= *packable_length= 0;
+ uint field_length=0;
for (pfield= table->field; (field= *pfield) ; pfield++)
{
@@ -2010,7 +2165,12 @@ bool filesort_use_addons(TABLE *table, uint sortlength,
continue;
if (field->flags & BLOB_FLAG)
return false;
- (*length)+= field->max_packed_col_length(field->pack_length());
+ field_length= field->max_packed_col_length(field->pack_length());
+ (*length)+= field_length;
+
+ if (field->maybe_null() || field->is_packable())
+ (*packable_length)+= field_length;
+
if (field->maybe_null())
(*null_fields)++;
(*fields)++;
@@ -2035,11 +2195,11 @@ bool filesort_use_addons(TABLE *table, uint sortlength,
layouts for the values of the non-sorted fields in the buffer and
fills them.
- @param thd Current thread
- @param ptabfield Array of references to the table fields
- @param sortlength Total length of sorted fields
- @param [out] addon_buf Buffer to us for appended fields
-
+ @param table Table structure
+ @param sortlength Total length of sorted fields
+ @param addon_length [OUT] Length of addon fields
+ @param m_packable_length [OUT] Length of the addon fields that can be
+ packed
@note
The null bits for the appended values are supposed to be put together
and stored the buffer just ahead of the value of the first field.
@@ -2050,13 +2210,13 @@ bool filesort_use_addons(TABLE *table, uint sortlength,
NULL if we do not store field values with sort data.
*/
-static SORT_ADDON_FIELD *
-get_addon_fields(TABLE *table, uint sortlength, LEX_STRING *addon_buf)
+static Addon_fields*
+get_addon_fields(TABLE *table, uint sortlength,
+ uint *addon_length, uint *m_packable_length)
{
Field **pfield;
Field *field;
- SORT_ADDON_FIELD *addonf;
- uint length, fields, null_fields;
+ uint length, fields, null_fields, packable_length;
MY_BITMAP *read_set= table->read_set;
DBUG_ENTER("get_addon_fields");
@@ -2070,23 +2230,34 @@ get_addon_fields(TABLE *table, uint sortlength, LEX_STRING *addon_buf)
the values directly from sorted fields.
But beware the case when item->cmp_type() != item->result_type()
*/
- addon_buf->str= 0;
- addon_buf->length= 0;
// see remove_const() for HA_SLOW_RND_POS explanation
if (table->file->ha_table_flags() & HA_SLOW_RND_POS)
sortlength= 0;
- if (!filesort_use_addons(table, sortlength, &length, &fields, &null_fields) ||
- !my_multi_malloc(MYF(MY_WME | MY_THREAD_SPECIFIC), &addonf,
- sizeof(SORT_ADDON_FIELD) * (fields+1),
- &addon_buf->str, length, NullS))
+ void *raw_mem_addon_field, *raw_mem;
+ if (!filesort_use_addons(table, sortlength, &length, &fields, &null_fields,
+ &packable_length) ||
+ !(my_multi_malloc(MYF(MY_WME | MY_THREAD_SPECIFIC),
+ &raw_mem, sizeof(Addon_fields),
+ &raw_mem_addon_field,
+ sizeof(SORT_ADDON_FIELD) * fields,
+ NullS)))
DBUG_RETURN(0);
- addon_buf->length= length;
+ Addon_fields_array
+ addon_array(static_cast<SORT_ADDON_FIELD*>(raw_mem_addon_field), fields);
+ Addon_fields *addon_fields= new (raw_mem) Addon_fields(addon_array);
+
+ DBUG_ASSERT(addon_fields);
+
+ (*addon_length)= length;
+ (*m_packable_length)= packable_length;
+
length= (null_fields+7)/8;
null_fields= 0;
+ SORT_ADDON_FIELD* addonf= addon_fields->begin();
for (pfield= table->field; (field= *pfield) ; pfield++)
{
if (!bitmap_is_set(read_set, field->field_index))
@@ -2108,10 +2279,9 @@ get_addon_fields(TABLE *table, uint sortlength, LEX_STRING *addon_buf)
length+= addonf->length;
addonf++;
}
- addonf->field= 0; // Put end marker
DBUG_PRINT("info",("addon_length: %d",length));
- DBUG_RETURN(addonf-fields);
+ DBUG_RETURN(addon_fields);
}
@@ -2130,24 +2300,7 @@ get_addon_fields(TABLE *table, uint sortlength, LEX_STRING *addon_buf)
void.
*/
-static void
-unpack_addon_fields(struct st_sort_addon_field *addon_field, uchar *buff,
- uchar *buff_end)
-{
- Field *field;
- SORT_ADDON_FIELD *addonf= addon_field;
- for ( ; (field= addonf->field) ; addonf++)
- {
- if (addonf->null_bit && (addonf->null_bit & buff[addonf->null_offset]))
- {
- field->set_null();
- continue;
- }
- field->set_notnull();
- field->unpack(field->ptr, buff + addonf->offset, buff_end, 0);
- }
-}
/*
** functions to change a double or float to a sortable string
@@ -2197,6 +2350,17 @@ void change_double_for_sort(double nr,uchar *to)
}
}
+bool SORT_INFO::using_packed_addons()
+{
+ return addon_fields != NULL && addon_fields->using_packed_addons();
+}
+
+void SORT_INFO::free_addon_buff()
+{
+ if (addon_fields)
+ addon_fields->free_addon_buff();
+}
+
/**
Free SORT_INFO
*/
diff --git a/sql/filesort.h b/sql/filesort.h
index 5f79a5095cc..5102ee2326f 100644
--- a/sql/filesort.h
+++ b/sql/filesort.h
@@ -27,7 +27,7 @@ class Filesort_tracker;
struct SORT_FIELD;
typedef struct st_order ORDER;
class JOIN;
-
+class Addon_fields;
/**
Sorting related info.
@@ -87,7 +87,8 @@ class SORT_INFO
public:
SORT_INFO()
- :addon_field(0), record_pointers(0)
+ :addon_fields(NULL), record_pointers(0),
+ sorted_result_in_fsbuf(FALSE)
{
buffpek.str= 0;
my_b_clear(&io_cache);
@@ -98,9 +99,11 @@ class SORT_INFO
void free_data()
{
close_cached_file(&io_cache);
+ free_addon_buff();
my_free(record_pointers);
my_free(buffpek.str);
- my_free(addon_field);
+ my_free(addon_fields);
+ free_sort_buffer();
}
void reset()
@@ -108,17 +111,26 @@ class SORT_INFO
free_data();
record_pointers= 0;
buffpek.str= 0;
- addon_field= 0;
+ addon_fields= 0;
+ sorted_result_in_fsbuf= false;
}
+ void free_addon_buff();
IO_CACHE io_cache; /* If sorted through filesort */
LEX_STRING buffpek; /* Buffer for buffpek structures */
- LEX_STRING addon_buf; /* Pointer to a buffer if sorted with fields */
- struct st_sort_addon_field *addon_field; /* Pointer to the fields info */
- /* To unpack back */
- void (*unpack)(struct st_sort_addon_field *, uchar *, uchar *);
+ Addon_fields *addon_fields; /* Addon field descriptors */
uchar *record_pointers; /* If sorted in memory */
+
+ /**
+ If the entire result of filesort fits in memory, we skip the merge phase.
+ We may leave the result in filesort_buffer
+ (indicated by sorted_result_in_fsbuf), or we may strip away
+ the sort keys, and copy the sorted result into a new buffer.
+ @see save_index()
+ */
+ bool sorted_result_in_fsbuf;
+
/*
How many rows in final result.
Also how many rows in record_pointers, if used
@@ -131,27 +143,65 @@ class SORT_INFO
void sort_buffer(Sort_param *param, uint count)
{ filesort_buffer.sort_buffer(param, count); }
- /**
- Accessors for Filesort_buffer (which @c).
- */
- uchar *get_record_buffer(uint idx)
- { return filesort_buffer.get_record_buffer(idx); }
-
uchar **get_sort_keys()
{ return filesort_buffer.get_sort_keys(); }
- uchar **alloc_sort_buffer(uint num_records, uint record_length)
+ uchar *get_sorted_record(uint ix)
+ { return filesort_buffer.get_sorted_record(ix); }
+
+ uchar *alloc_sort_buffer(uint num_records, uint record_length)
{ return filesort_buffer.alloc_sort_buffer(num_records, record_length); }
void free_sort_buffer()
{ filesort_buffer.free_sort_buffer(); }
+ bool isfull() const
+ { return filesort_buffer.isfull(); }
void init_record_pointers()
{ filesort_buffer.init_record_pointers(); }
+ void init_next_record_pointer()
+ { filesort_buffer.init_next_record_pointer(); }
+ uchar *get_next_record_pointer()
+ { return filesort_buffer.get_next_record_pointer(); }
+ void adjust_next_record_pointer(uint val)
+ { filesort_buffer.adjust_next_record_pointer(val); }
+
+ Bounds_checked_array<uchar> get_raw_buf()
+ { return filesort_buffer.get_raw_buf(); }
size_t sort_buffer_size() const
{ return filesort_buffer.sort_buffer_size(); }
+ bool is_allocated() const
+ { return filesort_buffer.is_allocated(); }
+ void set_sort_length(uint val)
+ { filesort_buffer.set_sort_length(val); }
+ uint get_sort_length() const
+ { return filesort_buffer.get_sort_length(); }
+
+ bool has_filesort_result_in_memory() const
+ {
+ return record_pointers || sorted_result_in_fsbuf;
+ }
+
+ /// Are we using "addon fields"?
+ bool using_addon_fields() const
+ {
+ return addon_fields != NULL;
+ }
+
+ /// Are we using "packed addon fields"?
+ bool using_packed_addons();
+
+ /**
+ Copies (unpacks) values appended to sorted fields from a buffer back to
+ their regular positions specified by the Field::ptr pointers.
+ @param buff Buffer which to unpack the value from
+ */
+ template<bool Packed_addon_fields>
+ inline void unpack_addon_fields(uchar *buff);
+
+
friend SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
Filesort_tracker* tracker, JOIN *join,
table_map first_table_bit);
@@ -162,7 +212,8 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort,
table_map first_table_bit=0);
bool filesort_use_addons(TABLE *table, uint sortlength,
- uint *length, uint *fields, uint *null_fields);
+ uint *length, uint *fields, uint *null_fields,
+ uint *m_packable_length);
void change_double_for_sort(double nr,uchar *to);
diff --git a/sql/filesort_utils.cc b/sql/filesort_utils.cc
index 703db84495f..06e3f477993 100644
--- a/sql/filesort_utils.cc
+++ b/sql/filesort_utils.cc
@@ -96,82 +96,92 @@ double get_merge_many_buffs_cost_fast(ha_rows num_rows,
# Pointer to allocated buffer
*/
-uchar **Filesort_buffer::alloc_sort_buffer(uint num_records,
- uint record_length)
+uchar *Filesort_buffer::alloc_sort_buffer(uint num_records,
+ uint record_length)
{
size_t buff_size;
- uchar **sort_keys, **start_of_data;
DBUG_ENTER("alloc_sort_buffer");
DBUG_EXECUTE_IF("alloc_sort_buffer_fail",
DBUG_SET("+d,simulate_out_of_memory"););
- buff_size= ((size_t)num_records) * (record_length + sizeof(uchar*));
- set_if_bigger(buff_size, record_length * MERGEBUFF2);
+ buff_size= ALIGN_SIZE(num_records * (record_length + sizeof(uchar*)));
- if (!m_idx_array.is_null())
+ /*
+ The minimum memory required should be each merge buffer can hold atmost
+ one key.
+ TODO varun: move this to the place where min_sort_memory is used.
+ */
+ set_if_bigger(buff_size, (record_length +sizeof(uchar*)) * MERGEBUFF2);
+
+ if (m_rawmem)
{
/*
Reuse old buffer if exists and is large enough
Note that we don't make the buffer smaller, as we want to be
prepared for next subquery iteration.
*/
-
- sort_keys= m_idx_array.array();
- if (buff_size > allocated_size)
+ if (buff_size > m_size_in_bytes)
{
/*
Better to free and alloc than realloc as we don't have to remember
the old values
*/
- my_free(sort_keys);
- if (!(sort_keys= (uchar**) my_malloc(buff_size,
- MYF(MY_THREAD_SPECIFIC))))
+ my_free(m_rawmem);
+ if (!(m_rawmem= (uchar*) my_malloc(buff_size, MYF(MY_THREAD_SPECIFIC))))
{
- reset();
+ m_size_in_bytes= 0;
DBUG_RETURN(0);
}
- allocated_size= buff_size;
}
}
else
{
- if (!(sort_keys= (uchar**) my_malloc(buff_size, MYF(MY_THREAD_SPECIFIC))))
+ if (!(m_rawmem= (uchar*) my_malloc(buff_size, MYF(MY_THREAD_SPECIFIC))))
+ {
+ m_size_in_bytes= 0;
DBUG_RETURN(0);
- allocated_size= buff_size;
+ }
+
}
- m_idx_array= Idx_array(sort_keys, num_records);
+ m_size_in_bytes= buff_size;
+ m_record_pointers= reinterpret_cast<uchar**>(m_rawmem) +
+ ((m_size_in_bytes / sizeof(uchar*)) - 1);
+ m_num_records= num_records;
m_record_length= record_length;
- start_of_data= m_idx_array.array() + m_idx_array.size();
- m_start_of_data= reinterpret_cast<uchar*>(start_of_data);
-
- DBUG_RETURN(m_idx_array.array());
+ m_idx= 0;
+ DBUG_RETURN(m_rawmem);
}
void Filesort_buffer::free_sort_buffer()
{
- my_free(m_idx_array.array());
- m_idx_array.reset();
- m_start_of_data= NULL;
+ my_free(m_rawmem);
+ *this= Filesort_buffer();
}
void Filesort_buffer::sort_buffer(const Sort_param *param, uint count)
{
size_t size= param->sort_length;
+ m_sort_keys= get_sort_keys();
+
if (count <= 1 || size == 0)
return;
- uchar **keys= get_sort_keys();
+
+ // dont reverse for PQ, it is already done
+ if (!param->using_pq)
+ reverse_record_pointers();
+
uchar **buffer= NULL;
if (radixsort_is_appliccable(count, param->sort_length) &&
(buffer= (uchar**) my_malloc(count*sizeof(char*),
MYF(MY_THREAD_SPECIFIC))))
{
- radixsort_for_str_ptr(keys, count, param->sort_length, buffer);
+ radixsort_for_str_ptr(m_sort_keys, count, param->sort_length, buffer);
my_free(buffer);
return;
}
- my_qsort2(keys, count, sizeof(uchar*), get_ptr_compare(size), &size);
+ my_qsort2(m_sort_keys, count, sizeof(uchar*), get_ptr_compare(size), &size);
}
diff --git a/sql/filesort_utils.h b/sql/filesort_utils.h
index 1ab1ba2daa8..e8b93940abf 100644
--- a/sql/filesort_utils.h
+++ b/sql/filesort_utils.h
@@ -46,68 +46,194 @@ double get_merge_many_buffs_cost_fast(ha_rows num_rows,
/**
A wrapper class around the buffer used by filesort().
- The buffer is a contiguous chunk of memory,
- where the first part is <num_records> pointers to the actual data.
+ The sort buffer is a contiguous chunk of memory,
+ containing both records to be sorted, and pointers to said records:
+
+ <start of buffer | still unused | end of buffer>
+ |rec 0|record 1 |rec 2| ............ |ptr to rec2|ptr to rec1|ptr to rec0|
+
+ Records will be inserted "left-to-right". Records are not necessarily
+ fixed-size, they can be packed and stored without any "gaps".
+
+ Record pointers will be inserted "right-to-left", as a side-effect
+ of inserting the actual records.
We wrap the buffer in order to be able to do lazy initialization of the
pointers: the buffer is often much larger than what we actually need.
+ With this allocation scheme, and lazy initialization of the pointers,
+ we are able to pack variable-sized records in the buffer,
+ and thus possibly have space for more records than we initially estimated.
+
The buffer must be kept available for multiple executions of the
same sort operation, so we have explicit allocate and free functions,
rather than doing alloc/free in CTOR/DTOR.
*/
+
class Filesort_buffer
{
public:
- Filesort_buffer()
- : m_idx_array(), m_start_of_data(NULL), allocated_size(0)
+ Filesort_buffer() :
+ m_next_rec_ptr(NULL), m_rawmem(NULL), m_record_pointers(NULL),
+ m_sort_keys(NULL),
+ m_num_records(0), m_record_length(0),
+ m_sort_length(0),
+ m_size_in_bytes(0), m_idx(0)
{}
-
- ~Filesort_buffer()
+
+ /** Sort me... */
+ void sort_buffer(const Sort_param *param, uint count);
+
+ /**
+ Reverses the record pointer array, to avoid recording new results for
+ non-deterministic mtr tests.
+ */
+ void reverse_record_pointers()
{
- my_free(m_idx_array.array());
+ if (m_idx < 2) // There is nothing to swap.
+ return;
+ uchar **keys= get_sort_keys();
+ const longlong count= m_idx - 1;
+ for (longlong ix= 0; ix <= count/2; ++ix)
+ {
+ uchar *tmp= keys[count - ix];
+ keys[count - ix] = keys[ix];
+ keys[ix]= tmp;
+ }
}
- bool is_allocated()
+ /**
+ Initializes all the record pointers.
+ */
+ void init_record_pointers()
{
- return m_idx_array.array() != 0;
+ init_next_record_pointer();
+ while (m_idx < m_num_records)
+ (void) get_next_record_pointer();
+ reverse_record_pointers();
}
- void reset()
+
+ /**
+ Prepares the buffer for the next batch of records to process.
+ */
+ void init_next_record_pointer()
{
- m_idx_array.reset();
+ m_idx= 0;
+ m_next_rec_ptr= m_rawmem;
+ m_sort_keys= NULL;
}
- /** Sort me... */
- void sort_buffer(const Sort_param *param, uint count);
+ /**
+ @returns the number of bytes currently in use for data.
+ */
+ size_t space_used_for_data() const
+ {
+ return m_next_rec_ptr ? m_next_rec_ptr - m_rawmem : 0;
+ }
- /// Initializes a record pointer.
- uchar *get_record_buffer(uint idx)
+ /**
+ @returns the number of bytes left in the buffer.
+ */
+ size_t spaceleft() const
{
- m_idx_array[idx]= m_start_of_data + (idx * m_record_length);
- return m_idx_array[idx];
+ DBUG_ASSERT(m_next_rec_ptr >= m_rawmem);
+ const size_t spaceused=
+ (m_next_rec_ptr - m_rawmem) +
+ (static_cast<size_t>(m_idx) * sizeof(uchar*));
+ return m_size_in_bytes - spaceused;
}
- /// Initializes all the record pointers.
- void init_record_pointers()
+ /**
+ Is the buffer full?
+ */
+ bool isfull() const
+ {
+ if (m_idx < m_num_records)
+ return false;
+ return spaceleft() < (m_record_length + sizeof(uchar*));
+ }
+
+ /**
+ Where should the next record be stored?
+ */
+ uchar *get_next_record_pointer()
+ {
+ uchar *retval= m_next_rec_ptr;
+ // Save the return value in the record pointer array.
+ m_record_pointers[-m_idx]= m_next_rec_ptr;
+ // Prepare for the subsequent request.
+ m_idx++;
+ m_next_rec_ptr+= m_record_length;
+ return retval;
+ }
+
+ /**
+ Adjusts for actual record length. get_next_record_pointer() above was
+ pessimistic, and assumed that the record could not be packed.
+ */
+ void adjust_next_record_pointer(uint val)
{
- for (uint ix= 0; ix < m_idx_array.size(); ++ix)
- (void) get_record_buffer(ix);
+ m_next_rec_ptr-= (m_record_length - val);
}
/// Returns total size: pointer array + record buffers.
size_t sort_buffer_size() const
{
- return allocated_size;
+ return m_size_in_bytes;
}
- /// Allocates the buffer, but does *not* initialize pointers.
- uchar **alloc_sort_buffer(uint num_records, uint record_length);
+ bool is_allocated() const
+ {
+ return m_rawmem;
+ }
+
+ /**
+ Allocates the buffer, but does *not* initialize pointers.
+ Total size = (num_records * record_length) + (num_records * sizeof(pointer))
+ space for records space for pointer to records
+ Caller is responsible for raising an error if allocation fails.
+
+ @param num_records Number of records.
+ @param record_length (maximum) size of each record.
+ @returns Pointer to allocated area, or NULL in case of out-of-memory.
+ */
+ uchar *alloc_sort_buffer(uint num_records, uint record_length);
/// Frees the buffer.
void free_sort_buffer();
- /// Getter, for calling routines which still use the uchar** interface.
- uchar **get_sort_keys() { return m_idx_array.array(); }
+ void reset()
+ {
+ m_rawmem= NULL;
+ }
+ /**
+ Used to access the "right-to-left" array of record pointers as an ordinary
+ "left-to-right" array, so that we can pass it directly on to std::sort().
+ */
+ uchar **get_sort_keys()
+ {
+ if (m_idx == 0)
+ return NULL;
+ return &m_record_pointers[1 - m_idx];
+ }
+
+ /**
+ Gets sorted record number ix. @see get_sort_keys()
+ Only valid after buffer has been sorted!
+ */
+ uchar *get_sorted_record(uint ix)
+ {
+ return m_sort_keys[ix];
+ }
+
+ /**
+ @returns The entire buffer, as a character array.
+ This is for reusing the memory for merge buffers.
+ */
+ Bounds_checked_array<uchar> get_raw_buf()
+ {
+ return Bounds_checked_array<uchar>(m_rawmem, m_size_in_bytes);
+ }
/**
We need an assignment operator, see filesort().
@@ -117,20 +243,40 @@ class Filesort_buffer
*/
Filesort_buffer &operator=(const Filesort_buffer &rhs)
{
- m_idx_array= rhs.m_idx_array;
+ m_next_rec_ptr= rhs.m_next_rec_ptr;
+ m_rawmem= rhs.m_rawmem;
+ m_record_pointers= rhs.m_record_pointers;
+ m_sort_keys= rhs.m_sort_keys;
+ m_num_records= rhs.m_num_records;
m_record_length= rhs.m_record_length;
- m_start_of_data= rhs.m_start_of_data;
- allocated_size= rhs.allocated_size;
+ m_sort_length= rhs.m_sort_length;
+ m_size_in_bytes= rhs.m_size_in_bytes;
+ m_idx= rhs.m_idx;
return *this;
}
+ uint get_sort_length() const { return m_sort_length; }
+ void set_sort_length(uint val) { m_sort_length= val; }
+
private:
- typedef Bounds_checked_array<uchar*> Idx_array;
+ uchar *m_next_rec_ptr; /// The next record will be inserted here.
+ uchar *m_rawmem; /// The raw memory buffer.
+ uchar **m_record_pointers; /// The "right-to-left" array of record pointers.
+ uchar **m_sort_keys; /// Caches the value of get_sort_keys()
+ uint m_num_records; /// Saved value from alloc_sort_buffer()
+ uint m_record_length; /// Saved value from alloc_sort_buffer()
+ uint m_sort_length; /// The length of the sort key.
+ size_t m_size_in_bytes; /// Size of raw buffer, in bytes.
- Idx_array m_idx_array; /* Pointers to key data */
- uint m_record_length;
- uchar *m_start_of_data; /* Start of key data */
- size_t allocated_size;
+ /**
+ This is the index in the "right-to-left" array of the next record to
+ be inserted into the buffer. It is signed, because we use it in signed
+ expressions like:
+ m_record_pointers[-m_idx];
+ It is longlong rather than int, to ensure that it covers UINT_MAX32
+ without any casting/warning.
+ */
+ longlong m_idx;
};
#endif // FILESORT_UTILS_INCLUDED
diff --git a/sql/records.cc b/sql/records.cc
index 3d709182a4e..2b146abb005 100644
--- a/sql/records.cc
+++ b/sql/records.cc
@@ -38,8 +38,8 @@
static int rr_quick(READ_RECORD *info);
int rr_sequential(READ_RECORD *info);
static int rr_from_tempfile(READ_RECORD *info);
-static int rr_unpack_from_tempfile(READ_RECORD *info);
-static int rr_unpack_from_buffer(READ_RECORD *info);
+template<bool> static int rr_unpack_from_tempfile(READ_RECORD *info);
+template<bool> static int rr_unpack_from_buffer(READ_RECORD *info);
int rr_from_pointers(READ_RECORD *info);
static int rr_from_cache(READ_RECORD *info);
static int init_rr_cache(THD *thd, READ_RECORD *info);
@@ -187,23 +187,23 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
bool disable_rr_cache)
{
IO_CACHE *tempfile;
- SORT_ADDON_FIELD *addon_field= filesort ? filesort->addon_field : 0;
DBUG_ENTER("init_read_record");
+ const bool using_addon_fields= filesort && filesort->using_addon_fields();
+
bzero((char*) info,sizeof(*info));
info->thd=thd;
info->table=table;
- info->addon_field= addon_field;
+ info->sort_info= filesort;
if ((table->s->tmp_table == INTERNAL_TMP_TABLE) &&
- !addon_field)
+ !using_addon_fields)
(void) table->file->extra(HA_EXTRA_MMAP);
- if (addon_field)
+ if (using_addon_fields)
{
- info->rec_buf= (uchar*) filesort->addon_buf.str;
- info->ref_length= (uint)filesort->addon_buf.length;
- info->unpack= filesort->unpack;
+ info->rec_buf= filesort->addon_fields->get_addon_buf();
+ info->ref_length= filesort->addon_fields->get_addon_buf_length();
}
else
{
@@ -223,9 +223,20 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
if (tempfile && !(select && select->quick))
{
- DBUG_PRINT("info",("using rr_from_tempfile"));
- info->read_record_func=
- addon_field ? rr_unpack_from_tempfile : rr_from_tempfile;
+ if (using_addon_fields)
+ {
+ DBUG_PRINT("info",("using rr_from_tempfile"));
+ if (filesort->addon_fields->using_packed_addons())
+ info->read_record_func= rr_unpack_from_tempfile<true>;
+ else
+ info->read_record_func= rr_unpack_from_tempfile<false>;
+ }
+ else
+ {
+ DBUG_PRINT("info",("using rr_from_tempfile"));
+ info->read_record_func= rr_from_tempfile;
+ }
+
info->io_cache= tempfile;
reinit_io_cache(info->io_cache,READ_CACHE,0L,0,0);
info->ref_pos=table->file->ref;
@@ -239,7 +250,7 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
and filesort->io_cache is read sequentially
*/
if (!disable_rr_cache &&
- !addon_field &&
+ !using_addon_fields &&
thd->variables.read_rnd_buff_size &&
!(table->file->ha_table_flags() & HA_FAST_KEY_READ) &&
(table->db_stat & HA_READ_ONLY ||
@@ -264,16 +275,29 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
DBUG_PRINT("info",("using rr_quick"));
info->read_record_func= rr_quick;
}
- else if (filesort && filesort->record_pointers)
+ else if (filesort && filesort->has_filesort_result_in_memory())
{
DBUG_PRINT("info",("using record_pointers"));
if (unlikely(table->file->ha_rnd_init_with_error(0)))
DBUG_RETURN(1);
+
info->cache_pos= filesort->record_pointers;
- info->cache_end= (info->cache_pos+
- filesort->return_rows * info->ref_length);
- info->read_record_func=
- addon_field ? rr_unpack_from_buffer : rr_from_pointers;
+ if (using_addon_fields)
+ {
+ DBUG_PRINT("info",("using rr_unpack_from_buffer"));
+ DBUG_ASSERT(filesort->sorted_result_in_fsbuf);
+ info->unpack_counter= 0;
+ if (filesort->using_packed_addons())
+ info->read_record_func= rr_unpack_from_buffer<true>;
+ else
+ info->read_record_func= rr_unpack_from_buffer<false>;
+ }
+ else
+ {
+ info->cache_end= (info->cache_pos+
+ filesort->return_rows * info->ref_length);
+ info->read_record_func= rr_from_pointers;
+ }
}
else if (table->file->keyread_enabled())
{
@@ -510,7 +534,11 @@ static int rr_from_tempfile(READ_RECORD *info)
the fields values use in the result set from this buffer into their
positions in the regular record buffer.
- @param info Reference to the context including record descriptors
+ @param info Reference to the context including record
+ descriptors
+ @param Packed_addon_fields Are the addon fields packed?
+ This is a compile-time constant, to
+ avoid if (....) tests during execution.
@retval
0 Record successfully read.
@@ -518,12 +546,38 @@ static int rr_from_tempfile(READ_RECORD *info)
-1 There is no record to be read anymore.
*/
+template<bool Packed_addon_fields>
static int rr_unpack_from_tempfile(READ_RECORD *info)
{
- if (my_b_read(info->io_cache, info->rec_buf, info->ref_length))
- return -1;
- (*info->unpack)(info->addon_field, info->rec_buf,
- info->rec_buf + info->ref_length);
+ uchar *destination= info->rec_buf;
+#ifndef DBUG_OFF
+ my_off_t where= my_b_tell(info->io_cache);
+#endif
+ if (Packed_addon_fields)
+ {
+ const uint len_sz= Addon_fields::size_of_length_field;
+
+ // First read length of the record.
+ if (my_b_read(info->io_cache, destination, len_sz))
+ return -1;
+ uint res_length= Addon_fields::read_addon_length(destination);
+ DBUG_PRINT("info", ("rr_unpack from %llu to %p sz %u",
+ static_cast<ulonglong>(where),
+ destination, res_length));
+ DBUG_ASSERT(res_length > len_sz);
+ DBUG_ASSERT(info->sort_info->using_addon_fields());
+
+ // Then read the rest of the record.
+ if (my_b_read(info->io_cache, destination + len_sz, res_length - len_sz))
+ return -1; /* purecov: inspected */
+ }
+ else
+ {
+ if (my_b_read(info->io_cache, destination, info->ref_length))
+ return -1;
+ }
+
+ info->sort_info->unpack_addon_fields<Packed_addon_fields>(destination);
return 0;
}
@@ -560,7 +614,11 @@ int rr_from_pointers(READ_RECORD *info)
the fields values use in the result set from this buffer into their
positions in the regular record buffer.
- @param info Reference to the context including record descriptors
+ @param info Reference to the context including record
+ descriptors
+ @param Packed_addon_fields Are the addon fields packed?
+ This is a compile-time constant, to
+ avoid if (....) tests during execution.
@retval
0 Record successfully read.
@@ -568,13 +626,17 @@ int rr_from_pointers(READ_RECORD *info)
-1 There is no record to be read anymore.
*/
+template<bool Packed_addon_fields>
static int rr_unpack_from_buffer(READ_RECORD *info)
{
- if (info->cache_pos == info->cache_end)
+ if (info->unpack_counter == info->sort_info->return_rows)
return -1; /* End of buffer */
- (*info->unpack)(info->addon_field, info->cache_pos,
- info->cache_end);
- info->cache_pos+= info->ref_length;
+
+ uchar *record= info->sort_info->get_sorted_record(
+ static_cast<uint>(info->unpack_counter));
+ uchar *plen= record + info->sort_info->get_sort_length();
+ info->sort_info->unpack_addon_fields<Packed_addon_fields>(plen);
+ info->unpack_counter++;
return 0;
}
/* cacheing of records from a database */
@@ -709,3 +771,26 @@ static int rr_cmp(uchar *a,uchar *b)
return (int) a[7] - (int) b[7];
#endif
}
+
+template<bool Packed_addon_fields>
+inline void SORT_INFO::unpack_addon_fields(uchar *buff)
+{
+ SORT_ADDON_FIELD *addonf= addon_fields->begin();
+ uchar *buff_end= buff + sort_buffer_size();
+ const uchar *start_of_record= buff + addonf->offset;
+
+ for ( ; addonf != addon_fields->end() ; addonf++)
+ {
+ Field *field= addonf->field;
+ if (addonf->null_bit && (addonf->null_bit & buff[addonf->null_offset]))
+ {
+ field->set_null();
+ continue;
+ }
+ field->set_notnull();
+ if (Packed_addon_fields)
+ start_of_record= field->unpack(field->ptr, start_of_record, buff_end, 0);
+ else
+ field->unpack(field->ptr, buff + addonf->offset, buff_end, 0);
+ }
+}
diff --git a/sql/records.h b/sql/records.h
index faf0d13c9a9..04dc06b3c74 100644
--- a/sql/records.h
+++ b/sql/records.h
@@ -58,13 +58,23 @@ struct READ_RECORD
THD *thd;
SQL_SELECT *select;
uint ref_length, reclength, rec_cache_size, error_offset;
+
+ /**
+ Counting records when reading result from filesort().
+ Used when filesort leaves the result in the filesort buffer.
+ */
+ ha_rows unpack_counter;
+
uchar *ref_pos; /* pointer to form->refpos */
uchar *rec_buf; /* to read field values after filesort */
uchar *cache,*cache_pos,*cache_end,*read_positions;
- struct st_sort_addon_field *addon_field; /* Pointer to the fields info */
+
+ /*
+ Structure storing information about sorting
+ */
+ SORT_INFO *sort_info;
struct st_io_cache *io_cache;
bool print_error;
- void (*unpack)(struct st_sort_addon_field *, uchar *, uchar *);
int read_record() { return read_record_func(this); }
uchar *record() const { return table->record[0]; }
diff --git a/sql/sql_array.h b/sql/sql_array.h
index bcfbb98ef19..b05e8f779bd 100644
--- a/sql/sql_array.h
+++ b/sql/sql_array.h
@@ -85,6 +85,10 @@ template <typename Element_type> class Bounds_checked_array
Element_type *array() const { return m_array; }
+ Element_type *begin() const { return array(); }
+ Element_type *end() const { return array() + m_size; }
+
+
bool operator==(const Bounds_checked_array<Element_type>&rhs) const
{
return m_array == rhs.m_array && m_size == rhs.m_size;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index bece1f9bee2..4bd1ddf7164 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -13987,7 +13987,7 @@ remove_const(JOIN *join,ORDER *first_order, COND *cond,
*simple_order= head->on_expr_ref[0] == NULL;
if (*simple_order && head->table->file->ha_table_flags() & HA_SLOW_RND_POS)
{
- uint u1, u2, u3;
+ uint u1, u2, u3, u4;
/*
normally the condition is (see filesort_use_addons())
@@ -13998,7 +13998,7 @@ remove_const(JOIN *join,ORDER *first_order, COND *cond,
TODO proper cost estimations
*/
- *simple_order= filesort_use_addons(head->table, 0, &u1, &u2, &u3);
+ *simple_order= filesort_use_addons(head->table, 0, &u1, &u2, &u3, &u4);
}
}
else
diff --git a/sql/sql_sort.h b/sql/sql_sort.h
index 7abbc808632..5aa8f4545a4 100644
--- a/sql/sql_sort.h
+++ b/sql/sql_sort.h
@@ -20,8 +20,6 @@
#include <my_sys.h> /* qsort2_cmp */
#include "queues.h"
-typedef struct st_buffpek BUFFPEK;
-
struct SORT_FIELD;
class Field;
struct TABLE;
@@ -64,21 +62,236 @@ struct BUFFPEK_COMPARE_CONTEXT
};
+/**
+ Descriptor for a merge chunk to be sort-merged.
+ A merge chunk is a sequence of pre-sorted records, written to a
+ temporary file. A Merge_chunk instance describes where this chunk is stored
+ in the file, and where it is located when it is in memory.
+
+ It is a POD because
+ - we read/write them from/to files.
+
+ We have accessors (getters/setters) for all struct members.
+ */
+
+struct Merge_chunk {
+public:
+ Merge_chunk(): m_current_key(NULL),
+ m_file_position(0),
+ m_buffer_start(NULL),
+ m_buffer_end(NULL),
+ m_rowcount(0),
+ m_mem_count(0),
+ m_max_keys(0)
+ {}
+
+ my_off_t file_position() const { return m_file_position; }
+ void set_file_position(my_off_t val) { m_file_position= val; }
+ void advance_file_position(my_off_t val) { m_file_position+= val; }
+
+ uchar *buffer_start() { return m_buffer_start; }
+ const uchar *buffer_end() const { return m_buffer_end; }
+
+ void set_buffer(uchar *start, uchar *end)
+ {
+ m_buffer_start= start;
+ m_buffer_end= end;
+ }
+ void set_buffer_start(uchar *start)
+ {
+ m_buffer_start= start;
+ }
+ void set_buffer_end(uchar *end)
+ {
+ DBUG_ASSERT(m_buffer_end == NULL || end <= m_buffer_end);
+ m_buffer_end= end;
+ }
+
+ void init_current_key() { m_current_key= m_buffer_start; }
+ uchar *current_key() { return m_current_key; }
+ void advance_current_key(uint val) { m_current_key+= val; }
+
+ void decrement_rowcount(ha_rows val) { m_rowcount-= val; }
+ void set_rowcount(ha_rows val) { m_rowcount= val; }
+ ha_rows rowcount() const { return m_rowcount; }
+
+ ha_rows mem_count() const { return m_mem_count; }
+ void set_mem_count(ha_rows val) { m_mem_count= val; }
+ ha_rows decrement_mem_count() { return --m_mem_count; }
+
+ ha_rows max_keys() const { return m_max_keys; }
+ void set_max_keys(ha_rows val) { m_max_keys= val; }
+
+ size_t buffer_size() const { return m_buffer_end - m_buffer_start; }
+
+ /**
+ Tries to merge *this with *mc, returns true if successful.
+ The assumption is that *this is no longer in use,
+ and the space it has been allocated can be handed over to a
+ buffer which is adjacent to it.
+ */
+ bool merge_freed_buff(Merge_chunk *mc) const
+ {
+ if (mc->m_buffer_end == m_buffer_start)
+ {
+ mc->m_buffer_end= m_buffer_end;
+ mc->m_max_keys+= m_max_keys;
+ return true;
+ }
+ else if (mc->m_buffer_start == m_buffer_end)
+ {
+ mc->m_buffer_start= m_buffer_start;
+ mc->m_max_keys+= m_max_keys;
+ return true;
+ }
+ return false;
+ }
+
+ uchar *m_current_key; /// The current key for this chunk.
+ my_off_t m_file_position;/// Current position in the file to be sorted.
+ uchar *m_buffer_start; /// Start of main-memory buffer for this chunk.
+ uchar *m_buffer_end; /// End of main-memory buffer for this chunk.
+ ha_rows m_rowcount; /// Number of unread rows in this chunk.
+ ha_rows m_mem_count; /// Number of rows in the main-memory buffer.
+ ha_rows m_max_keys; /// If we have fixed-size rows:
+ /// max number of rows in buffer.
+};
+
+typedef Bounds_checked_array<SORT_ADDON_FIELD> Addon_fields_array;
+
+/**
+ This class wraps information about usage of addon fields.
+ An Addon_fields object is used both during packing of data in the filesort
+ buffer, and later during unpacking in 'Filesort_info::unpack_addon_fields'.
+
+ @see documentation for the Sort_addon_field struct.
+ @see documentation for get_addon_fields()
+ */
+class Addon_fields {
+public:
+ Addon_fields(Addon_fields_array arr)
+ : m_field_descriptors(arr),
+ m_addon_buf(),
+ m_addon_buf_length(),
+ m_using_packed_addons(false)
+ {
+ DBUG_ASSERT(!arr.is_null());
+ }
+
+ SORT_ADDON_FIELD *begin() { return m_field_descriptors.begin(); }
+ SORT_ADDON_FIELD *end() { return m_field_descriptors.end(); }
+
+ /// rr_unpack_from_tempfile needs an extra buffer when unpacking.
+ uchar *allocate_addon_buf(uint sz)
+ {
+ m_addon_buf= (uchar *)my_malloc(sz, MYF(MY_WME | MY_THREAD_SPECIFIC));
+ if (m_addon_buf)
+ m_addon_buf_length= sz;
+ return m_addon_buf;
+ }
+
+ void free_addon_buff()
+ {
+ my_free(m_addon_buf);
+ m_addon_buf= NULL;
+ m_addon_buf_length= 0;
+ }
+
+ uchar *get_addon_buf() { return m_addon_buf; }
+ uint get_addon_buf_length() const { return m_addon_buf_length; }
+
+ void set_using_packed_addons(bool val)
+ {
+ m_using_packed_addons= val;
+ }
+
+ bool using_packed_addons() const
+ {
+ return m_using_packed_addons;
+ }
+
+ static bool can_pack_addon_fields(uint record_length)
+ {
+ return (record_length <= (0xFFFF));
+ }
+
+ /**
+ @returns Total number of bytes used for packed addon fields.
+ the size of the length field + size of null bits + sum of field sizes.
+ */
+ static uint read_addon_length(uchar *p)
+ {
+ return size_of_length_field + uint2korr(p);
+ }
+
+ /**
+ Stores the number of bytes used for packed addon fields.
+ */
+ static void store_addon_length(uchar *p, uint sz)
+ {
+ // We actually store the length of everything *after* the length field.
+ int2store(p, sz - size_of_length_field);
+ }
+
+ static const uint size_of_length_field= 2;
+
+private:
+ Addon_fields_array m_field_descriptors;
+
+ uchar *m_addon_buf; ///< Buffer for unpacking addon fields.
+ uint m_addon_buf_length; ///< Length of the buffer.
+ bool m_using_packed_addons; ///< Are we packing the addon fields?
+};
+
+
+/**
+ There are two record formats for sorting:
+ |<key a><key b>...|<rowid>|
+ / sort_length / ref_l /
+
+ or with "addon fields"
+ |<key a><key b>...|<null bits>|<field a><field b>...|
+ / sort_length / addon_length /
+
+ The packed format for "addon fields"
+ |<key a><key b>...|<length>|<null bits>|<field a><field b>...|
+ / sort_length / addon_length /
+
+ <key> Fields are fixed-size, specially encoded with
+ Field::make_sort_key() so we can do byte-by-byte compare.
+ <length> Contains the *actual* packed length (after packing) of
+ everything after the sort keys.
+ The size of the length field is 2 bytes,
+ which should cover most use cases: addon data <= 65535 bytes.
+ This is the same as max record size in MySQL.
+ <null bits> One bit for each nullable field, indicating whether the field
+ is null or not. May have size zero if no fields are nullable.
+ <field xx> Are stored with field->pack(), and retrieved with
+ field->unpack(). Addon fields within a record are stored
+ consecutively, with no "holes" or padding. They will have zero
+ size for NULL values.
+
+*/
+
class Sort_param {
public:
uint rec_length; // Length of sorted records.
uint sort_length; // Length of sorted columns.
uint ref_length; // Length of record ref.
+ uint addon_length; // Length of addon_fields
uint res_length; // Length of records in final sorted file/buffer.
uint max_keys_per_buffer; // Max keys / buffer.
uint min_dupl_count;
ha_rows max_rows; // Select limit, or HA_POS_ERROR if unlimited.
ha_rows examined_rows; // Number of examined rows.
TABLE *sort_form; // For quicker make_sortkey.
- SORT_FIELD *local_sortorder;
- SORT_FIELD *end;
- SORT_ADDON_FIELD *addon_field; // Descriptors for companion fields.
- LEX_STRING addon_buf; // Buffer & length of added packed fields.
+ /**
+ ORDER BY list with some precalculated info for filesort.
+ Array is created and owned by a Filesort instance.
+ */
+ Bounds_checked_array<SORT_FIELD> local_sortorder;
+ Addon_fields *addon_fields; // Descriptors for companion fields.
+ bool using_pq;
uchar *unique_buff;
bool not_killable;
@@ -93,21 +306,63 @@ class Sort_param {
}
void init_for_filesort(uint sortlen, TABLE *table,
ha_rows maxrows, bool sort_positions);
+ /// Enables the packing of addons if possible.
+ void try_to_pack_addons(ulong max_length_for_sort_data);
+
+ /// Are we packing the "addon fields"?
+ bool using_packed_addons() const
+ {
+ DBUG_ASSERT(m_using_packed_addons ==
+ (addon_fields != NULL &&
+ addon_fields->using_packed_addons()));
+ return m_using_packed_addons;
+ }
+
+ /// Are we using "addon fields"?
+ bool using_addon_fields() const
+ {
+ return addon_fields != NULL;
+ }
+
+ /**
+ Getter for record length and result length.
+ @param record_start Pointer to record.
+ @param [out] recl Store record length here.
+ @param [out] resl Store result length here.
+ */
+ void get_rec_and_res_len(uchar *record_start, uint *recl, uint *resl)
+ {
+ if (!using_packed_addons())
+ {
+ *recl= rec_length;
+ *resl= res_length;
+ return;
+ }
+ uchar *plen= record_start + sort_length;
+ *resl= Addon_fields::read_addon_length(plen);
+ DBUG_ASSERT(*resl <= res_length);
+ const uchar *record_end= plen + *resl;
+ *recl= static_cast<uint>(record_end - record_start);
+ }
+
+private:
+ uint m_packable_length;
+ bool m_using_packed_addons; ///< caches the value of using_packed_addons()
};
+typedef Bounds_checked_array<uchar> Sort_buffer;
-int merge_many_buff(Sort_param *param, uchar *sort_buffer,
- BUFFPEK *buffpek,
- uint *maxbuffer, IO_CACHE *t_file);
-ulong read_to_buffer(IO_CACHE *fromfile,BUFFPEK *buffpek,
- uint sort_length);
+int merge_many_buff(Sort_param *param, Sort_buffer sort_buffer,
+ Merge_chunk *buffpek, uint *maxbuffer, IO_CACHE *t_file);
+ulong read_to_buffer(IO_CACHE *fromfile, Merge_chunk *buffpek,
+ Sort_param *param);
bool merge_buffers(Sort_param *param,IO_CACHE *from_file,
- IO_CACHE *to_file, uchar *sort_buffer,
- BUFFPEK *lastbuff,BUFFPEK *Fb,
- BUFFPEK *Tb,int flag);
-int merge_index(Sort_param *param, uchar *sort_buffer,
- BUFFPEK *buffpek, uint maxbuffer,
- IO_CACHE *tempfile, IO_CACHE *outfile);
-void reuse_freed_buff(QUEUE *queue, BUFFPEK *reuse, uint key_length);
+ IO_CACHE *to_file, Sort_buffer sort_buffer,
+ Merge_chunk *lastbuff, Merge_chunk *Fb,
+ Merge_chunk *Tb, int flag);
+int merge_index(Sort_param *param, Sort_buffer sort_buffer,
+ Merge_chunk *buffpek, uint maxbuffer,
+ IO_CACHE *tempfile, IO_CACHE *outfile);
+void reuse_freed_buff(QUEUE *queue, Merge_chunk *reuse, uint key_length);
#endif /* SQL_SORT_INCLUDED */
diff --git a/sql/uniques.cc b/sql/uniques.cc
index fafb44b56a0..a8170951e88 100644
--- a/sql/uniques.cc
+++ b/sql/uniques.cc
@@ -39,7 +39,6 @@
#include "my_tree.h" // element_count
#include "uniques.h" // Unique
#include "sql_sort.h"
-#include "myisamchk.h" // BUFFPEK
int unique_write_to_file(uchar* key, element_count count, Unique *unique)
{
@@ -94,7 +93,7 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
init_tree(&tree, (max_in_memory_size / 16), 0, size, comp_func,
NULL, comp_func_fixed_arg, MYF(MY_THREAD_SPECIFIC));
/* If the following fail's the next add will also fail */
- my_init_dynamic_array(&file_ptrs, sizeof(BUFFPEK), 16, 16,
+ my_init_dynamic_array(&file_ptrs, sizeof(Merge_chunk), 16, 16,
MYF(MY_THREAD_SPECIFIC));
/*
If you change the following, change it in get_max_elements function, too.
@@ -375,10 +374,10 @@ Unique::~Unique()
/* Write tree to disk; clear tree */
bool Unique::flush()
{
- BUFFPEK file_ptr;
+ Merge_chunk file_ptr;
elements+= tree.elements_in_tree;
- file_ptr.count=tree.elements_in_tree;
- file_ptr.file_pos=my_b_tell(&file);
+ file_ptr.set_rowcount(tree.elements_in_tree);
+ file_ptr.set_file_position(my_b_tell(&file));
tree_walk_action action= min_dupl_count ?
(tree_walk_action) unique_write_to_file_with_count :
@@ -490,7 +489,7 @@ void put_counter_into_merged_element(void *ptr, uint ofs, element_count cnt)
*/
static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
- uint key_length, BUFFPEK *begin, BUFFPEK *end,
+ uint key_length, Merge_chunk *begin, Merge_chunk *end,
tree_walk_action walk_action, void *walk_action_arg,
qsort_cmp2 compare, void *compare_arg,
IO_CACHE *file, bool with_counters)
@@ -499,7 +498,8 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
QUEUE queue;
if (end <= begin ||
merge_buffer_size < (size_t) (key_length * (end - begin + 1)) ||
- init_queue(&queue, (uint) (end - begin), offsetof(BUFFPEK, key), 0,
+ init_queue(&queue, (uint) (end - begin),
+ offsetof(Merge_chunk, m_current_key), 0,
buffpek_compare, &compare_context, 0, 0))
return 1;
/* we need space for one key when a piece of merge buffer is re-read */
@@ -510,10 +510,16 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
/* if piece_size is aligned reuse_freed_buffer will always hit */
uint piece_size= max_key_count_per_piece * key_length;
ulong bytes_read; /* to hold return value of read_to_buffer */
- BUFFPEK *top;
+ Merge_chunk *top;
int res= 1;
uint cnt_ofs= key_length - (with_counters ? sizeof(element_count) : 0);
element_count cnt;
+
+ // read_to_buffer() needs only rec_length.
+ Sort_param sort_param;
+ sort_param.rec_length= key_length;
+ DBUG_ASSERT(!sort_param.using_addon_fields());
+
/*
Invariant: queue must contain top element from each tree, until a tree
is not completely walked through.
@@ -522,15 +528,16 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
*/
for (top= begin; top != end; ++top)
{
- top->base= merge_buffer + (top - begin) * piece_size;
- top->max_keys= max_key_count_per_piece;
- bytes_read= read_to_buffer(file, top, key_length);
+ top->set_buffer_start(merge_buffer + (top - begin) * piece_size);
+ top->set_buffer_end(top->buffer_start() + piece_size);
+ top->set_max_keys(max_key_count_per_piece);
+ bytes_read= read_to_buffer(file, top, &sort_param);
if (unlikely(bytes_read == (ulong) -1))
goto end;
DBUG_ASSERT(bytes_read);
queue_insert(&queue, (uchar *) top);
}
- top= (BUFFPEK *) queue_top(&queue);
+ top= (Merge_chunk *) queue_top(&queue);
while (queue.elements > 1)
{
/*
@@ -540,20 +547,21 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
elements in each tree are unique. Action is applied only to unique
elements.
*/
- void *old_key= top->key;
+ void *old_key= top->current_key();
/*
read next key from the cache or from the file and push it to the
queue; this gives new top.
*/
- top->key+= key_length;
- if (--top->mem_count)
+ top->advance_current_key(key_length);
+ top->decrement_mem_count();
+ if (top->mem_count())
queue_replace_top(&queue);
else /* next piece should be read */
{
/* save old_key not to overwrite it in read_to_buffer */
memcpy(save_key_buff, old_key, key_length);
old_key= save_key_buff;
- bytes_read= read_to_buffer(file, top, key_length);
+ bytes_read= read_to_buffer(file, top, &sort_param);
if (unlikely(bytes_read == (ulong) -1))
goto end;
else if (bytes_read) /* top->key, top->mem_count are reset */
@@ -568,9 +576,9 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
reuse_freed_buff(&queue, top, key_length);
}
}
- top= (BUFFPEK *) queue_top(&queue);
+ top= (Merge_chunk *) queue_top(&queue);
/* new top has been obtained; if old top is unique, apply the action */
- if (compare(compare_arg, old_key, top->key))
+ if (compare(compare_arg, old_key, top->current_key()))
{
cnt= with_counters ?
get_counter_from_merged_element(old_key, cnt_ofs) : 1;
@@ -579,9 +587,9 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
}
else if (with_counters)
{
- cnt= get_counter_from_merged_element(top->key, cnt_ofs);
+ cnt= get_counter_from_merged_element(top->current_key(), cnt_ofs);
cnt+= get_counter_from_merged_element(old_key, cnt_ofs);
- put_counter_into_merged_element(top->key, cnt_ofs, cnt);
+ put_counter_into_merged_element(top->current_key(), cnt_ofs, cnt);
}
}
/*
@@ -595,13 +603,13 @@ static bool merge_walk(uchar *merge_buffer, size_t merge_buffer_size,
{
cnt= with_counters ?
- get_counter_from_merged_element(top->key, cnt_ofs) : 1;
- if (walk_action(top->key, cnt, walk_action_arg))
+ get_counter_from_merged_element(top->current_key(), cnt_ofs) : 1;
+ if (walk_action(top->current_key(), cnt, walk_action_arg))
goto end;
- top->key+= key_length;
+ top->advance_current_key(key_length);
}
- while (--top->mem_count);
- bytes_read= read_to_buffer(file, top, key_length);
+ while (top->decrement_mem_count());
+ bytes_read= read_to_buffer(file, top, &sort_param);
if (unlikely(bytes_read == (ulong) -1))
goto end;
}
@@ -657,13 +665,14 @@ bool Unique::walk(TABLE *table, tree_walk_action action, void *walk_action_arg)
if (!(merge_buffer = (uchar *)my_malloc(buff_sz, MYF(MY_WME))))
return 1;
if (buff_sz < full_size * (file_ptrs.elements + 1UL))
- res= merge(table, merge_buffer, buff_sz >= full_size * MERGEBUFF2) ;
+ res= merge(table, merge_buffer, buff_sz,
+ buff_sz >= full_size * MERGEBUFF2) ;
if (!res)
{
res= merge_walk(merge_buffer, buff_sz, full_size,
- (BUFFPEK *) file_ptrs.buffer,
- (BUFFPEK *) file_ptrs.buffer + file_ptrs.elements,
+ (Merge_chunk *) file_ptrs.buffer,
+ (Merge_chunk *) file_ptrs.buffer + file_ptrs.elements,
action, walk_action_arg,
tree.compare, tree.custom_arg, &file, with_counters);
}
@@ -684,16 +693,18 @@ bool Unique::walk(TABLE *table, tree_walk_action action, void *walk_action_arg)
All params are 'IN':
table the parameter to access sort context
buff merge buffer
+ buff_size size of merge buffer
without_last_merge TRUE <=> do not perform the last merge
RETURN VALUE
0 OK
<> 0 error
*/
-bool Unique::merge(TABLE *table, uchar *buff, bool without_last_merge)
+bool Unique::merge(TABLE *table, uchar *buff, size_t buff_size,
+ bool without_last_merge)
{
IO_CACHE *outfile= &sort.io_cache;
- BUFFPEK *file_ptr= (BUFFPEK*) file_ptrs.buffer;
+ Merge_chunk *file_ptr= (Merge_chunk*) file_ptrs.buffer;
uint maxbuffer= file_ptrs.elements - 1;
my_off_t save_pos;
bool error= 1;
@@ -724,7 +735,9 @@ bool Unique::merge(TABLE *table, uchar *buff, bool without_last_merge)
sort_param.cmp_context.key_compare_arg= tree.custom_arg;
/* Merge the buffers to one file, removing duplicates */
- if (merge_many_buff(&sort_param,buff,file_ptr,&maxbuffer,&file))
+ if (merge_many_buff(&sort_param,
+ Bounds_checked_array<uchar>(buff, buff_size),
+ file_ptr,&maxbuffer,&file))
goto err;
if (flush_io_cache(&file) ||
reinit_io_cache(&file,READ_CACHE,0L,0,0))
@@ -736,7 +749,8 @@ bool Unique::merge(TABLE *table, uchar *buff, bool without_last_merge)
file_ptrs.elements= maxbuffer+1;
return 0;
}
- if (merge_index(&sort_param, buff, file_ptr, maxbuffer, &file, outfile))
+ if (merge_index(&sort_param, Bounds_checked_array<uchar>(buff, buff_size),
+ file_ptr, maxbuffer, &file, outfile))
goto err;
error= 0;
err:
@@ -791,7 +805,7 @@ bool Unique::get(TABLE *table)
MYF(MY_THREAD_SPECIFIC|MY_WME))))
DBUG_RETURN(1);
- if (merge(table, sort_buffer, FALSE))
+ if (merge(table, sort_buffer, buff_sz, FALSE))
goto err;
rc= 0;
diff --git a/sql/uniques.h b/sql/uniques.h
index 654b3692aaa..f83eac36855 100644
--- a/sql/uniques.h
+++ b/sql/uniques.h
@@ -39,7 +39,7 @@ class Unique :public Sql_alloc
uint min_dupl_count; /* always 0 for unions, > 0 for intersections */
bool with_counters;
- bool merge(TABLE *table, uchar *buff, bool without_last_merge);
+ bool merge(TABLE *table, uchar *buff, size_t size, bool without_last_merge);
bool flush();
public:
diff --git a/storage/connect/mysql-test/connect/r/mysql_index.result b/storage/connect/mysql-test/connect/r/mysql_index.result
index b0c88b16fef..5f8f41f6218 100644
--- a/storage/connect/mysql-test/connect/r/mysql_index.result
+++ b/storage/connect/mysql-test/connect/r/mysql_index.result
@@ -299,11 +299,11 @@ matricule nom prenom
7626 HENIN PHILIPPE
403 HERMITTE PHILIPPE
9096 HELENA PHILIPPE
-SELECT matricule, nom, prenom FROM t2 ORDER BY nom LIMIT 10;
+SELECT matricule, nom, prenom FROM t2 ORDER BY nom,prenom LIMIT 10;
matricule nom prenom
4552 ABBADIE MONIQUE
-6627 ABBAYE GERALD
307 ABBAYE ANNICK
+6627 ABBAYE GERALD
7961 ABBE KATIA
1340 ABBE MICHELE
9270 ABBE SOPHIE
diff --git a/storage/connect/mysql-test/connect/t/mysql_index.test b/storage/connect/mysql-test/connect/t/mysql_index.test
index 74dc48f42c8..e36a827ac3c 100644
--- a/storage/connect/mysql-test/connect/t/mysql_index.test
+++ b/storage/connect/mysql-test/connect/t/mysql_index.test
@@ -120,7 +120,7 @@ SELECT matricule, nom, prenom FROM t2 WHERE nom <= 'ABEL' OR nom > 'YVON';
SELECT matricule, nom, prenom FROM t2 WHERE nom > 'HELEN' AND nom < 'HEROS';
SELECT matricule, nom, prenom FROM t2 WHERE nom BETWEEN 'HELEN' AND 'HEROS';
SELECT matricule, nom, prenom FROM t2 WHERE nom BETWEEN 'HELEN' AND 'HEROS' AND prenom = 'PHILIPPE';
-SELECT matricule, nom, prenom FROM t2 ORDER BY nom LIMIT 10;
+SELECT matricule, nom, prenom FROM t2 ORDER BY nom,prenom LIMIT 10;
SELECT a.nom, a.prenom, b.nom FROM t1 a STRAIGHT_JOIN t2 b ON a.prenom = b.prenom WHERE a.nom = 'FOCH' AND a.nom != b.nom;
DROP TABLE t2;
1
0

[Commits] db76d67: MDEV-21446 Assertion `!prebuilt->index->is_primary()' failed in
by IgorBabaev 20 Jan '20
by IgorBabaev 20 Jan '20
20 Jan '20
revision-id: db76d677345441246e1521204d9b418da36b6591 (mariadb-10.4.11-36-gdb76d67)
parent(s): 4de32015be82d0f484a7b49a427853ea7b6da5fd
author: Igor Babaev
committer: Igor Babaev
timestamp: 2020-01-19 20:03:25 -0800
message:
MDEV-21446 Assertion `!prebuilt->index->is_primary()' failed in
row_search_idx_cond_check with rowid_filter upon concurrent access to table
This bug has nothing to do with the concurrent access to table. Rather it
concerns queries for which the optimizer decides to employ a rowid filter
when accessing an InnoDB table by a secondary index, but later when
calling test_if_skip_sort_order() changes its mind to access the table by
the primary key.
Currently usage of rowid filters is not supported in InnoDB if the table
is accessed by the primary key. So in this case usage of a rowid filter
to access the table must be prohibited.
---
mysql-test/main/rowid_filter_innodb.result | 53 ++++++++++++++++++++++++++++++
mysql-test/main/rowid_filter_innodb.test | 49 +++++++++++++++++++++++++++
sql/sql_select.cc | 13 ++++++++
3 files changed, 115 insertions(+)
diff --git a/mysql-test/main/rowid_filter_innodb.result b/mysql-test/main/rowid_filter_innodb.result
index 36a59b8..c59b95b 100644
--- a/mysql-test/main/rowid_filter_innodb.result
+++ b/mysql-test/main/rowid_filter_innodb.result
@@ -2469,3 +2469,56 @@ Warnings:
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`domain` AS `domain`,`test`.`t1`.`registrant_name` AS `registrant_name`,`test`.`t1`.`registrant_organization` AS `registrant_organization`,`test`.`t1`.`registrant_street1` AS `registrant_street1`,`test`.`t1`.`registrant_street2` AS `registrant_street2`,`test`.`t1`.`registrant_street3` AS `registrant_street3`,`test`.`t1`.`registrant_street4` AS `registrant_street4`,`test`.`t1`.`registrant_street5` AS `registrant_street5`,`test`.`t1`.`registrant_city` AS `registrant_city`,`test`.`t1`.`registrant_postal_code` AS `registrant_postal_code`,`test`.`t1`.`registrant_country` AS `registrant_country`,`test`.`t1`.`registrant_email` AS `registrant_email`,`test`.`t1`.`registrant_telephone` AS `registrant_telephone`,`test`.`t1`.`administrative_name` AS `administrative_name`,`test`.`t1`.`administrative_organization` AS `administrative_organization`,`test`.`t1`.`administrative_street1` AS `administrative_street1`,`test`.`t1`.`administrati
ve_stree
t2` AS `administrative_street2`,`test`.`t1`.`administrative_street3` AS `administrative_street3`,`test`.`t1`.`administrative_street4` AS `administrative_street4`,`test`.`t1`.`administrative_street5` AS `administrative_street5`,`test`.`t1`.`administrative_city` AS `administrative_city`,`test`.`t1`.`administrative_postal_code` AS `administrative_postal_code`,`test`.`t1`.`administrative_country` AS `administrative_country`,`test`.`t1`.`administrative_email` AS `administrative_email`,`test`.`t1`.`administrative_telephone` AS `administrative_telephone`,`test`.`t1`.`technical_name` AS `technical_name`,`test`.`t1`.`technical_organization` AS `technical_organization`,`test`.`t1`.`technical_street1` AS `technical_street1`,`test`.`t1`.`technical_street2` AS `technical_street2`,`test`.`t1`.`technical_street3` AS `technical_street3`,`test`.`t1`.`technical_street4` AS `technical_street4`,`test`.`t1`.`technical_street5` AS `technical_street5`,`test`.`t1`.`technical_city` AS `technical_cit
y`,`test
`.`t1`.`technical_postal_code` AS `technical_postal_code`,`test`.`t1`.`technical_country` AS `technical_country`,`test`.`t1`.`technical_email` AS `technical_email`,`test`.`t1`.`technical_telephone` AS `technical_telephone`,`test`.`t1`.`json` AS `json`,`test`.`t1`.`timestamp` AS `timestamp` from `test`.`t1` where `test`.`t1`.`domain` = 'www.mailhost.i-dev.fr' and `test`.`t1`.`timestamp` >= <cache>(current_timestamp() + interval -1 month) order by `test`.`t1`.`timestamp` desc
SET optimizer_switch=@save_optimizer_switch;
DROP TABLE t1;
+#
+# MDEV-21446: index to access the table is changed for primary key
+#
+SET @stats.save= @@innodb_stats_persistent;
+SET global innodb_stats_persistent=on;
+CREATE TABLE t1 (
+pk int auto_increment,
+a int,
+b int,
+primary key (pk),
+key (a),
+key (b)
+) ENGINE=InnoDB;
+INSERT INTO t1 (a,b) VALUES
+(0,0), (0,9), (0,NULL), (1,2), (4,0), (2,9), (1,0), (NULL,0), (5,NULL), (5,1),
+(0,7), (NULL,5), (NULL,0), (2,1), (2,5), (6,NULL), (0,NULL), (NULL,8), (8,5),
+(2,NULL), (2,3), (NULL,8), (NULL,6), (1,1), (5,1), (NULL,5), (4,4), (2,4),
+(2,5), (1,9), (NULL,0), (3,7), (0,4), (2,8), (1,2), (1,4), (2,1),
+(NULL,7), (6,6), (3,0), (4,5), (5,2), (8,2), (NULL,NULL), (8,NULL),
+(0,1),(0,7);
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+ANALYZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status Engine-independent statistics collected
+test.t1 analyze status OK
+EXPLAIN EXTENDED
+SELECT * FROM t1
+WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 range|filter a,b b|a 5|5 NULL 192 (21%) 21.31 Using index condition; Using where; Using rowid filter
+Warnings:
+Note 1003 select `test`.`t1`.`pk` AS `pk`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` between 9 and 10 or `test`.`t1`.`a` is null) and (`test`.`t1`.`b` between 9 and 10 or `test`.`t1`.`b` = 9)
+EXPLAIN EXTENDED
+SELECT * FROM t1
+WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9)
+ORDER BY pk LIMIT 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 index a,b PRIMARY 4 NULL 75 54.55 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`pk` AS `pk`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` between 9 and 10 or `test`.`t1`.`a` is null) and (`test`.`t1`.`b` between 9 and 10 or `test`.`t1`.`b` = 9) order by `test`.`t1`.`pk` limit 1
+ANALYZE
+SELECT * FROM t1
+WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9)
+ORDER BY pk LIMIT 1;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE t1 index a,b PRIMARY 4 NULL 3008 3008.00 1.36 0.00 Using where
+DROP TABLE t1;
+SET global innodb_stats_persistent= @stats.save;
diff --git a/mysql-test/main/rowid_filter_innodb.test b/mysql-test/main/rowid_filter_innodb.test
index 1a5c8fe..30e0ede 100644
--- a/mysql-test/main/rowid_filter_innodb.test
+++ b/mysql-test/main/rowid_filter_innodb.test
@@ -332,3 +332,52 @@ eval EXPLAIN EXTENDED $q;
SET optimizer_switch=@save_optimizer_switch;
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-21446: index to access the table is changed for primary key
+--echo #
+
+SET @stats.save= @@innodb_stats_persistent;
+SET global innodb_stats_persistent=on;
+
+CREATE TABLE t1 (
+ pk int auto_increment,
+ a int,
+ b int,
+ primary key (pk),
+ key (a),
+ key (b)
+) ENGINE=InnoDB;
+
+INSERT INTO t1 (a,b) VALUES
+(0,0), (0,9), (0,NULL), (1,2), (4,0), (2,9), (1,0), (NULL,0), (5,NULL), (5,1),
+(0,7), (NULL,5), (NULL,0), (2,1), (2,5), (6,NULL), (0,NULL), (NULL,8), (8,5),
+(2,NULL), (2,3), (NULL,8), (NULL,6), (1,1), (5,1), (NULL,5), (4,4), (2,4),
+(2,5), (1,9), (NULL,0), (3,7), (0,4), (2,8), (1,2), (1,4), (2,1),
+(NULL,7), (6,6), (3,0), (4,5), (5,2), (8,2), (NULL,NULL), (8,NULL),
+(0,1),(0,7);
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+INSERT INTO t1(a,b) SELECT a, b FROM t1;
+
+ANALYZE TABLE t1;
+
+EXPLAIN EXTENDED
+SELECT * FROM t1
+ WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9);
+
+EXPLAIN EXTENDED
+SELECT * FROM t1
+ WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9)
+ORDER BY pk LIMIT 1;
+
+ANALYZE
+SELECT * FROM t1
+ WHERE (a BETWEEN 9 AND 10 OR a IS NULL) AND (b BETWEEN 9 AND 10 OR b = 9)
+ORDER BY pk LIMIT 1;
+
+DROP TABLE t1;
+SET global innodb_stats_persistent= @stats.save;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index d9d9c22..0e0c5c9 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -23241,6 +23241,19 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
join_read_first:join_read_last;
tab->type=JT_NEXT; // Read with index_first(), index_next()
+ /*
+ Currently usage of rowid filters is not supported in InnoDB
+ if the table is accessed by the primary key
+ */
+ if (tab->rowid_filter &&
+ tab->index == table->s->primary_key &&
+ table->file->primary_key_is_clustered())
+ {
+ tab->range_rowid_filter_info= 0;
+ delete tab->rowid_filter;
+ tab->rowid_filter= 0;
+ }
+
if (tab->pre_idx_push_select_cond)
{
tab->set_cond(tab->pre_idx_push_select_cond);
1
0

[Commits] e093ddb70dc: MDEV-21383: Possible range plan is not used under certain conditions
by psergey 19 Jan '20
by psergey 19 Jan '20
19 Jan '20
revision-id: e093ddb70dc93a5c0934656b201b881de185df8c (mariadb-10.3.21-26-ge093ddb70dc)
parent(s): 9be5c19c3458963ccf82450b198567976275d599
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2020-01-20 00:06:51 +0300
message:
MDEV-21383: Possible range plan is not used under certain conditions
[Variant 2 of the fix: collect the attached conditions]
Problem:
make_join_select() has a section of code which starts with
"We plan to scan all rows. Check again if we should use an index."
the code in that section will [unnecessarily] re-run the range
optimizer using this condition:
condition_attached_to_current_table AND current_table's_ON_expr
Note that the original invocation of range optimizer in
make_join_statistics was done using the whole select's WHERE condition.
Taking the whole select's WHERE condition and using multiple-equalities
allowed the range optimizer to infer more range restrictions.
The fix:
- Do range optimization using a condition that is an AND of this table's
condition and all of the previous tables' conditions.
- Also, fix the range optimizer to prefer SEL_ARGs with type=KEY_RANGE
over SEL_ARGS with type=MAYBE_KEY, regardless of the key part.
Computing
key_and(
SEL_ARG(type=MAYBE_KEY key_part=1),
SEL_ARG(type=KEY_RANGE, key_part=2)
)
will now produce the SEL_ARG with type=KEY_RANGE.
---
mysql-test/main/join.result | 56 +++++++++++++++++++++++++++++++++++
mysql-test/main/join.test | 65 ++++++++++++++++++++++++++++++++++++++++
sql/opt_range.cc | 2 ++
sql/sql_select.cc | 72 ++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 194 insertions(+), 1 deletion(-)
diff --git a/mysql-test/main/join.result b/mysql-test/main/join.result
index fb4f35ed555..fe6d18f7807 100644
--- a/mysql-test/main/join.result
+++ b/mysql-test/main/join.result
@@ -3339,3 +3339,59 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where
1 SIMPLE t1 ref a a 5 test.t0.a 1
drop table t0,t1;
+#
+# MDEV-21383: Possible range plan is not used under certain conditions
+#
+drop table if exists t10, t1000, t03;
+create table t10(a int);
+insert into t10 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t1000(a int);
+insert into t1000 select A.a + B.a* 10 + C.a * 100 from t10 A, t10 B, t10 C;
+create table t03(a int);
+insert into t03 values (0),(1),(2);
+create table t1 (
+stationid int
+);
+insert into t1 select a from t10;
+CREATE TABLE t2 (
+stationId int,
+startTime int,
+filler char(100),
+key1 int,
+key2 int,
+key(key1),
+key(key2),
+PRIMARY KEY (`stationId`,`startTime`)
+);
+insert into t2 select
+A.a,
+B.a,
+repeat('filler=data-', 4),
+B.a,
+1
+from
+t03 A,
+t1000 B;
+analyze table t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+create table t3(a int, filler char(100), key(a));
+insert into t3 select A.a+1000*B.a, 'filler-data' from t1000 A, t10 B;
+# This should produce a join order of t1,t2,t3
+# t2 should have type=range, key=PRIMARY key_len=8 (not type=ALL or key_len<8)
+explain
+SELECT *
+FROM
+t1,t2,t3
+WHERE
+t2.startTime <= 100 and
+t2.stationId = t1.stationId and
+(t1.stationid = 1 or t1.stationid = 2 or t1.stationid = 3) and
+key1 >0 and
+t2.key2=t3.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t2 range PRIMARY,key1,key2 PRIMARY 8 NULL 219 Using index condition; Using where; Using join buffer (flat, BNL join)
+1 SIMPLE t3 ref a a 5 test.t2.key2 1
+drop table t1,t2,t3;
+drop table t1000,t10,t03;
diff --git a/mysql-test/main/join.test b/mysql-test/main/join.test
index c5d62e213d8..c72ff0e1a8c 100644
--- a/mysql-test/main/join.test
+++ b/mysql-test/main/join.test
@@ -1748,3 +1748,68 @@ show keys from t1;
explain select * from t0,t1 where t0.a=t1.a;
drop table t0,t1;
+
+--echo #
+--echo # MDEV-21383: Possible range plan is not used under certain conditions
+--echo #
+
+--disable_warnings
+drop table if exists t10, t1000, t03;
+--enable_warnings
+
+create table t10(a int);
+insert into t10 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+
+create table t1000(a int);
+insert into t1000 select A.a + B.a* 10 + C.a * 100 from t10 A, t10 B, t10 C;
+
+create table t03(a int);
+insert into t03 values (0),(1),(2);
+
+
+create table t1 (
+ stationid int
+);
+insert into t1 select a from t10;
+
+CREATE TABLE t2 (
+ stationId int,
+ startTime int,
+ filler char(100),
+ key1 int,
+ key2 int,
+ key(key1),
+ key(key2),
+ PRIMARY KEY (`stationId`,`startTime`)
+);
+
+insert into t2 select
+ A.a,
+ B.a,
+ repeat('filler=data-', 4),
+ B.a,
+ 1
+from
+ t03 A,
+ t1000 B;
+analyze table t2;
+
+create table t3(a int, filler char(100), key(a));
+insert into t3 select A.a+1000*B.a, 'filler-data' from t1000 A, t10 B;
+
+--echo # This should produce a join order of t1,t2,t3
+--echo # t2 should have type=range, key=PRIMARY key_len=8 (not type=ALL or key_len<8)
+explain
+SELECT *
+FROM
+ t1,t2,t3
+WHERE
+ t2.startTime <= 100 and
+ t2.stationId = t1.stationId and
+ (t1.stationid = 1 or t1.stationid = 2 or t1.stationid = 3) and
+ key1 >0 and
+ t2.key2=t3.a;
+
+drop table t1,t2,t3;
+drop table t1000,t10,t03;
+
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 32e6a767f15..bd5f25d67c2 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -8999,6 +8999,8 @@ and_all_keys(RANGE_OPT_PARAM *param, SEL_ARG *key1, SEL_ARG *key2,
}
if (key1->type == SEL_ARG::MAYBE_KEY)
{
+ if (key2->type == SEL_ARG::KEY_RANGE)
+ return key2;
key1->right= key1->left= &null_element;
key1->next= key1->prev= 0;
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 87a45a1baed..ae26458d451 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -10543,6 +10543,74 @@ make_outerjoin_info(JOIN *join)
}
+/*
+ @brief
+ Build a temporary join prefix condition for JOIN_TABs up to the last tab
+
+ @param ret OUT the condition is returned here
+
+ @return
+ false OK
+ true Out of memory
+
+ @detail
+ Walk through the join prefix (from the first table to the last_tab) and
+ build a condition:
+
+ join_tab_1_cond AND join_tab_2_cond AND ... AND last_tab_conds
+
+ The condition is only intended to be used by the range optimizer, so:
+ - it is not normalized (can have Item_cond_and inside another
+ Item_cond_and)
+ - it does not include join->exec_const_cond and other similar conditions.
+*/
+
+bool build_tmp_join_prefix_cond(JOIN *join, JOIN_TAB *last_tab, Item **ret)
+{
+ THD *const thd= join->thd;
+ Item_cond_and *all_conds= NULL;
+
+ Item *res= NULL;
+
+ // Pick the ON-expression. Use the same logic as in get_sargable_cond():
+ if (last_tab->on_expr_ref)
+ res= *last_tab->on_expr_ref;
+ else if (last_tab->table->pos_in_table_list &&
+ last_tab->table->pos_in_table_list->embedding &&
+ !last_tab->table->pos_in_table_list->embedding->sj_on_expr)
+ {
+ res= last_tab->table->pos_in_table_list->embedding->on_expr;
+ }
+
+ for (JOIN_TAB *tab= first_depth_first_tab(join);
+ tab;
+ tab= next_depth_first_tab(join, tab))
+ {
+ if (tab->select_cond)
+ {
+ if (!res)
+ res= tab->select_cond;
+ else
+ {
+ if (!all_conds)
+ {
+ if (!(all_conds= new (thd->mem_root)Item_cond_and(thd, res,
+ tab->select_cond)))
+ return true;
+ res= all_conds;
+ }
+ else
+ all_conds->add(tab->select_cond, thd->mem_root);
+ }
+ }
+ if (tab == last_tab)
+ break;
+ }
+ *ret= all_conds? all_conds: res;
+ return false;
+}
+
+
static bool
make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
{
@@ -10890,7 +10958,9 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
{
/* Join with outer join condition */
COND *orig_cond=sel->cond;
- sel->cond= and_conds(thd, sel->cond, *tab->on_expr_ref);
+
+ if (build_tmp_join_prefix_cond(join, tab, &sel->cond))
+ return true;
/*
We can't call sel->cond->fix_fields,
1
0
revision-id: 9be5c19c3458963ccf82450b198567976275d599 (mariadb-10.3.21-25-g9be5c19c345)
parent(s): 6373ec3ec74515574f8a08535ed0d090b13d9122
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2020-01-19 21:16:15 +0300
message:
Fix another trivial merge error
---
sql/sp_head.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 3a113de9dd5..ba130881d68 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -493,8 +493,8 @@ void sp_head::destroy(sp_head *sp)
{
/* Make a copy of main_mem_root as free_root will free the sp */
MEM_ROOT own_root= sp->main_mem_root;
- DBUG_PRINT("info", ("mem_root 0x%lx moved to 0x%lx",
- (ulong) &sp->mem_root, (ulong) &own_root));
+ DBUG_PRINT("info", ("mem_root %p moved to %p",
+ &sp->mem_root, &own_root));
delete sp;
1
0