revision-id: 3f9040085a0de4976f55bc7e4a2fa5fa8d923100 (mariadb-10.3.6-131-g3f90400)
parent(s): 16327fc2e76e9215059894b461e8aca7f989da00 e80bcd7f64fc8ff6f46c1fc0d01e9c0b0fd03064
author: Igor Babaev
committer: Igor Babaev
timestamp: 2019-02-06 18:01:29 -0800
message:
Merge branch '10.4' into bb-10.4-mdev17096
.gitignore | 4 +
.gitmodules | 4 +
.travis.compiler.sh | 13 +-
.travis.yml | 65 +-
BUILD/SETUP.sh | 5 +-
CMakeLists.txt | 8 +-
CONTRIBUTING.md | 47 +
CREDITS | 4 +-
Docs/INSTALL-BINARY | 24 +-
Docs/README-wsrep | 50 +-
Docs/glibc-2.2.5.patch | 137 -
Docs/linuxthreads.txt | 19 -
Docs/sp-imp-spec.txt | 1100 -
KNOWN_BUGS.txt | 38 +-
README.md | 40 +-
VERSION | 4 +-
appveyor.yml | 4 +-
client/CMakeLists.txt | 3 +-
client/mysql.cc | 16 +-
client/mysql_upgrade.c | 10 +-
client/mysqladmin.cc | 2 +-
client/mysqlbinlog.cc | 16 +-
client/mysqldump.c | 14 +-
client/mysqlimport.c | 5 +-
client/mysqlshow.c | 4 +-
client/mysqlslap.c | 2 +-
client/mysqltest.cc | 61 +-
cmake/CPackRPM.cmake | 34 +-
cmake/configure.pl | 15 +
cmake/cpack_rpm.cmake | 10 +-
cmake/install_macros.cmake | 23 +-
cmake/libutils.cmake | 12 +-
cmake/make_dist.cmake.in | 8 +
cmake/mariadb_connector_c.cmake | 5 +-
cmake/os/Windows.cmake | 24 +-
cmake/os/WindowsCache.cmake | 1 +
cmake/plugin.cmake | 7 +-
cmake/ssl.cmake | 4 +-
cmake/submodules.cmake | 12 +-
cmake/wsrep.cmake | 15 +-
cmake/zlib.cmake | 21 +-
config.h.cmake | 9 +-
configure.cmake | 12 +-
debian/additions/debian-start | 2 +-
debian/additions/debian-start.inc.sh | 2 +-
debian/autobake-deb.sh | 8 +-
debian/control | 6 +-
debian/mariadb-server-10.4.install | 5 +-
debian/mariadb-server-10.4.postinst | 60 +-
debian/rules | 6 +-
extra/innochecksum.cc | 40 +-
extra/mariabackup/CMakeLists.txt | 29 +-
extra/mariabackup/backup_copy.cc | 179 +-
extra/mariabackup/backup_mysql.cc | 285 +-
extra/mariabackup/changed_page_bitmap.cc | 26 +-
extra/mariabackup/common.h | 71 +-
extra/mariabackup/crc/crc-intel-pclmul.c | 2 +-
extra/mariabackup/datasink.c | 141 -
extra/mariabackup/datasink.cc | 138 +
extra/mariabackup/ds_archive.c | 281 -
extra/mariabackup/ds_archive.cc | 281 +
extra/mariabackup/ds_buffer.c | 189 -
extra/mariabackup/ds_buffer.cc | 189 +
extra/mariabackup/ds_compress.c | 463 -
extra/mariabackup/ds_compress.cc | 463 +
extra/mariabackup/ds_local.cc | 1 -
extra/mariabackup/ds_stdout.c | 122 -
extra/mariabackup/ds_stdout.cc | 122 +
extra/mariabackup/ds_tmpfile.c | 234 -
extra/mariabackup/ds_tmpfile.cc | 230 +
extra/mariabackup/ds_xbstream.c | 223 -
extra/mariabackup/ds_xbstream.cc | 223 +
extra/mariabackup/encryption_plugin.cc | 9 +-
extra/mariabackup/fil_cur.cc | 205 +-
extra/mariabackup/innobackupex.cc | 6 +-
extra/mariabackup/write_filt.cc | 11 +-
extra/mariabackup/wsrep.cc | 7 +-
extra/mariabackup/xbstream.c | 564 -
extra/mariabackup/xbstream.cc | 563 +
extra/mariabackup/xbstream.h | 2 +-
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 | 887 +-
extra/mariabackup/xtrabackup.h | 16 +-
extra/my_print_defaults.c | 29 +-
extra/perror.c | 6 +-
extra/resolve_stack_dump.c | 2 +-
extra/yassl/src/ssl.cpp | 16 +-
include/aria_backup.h | 34 +
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/json_lib.h | 23 +-
include/lf.h | 2 +
include/little_endian.h | 2 +-
include/m_ctype.h | 9 -
include/my_bit.h | 10 +-
include/my_counter.h | 49 +
include/my_cpu.h | 2 +-
include/my_global.h | 11 +-
include/my_pthread.h | 16 +-
include/my_service_manager.h | 2 +
include/my_sys.h | 1 +
include/my_time.h | 78 +-
include/mysql/plugin.h | 2 +-
include/mysql/plugin_audit.h.pp | 45 +
include/mysql/plugin_auth.h | 46 +-
include/mysql/plugin_auth.h.pp | 49 +
include/mysql/plugin_encryption.h.pp | 45 +
include/mysql/plugin_ftparser.h.pp | 45 +
include/mysql/plugin_password_validation.h | 4 +-
include/mysql/plugin_password_validation.h.pp | 49 +-
include/mysql/psi/mysql_socket.h | 4 +-
include/mysql/service_json.h | 117 +
include/mysql/service_kill_statement.h | 4 +-
include/mysql/service_wsrep.h | 310 +-
include/mysql/services.h | 1 +
include/mysql_com.h | 1 +
include/service_versions.h | 3 +-
include/thr_lock.h | 6 +-
include/thread_pool_priv.h | 3 -
include/violite.h | 9 -
include/wsrep.h | 41 +-
libmariadb | 2 +-
libmysqld/CMakeLists.txt | 4 +-
libmysqld/examples/CMakeLists.txt | 2 +-
libmysqld/lib_sql.cc | 9 +-
libmysqld/libmysql.c | 7 +-
libservices/CMakeLists.txt | 1 +
libservices/json_service.c | 19 +
man/CMakeLists.txt | 1 -
man/my_print_defaults.1 | 7 +-
man/wsrep_sst_xtrabackup-v2.1 | 16 -
man/wsrep_sst_xtrabackup.1 | 16 -
mysql-test/collections/10.0-compatible.list | 8 +-
mysql-test/dgcov.pl | 2 +-
mysql-test/include/add_anonymous_users.inc | 2 +-
mysql-test/include/check-testcase.test | 51 +
mysql-test/include/check_ftwrl_incompatible.inc | 6 +-
mysql-test/include/default_mysqld.cnf | 1 +
mysql-test/include/diff_tables.inc | 2 +-
mysql-test/include/galera_cluster.inc | 6 +
mysql-test/include/galera_have_debug_sync.inc | 9 +
mysql-test/include/galera_suspend.inc | 14 +
mysql-test/include/galera_wait_sync_point.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_auth_named_pipe.inc | 13 +
mysql-test/include/have_openssl.inc | 7 +-
mysql-test/include/have_wsrep_enabled.inc | 1 -
.../include/innodb_encrypt_tables.combinations | 14 +
mysql-test/include/innodb_encrypt_tables.inc | 4 +
mysql-test/include/kill_galera.inc | 20 +
mysql-test/include/mtr_check.sql | 3 +-
mysql-test/include/mtr_warnings.sql | 2 +-
mysql-test/include/switch_to_mysql_global_priv.inc | 6 +
mysql-test/include/switch_to_mysql_user.inc | 56 +
mysql-test/include/system_db_struct.inc | 1 +
mysql-test/include/wait_until_connected_again.inc | 19 +-
mysql-test/include/wsrep_wait_disconnect.inc | 20 +
mysql-test/lib/My/Config.pm | 6 +-
mysql-test/lib/generate-ssl-certs.sh | 37 +-
mysql-test/lib/mtr_cases.pm | 1 +
mysql-test/lib/v1/mysql-test-run.pl | 2 +-
mysql-test/main/1st.result | 1 +
mysql-test/main/alter_table.result | 81 +-
mysql-test/main/alter_table.test | 69 +
mysql-test/main/alter_table_errors.result | 19 +
mysql-test/main/alter_table_errors.test | 11 +
mysql-test/main/alter_user.result | 36 +-
mysql-test/main/alter_user.test | 10 +-
mysql-test/main/analyze.result | 7 +
mysql-test/main/auth_rpl.result | 2 +-
.../main/auto_increment_ranges_innodb.result | 14 +
mysql-test/main/auto_increment_ranges_innodb.test | 13 +
mysql-test/main/backup_aria.result | 158 +
mysql-test/main/backup_aria.test | 157 +
mysql-test/main/backup_interaction.result | 520 +
mysql-test/main/backup_interaction.test | 503 +
mysql-test/main/backup_lock.result | 219 +
mysql-test/main/backup_lock.test | 284 +
mysql-test/main/backup_lock_debug.result | 28 +
mysql-test/main/backup_lock_debug.test | 40 +
mysql-test/main/backup_locks.result | 46 +
mysql-test/main/backup_locks.test | 50 +
mysql-test/main/backup_priv.result | 40 +
mysql-test/main/backup_priv.test | 52 +
mysql-test/main/backup_stages.result | 335 +
mysql-test/main/backup_stages.test | 385 +
mysql-test/main/backup_syntax.result | 163 +
mysql-test/main/backup_syntax.test | 181 +
mysql-test/main/bigint.result | 11 +
mysql-test/main/bigint.test | 9 +
mysql-test/main/brackets.result | 24 +
mysql-test/main/brackets.test | 18 +
mysql-test/main/case.result | 27 +
mysql-test/main/case.test | 22 +
mysql-test/main/cast.result | 2 +-
mysql-test/main/check.result | 10 +
mysql-test/main/check.test | 12 +
mysql-test/main/column_compression_parts.result | 1 +
mysql-test/main/column_compression_parts.test | 2 +-
mysql-test/main/connect.result | 31 +-
mysql-test/main/connect.test | 48 +-
mysql-test/main/constraints.result | 37 +
mysql-test/main/constraints.test | 25 +
mysql-test/main/contributors.result | 4 +-
mysql-test/main/create-big.result | 12 +-
mysql-test/main/create-big.test | 12 +-
mysql-test/main/create.result | 101 +-
mysql-test/main/create.test | 91 +-
mysql-test/main/create_drop_binlog.result | 4 -
mysql-test/main/create_drop_user.result | 24 +-
mysql-test/main/create_drop_user.test | 8 +-
mysql-test/main/create_or_replace.result | 74 +-
mysql-test/main/create_or_replace.test | 51 +-
mysql-test/main/create_user.result | 24 +-
mysql-test/main/create_utf8.result | 89 +
mysql-test/main/create_utf8.test | 80 +
mysql-test/main/cte_nonrecursive.result | 147 +
mysql-test/main/cte_nonrecursive.test | 111 +
mysql-test/main/cte_recursive.result | 389 +-
mysql-test/main/cte_recursive.test | 249 +-
mysql-test/main/ctype_big5.result | 128 +-
mysql-test/main/ctype_cp932_binlog_stm.result | 128 +-
mysql-test/main/ctype_eucjpms.result | 128 +-
mysql-test/main/ctype_euckr.result | 140 +-
mysql-test/main/ctype_gb2312.result | 128 +-
mysql-test/main/ctype_gbk.result | 454 +-
mysql-test/main/ctype_latin1.result | 17 +-
mysql-test/main/ctype_latin1.test | 12 +
mysql-test/main/ctype_many.result | 4 +-
mysql-test/main/ctype_recoding.result | 4 +-
mysql-test/main/ctype_sjis.result | 128 +-
mysql-test/main/ctype_uca.result | 61 +-
mysql-test/main/ctype_uca.test | 18 +
mysql-test/main/ctype_uca_innodb.result | 28 +-
mysql-test/main/ctype_ucs.result | 14 +-
mysql-test/main/ctype_ucs.test | 15 +
mysql-test/main/ctype_ujis.result | 128 +-
mysql-test/main/ctype_ujis_ucs2.result | 150 +-
mysql-test/main/ctype_upgrade.result | 6 +-
mysql-test/main/ctype_utf16.result | 4 +-
mysql-test/main/ctype_utf16le.result | 4 +-
mysql-test/main/ctype_utf32.result | 18 +-
mysql-test/main/ctype_utf8.result | 86 +-
mysql-test/main/ctype_utf8mb4.result | 52 +-
mysql-test/main/ctype_utf8mb4_heap.result | 14 +-
mysql-test/main/ctype_utf8mb4_innodb.result | 16 +-
mysql-test/main/ctype_utf8mb4_myisam.result | 16 +-
mysql-test/main/custom_aggregate_functions.result | 2 +-
mysql-test/main/date_formats.result | 2 +-
mysql-test/main/delayed.result | 4 +-
mysql-test/main/delete_use_source.result | 9 +-
mysql-test/main/deprecated_features.result | 2 +-
mysql-test/main/derived_cond_pushdown.result | 15654 ++++-----
mysql-test/main/derived_cond_pushdown.test | 3578 +-
mysql-test/main/derived_opt.result | 38 +-
mysql-test/main/derived_opt.test | 43 +
mysql-test/main/derived_split_innodb.result | 102 +
mysql-test/main/derived_split_innodb.test | 96 +
mysql-test/main/derived_view.result | 8 +-
mysql-test/main/disabled.def | 7 +-
mysql-test/main/distinct.result | 24 +-
mysql-test/main/distinct.test | 18 +
mysql-test/main/dyncol.result | 4 +-
mysql-test/main/empty_user_table.result | 11 +-
mysql-test/main/empty_user_table.test | 22 +-
mysql-test/main/events_bugs.result | 2 +-
mysql-test/main/explain_json.result | 1 +
mysql-test/main/explain_non_select.result | 2 +-
mysql-test/main/failed_auth_3909.result | 27 +-
mysql-test/main/failed_auth_3909.test | 20 +-
mysql-test/main/failed_auth_unixsocket.result | 6 +-
mysql-test/main/failed_auth_unixsocket.test | 20 +-
mysql-test/main/flush.result | 44 +-
mysql-test/main/flush.test | 79 +-
mysql-test/main/flush_block_commit.test | 2 +-
.../main/flush_block_commit_notembedded.test | 2 +-
mysql-test/main/flush_read_lock.result | 58 +-
mysql-test/main/flush_read_lock.test | 115 +-
mysql-test/main/flush_read_lock_kill.test | 2 +-
mysql-test/main/flush_ssl.result | 26 +
mysql-test/main/flush_ssl.test | 61 +
mysql-test/main/fulltext.result | 8 +-
mysql-test/main/func_concat.result | 20 +
mysql-test/main/func_concat.test | 22 +
mysql-test/main/func_default.result | 10 +-
mysql-test/main/func_default.test | 5 +
mysql-test/main/func_extract.result | 592 +
mysql-test/main/func_extract.test | 257 +
mysql-test/main/func_group_innodb.result | 26 +-
mysql-test/main/func_group_innodb.test | 19 +
mysql-test/main/func_hybrid_type.result | 208 +
mysql-test/main/func_hybrid_type.test | 121 +
mysql-test/main/func_in.result | 2 +-
mysql-test/main/func_json.result | 40 +
mysql-test/main/func_json.test | 38 +
mysql-test/main/func_like.result | 117 +
mysql-test/main/func_like.test | 50 +
mysql-test/main/func_math.result | 40 +
mysql-test/main/func_math.test | 33 +
mysql-test/main/func_sapdb.result | 6 +-
mysql-test/main/func_set.result | 4 +-
mysql-test/main/func_str.result | 12 +
mysql-test/main/func_str.test | 16 +
mysql-test/main/func_time.result | 2730 +-
mysql-test/main/func_time.test | 943 +-
mysql-test/main/func_time_round.result | 1374 +
mysql-test/main/func_time_round.test | 461 +
mysql-test/main/gis-precise.result | 3 +
mysql-test/main/gis-precise.test | 4 +
mysql-test/main/gis-rtree.result | 1 +
mysql-test/main/gis.result | 18 +-
mysql-test/main/gis.test | 15 +
mysql-test/main/gis2.result | 4 +-
mysql-test/main/grant.result | 80 +-
mysql-test/main/grant.test | 65 +-
mysql-test/main/grant2.result | 114 +-
mysql-test/main/grant2.test | 81 +-
mysql-test/main/grant3.result | 24 +-
mysql-test/main/grant4.result | 18 +-
mysql-test/main/grant5.result | 84 +
mysql-test/main/grant5.test | 63 +
mysql-test/main/grant_4332.result | 6 +-
mysql-test/main/grant_4332.test | 8 +-
mysql-test/main/group_by.result | 22 +-
mysql-test/main/group_by.test | 13 +
mysql-test/main/group_by_innodb.result | 1 +
mysql-test/main/group_min_max.result | 61 +-
mysql-test/main/group_min_max.test | 17 +
mysql-test/main/group_min_max_innodb.result | 1 +
mysql-test/main/handlersocket.result | 2 +-
mysql-test/main/having.result | 1 +
mysql-test/main/huge_frm-6224.result | 5 +
mysql-test/main/huge_frm-6224.test | 11 +-
mysql-test/main/in_subq_cond_pushdown.result | 32 +
mysql-test/main/in_subq_cond_pushdown.test | 39 +
mysql-test/main/index_merge_innodb.result | 6 +-
mysql-test/main/index_merge_innodb.test | 1 +
mysql-test/main/index_merge_myisam.result | 54 +
mysql-test/main/index_merge_myisam.test | 35 +
mysql-test/main/information_schema.result | 21 +-
mysql-test/main/information_schema.test | 13 +-
.../main/information_schema_all_engines.result | 2 +-
mysql-test/main/init_file_set_password-7656.result | 8 +-
mysql-test/main/init_file_set_password-7656.test | 2 +-
mysql-test/main/innodb_ext_key.result | 7 +-
mysql-test/main/innodb_ext_key.test | 1 +
mysql-test/main/innodb_icp.result | 10 +-
mysql-test/main/innodb_mrr_cpk.result | 2 +-
mysql-test/main/innodb_mysql_sync.result | 4 +-
mysql-test/main/innodb_mysql_sync.test | 2 +-
mysql-test/main/insert.result | 32 +-
mysql-test/main/invisible_field.result | 4 +-
mysql-test/main/invisible_field_debug.result | 2 +
mysql-test/main/invisible_field_debug.test | 2 +
mysql-test/main/join.result | 16 +-
mysql-test/main/join.test | 5 +-
mysql-test/main/join_cache.result | 212 +-
mysql-test/main/join_cache.test | 4 +-
mysql-test/main/join_nested_jcl6.result | 2 +-
mysql-test/main/join_outer.result | 75 +-
mysql-test/main/join_outer.test | 60 +
mysql-test/main/join_outer_innodb.result | 12 +-
mysql-test/main/join_outer_jcl6.result | 75 +-
mysql-test/main/kill.result | 2 +-
mysql-test/main/kill.test | 8 +-
mysql-test/main/limit_rows_examined.result | 11 +-
mysql-test/main/loaddata.result | 6 +-
mysql-test/main/lock.result | 7 +-
mysql-test/main/lock.test | 6 +-
mysql-test/main/lock_multi.result | 29 +-
mysql-test/main/lock_multi.test | 82 +-
mysql-test/main/lock_sync.result | 2 +-
mysql-test/main/lock_sync.test | 4 +-
mysql-test/main/log_tables_upgrade.result | 3 +-
mysql-test/main/lowercase_fs_off.result | 69 +
mysql-test/main/lowercase_fs_off.test | 15 +
mysql-test/main/lowercase_table.result | 4 +
mysql-test/main/lowercase_table.test | 12 +
mysql-test/main/max_password_errors.result | 45 +
mysql-test/main/max_password_errors.test | 64 +
mysql-test/main/mdev-504.result | 3 +-
mysql-test/main/mdev-504.test | 4 +-
mysql-test/main/mdev13607.result | 3 +
mysql-test/main/mdl.result | 74 +-
mysql-test/main/mdl.test | 64 +-
mysql-test/main/mdl_sync.result | 63 +-
mysql-test/main/mdl_sync.test | 95 +-
mysql-test/main/merge.result | 5 +
mysql-test/main/mix2_myisam.result | 1 +
mysql-test/main/multi_update.result | 8 +-
mysql-test/main/myisam.result | 8 +-
.../main/myisam_explain_non_select_all.result | 239 +-
mysql-test/main/myisam_icp.result | 2 +-
mysql-test/main/mysql_install_db_win.result | 13 +
mysql-test/main/mysql_install_db_win.test | 24 +
mysql-test/main/mysql_upgrade-6984.result | 7 +-
mysql-test/main/mysql_upgrade-6984.test | 4 +-
mysql-test/main/mysql_upgrade.result | 76 +-
mysql-test/main/mysql_upgrade.test | 40 +-
mysql-test/main/mysql_upgrade_no_innodb.result | 2 +-
mysql-test/main/mysql_upgrade_noengine.result | 12 +
mysql-test/main/mysql_upgrade_noengine.test | 16 +
mysql-test/main/mysql_upgrade_ssl.result | 3 +-
mysql-test/main/mysql_upgrade_view.result | 13 +-
mysql-test/main/mysqlbinlog_row_compressed.result | 16 +-
mysql-test/main/mysqlbinlog_row_minimal.result | 16 +-
mysql-test/main/mysqlcheck.result | 10 +-
mysql-test/main/mysqld--help.result | 34 +-
mysql-test/main/mysqld_option_err.test | 2 +
mysql-test/main/mysqldump-max.result | 4 +-
mysql-test/main/mysqldump-max.test | 2 +
mysql-test/main/mysqldump-utf8mb4.result | 86 +
mysql-test/main/mysqldump-utf8mb4.test | 49 +
mysql-test/main/mysqldump.result | 88 +-
mysql-test/main/mysqldump.test | 6 +-
mysql-test/main/mysqldump_restore.result | 20 -
.../main/no_password_column-mdev-11170.result | 169 -
mysql-test/main/no_password_column-mdev-11170.test | 95 -
mysql-test/main/not_embedded_server.result | 4 +-
mysql-test/main/not_embedded_server.test | 2 +-
mysql-test/main/null.result | 16 +-
mysql-test/main/null_key.result | 3 +
mysql-test/main/old-mode.result | 41 +
mysql-test/main/old-mode.test | 29 +
mysql-test/main/openssl_1.result | 78 +-
mysql-test/main/openssl_1.test | 94 +-
mysql-test/main/opt_tvc.result | 67 +-
mysql-test/main/opt_tvc.test | 40 +-
mysql-test/main/order_by.result | 37 +
mysql-test/main/order_by.test | 37 +
mysql-test/main/order_by_zerolength-4285.result | 20 +
mysql-test/main/order_by_zerolength-4285.test | 14 +
mysql-test/main/outfile_loaddata.result | 4 +-
mysql-test/main/parser.result | 86 +
mysql-test/main/parser.test | 91 +
mysql-test/main/partition.result | 104 +
mysql-test/main/partition.test | 62 +
mysql-test/main/partition_alter.test | 2 -
mysql-test/main/partition_binlog.result | 1 +
mysql-test/main/partition_error.result | 9 +
mysql-test/main/partition_error.test | 18 +
mysql-test/main/partition_explicit_prune.result | 25 +
mysql-test/main/partition_explicit_prune.test | 19 +
mysql-test/main/partition_innodb.result | 64 +
mysql-test/main/partition_innodb.test | 67 +
mysql-test/main/partition_pruning.result | 33 +
mysql-test/main/partition_pruning.test | 31 +
mysql-test/main/perror-win.result | 4 +-
mysql-test/main/perror.result | 8 +-
mysql-test/main/plugin.result | 51 +-
mysql-test/main/plugin.test | 40 +
mysql-test/main/plugin_auth.result | 36 +-
mysql-test/main/plugin_auth.test | 46 +-
mysql-test/main/plugin_auth_qa.result | 116 +-
mysql-test/main/plugin_auth_qa_1.result | 82 +-
mysql-test/main/plugin_auth_qa_1.test | 14 +-
mysql-test/main/plugin_auth_qa_2.result | 40 +-
mysql-test/main/processlist.result | 2 +-
mysql-test/main/ps.result | 50 +-
mysql-test/main/ps_ddl.result | 8 +-
mysql-test/main/ps_ddl.test | 2 +-
mysql-test/main/ps_error.result | 73 +
mysql-test/main/ps_error.test | 66 +
mysql-test/main/query_cache.result | 12 +-
mysql-test/main/query_cache_innodb.result | 2 +-
mysql-test/main/range.result | 93 +-
mysql-test/main/range_innodb.result | 43 +
mysql-test/main/range_innodb.test | 42 +
mysql-test/main/range_mrr_icp.result | 129 +-
mysql-test/main/range_vs_index_merge.result | 42 +-
mysql-test/main/range_vs_index_merge.test | 17 +
mysql-test/main/range_vs_index_merge_innodb.result | 36 +
mysql-test/main/read_only.result | 16 +-
mysql-test/main/read_only.test | 23 +-
mysql-test/main/reset_connection.result | 20 +
mysql-test/main/reset_connection.test | 15 +
mysql-test/main/row.result | 2 +-
mysql-test/main/select.result | 35 +-
mysql-test/main/select_jcl6.result | 35 +-
mysql-test/main/select_pkeycache.result | 35 +-
mysql-test/main/select_safe.result | 9 +-
mysql-test/main/selectivity.result | 48 +-
mysql-test/main/selectivity.test | 36 +
mysql-test/main/selectivity_innodb.result | 49 +-
mysql-test/main/session_tracker_last_gtid.result | 6 -
mysql-test/main/set_password.result | 28 +-
mysql-test/main/set_password.test | 2 +
mysql-test/main/show_check.result | 6 +-
mysql-test/main/show_create_user.result | 4 +-
mysql-test/main/show_create_user.test | 2 +-
.../main/show_grants_with_plugin-7985.result | 197 -
mysql-test/main/show_grants_with_plugin-7985.test | 160 -
mysql-test/main/sp-code.result | 12 +-
mysql-test/main/sp-cursor.result | 26 +-
mysql-test/main/sp-cursor.test | 21 +
mysql-test/main/sp-error.result | 2 +-
mysql-test/main/sp-for-loop.result | 2 +-
mysql-test/main/sp-for-loop.test | 2 +-
mysql-test/main/sp-security.result | 56 +-
mysql-test/main/sp-security.test | 32 +-
mysql-test/main/sp-vars.result | 8 +-
mysql-test/main/sp.result | 77 +-
mysql-test/main/sp.test | 57 +-
mysql-test/main/sp_notembedded.result | 4 +-
mysql-test/main/sp_notembedded.test | 10 +-
mysql-test/main/sql_mode.result | 8 +-
mysql-test/main/sql_mode.test | 4 +-
mysql-test/main/sql_safe_updates.opt | 1 +
mysql-test/main/sql_safe_updates.result | 3 +
mysql-test/main/sql_safe_updates.test | 4 +
mysql-test/main/ssl-crl-revoked-crl.result | 1 -
mysql-test/main/ssl.result | 9 +-
mysql-test/main/ssl.test | 5 -
mysql-test/main/ssl_cert_verify.result | 5 -
mysql-test/main/ssl_cert_verify.test | 43 -
mysql-test/main/ssl_cipher-master.opt | 1 -
mysql-test/main/ssl_cipher.result | 63 +-
mysql-test/main/ssl_cipher.test | 110 +-
mysql-test/main/ssl_crl-master.opt | 4 -
mysql-test/main/ssl_crl.combinations | 5 +
mysql-test/main/ssl_crl.result | 24 +-
mysql-test/main/ssl_crl.test | 15 +-
mysql-test/main/ssl_crl_clients-master.opt | 4 -
mysql-test/main/ssl_crl_clients-valid.result | 24 -
mysql-test/main/ssl_crl_clients.result | 6 +
mysql-test/main/ssl_crl_clients.test | 31 +-
mysql-test/main/ssl_crl_clients_valid-master.opt | 4 -
mysql-test/main/ssl_crl_clients_valid.result | 16 -
mysql-test/main/ssl_crl_clients_valid.test | 23 -
mysql-test/main/ssl_crl_clrpath-master.opt | 4 -
mysql-test/main/ssl_crl_clrpath.result | 23 -
mysql-test/main/ssl_crl_clrpath.test | 16 -
mysql-test/main/stat_tables.result | 159 +-
mysql-test/main/stat_tables.test | 90 +-
mysql-test/main/stat_tables_disabled.result | 4 +-
mysql-test/main/stat_tables_innodb.result | 159 +-
mysql-test/main/stat_tables_rbr.result | 4 +-
mysql-test/main/stat_tables_rbr.test | 5 +-
mysql-test/main/statistics.result | 10 -
mysql-test/main/status.result | 8 +-
mysql-test/main/str_to_datetime_457.result | 7 +-
mysql-test/main/strict.result | 184 +-
mysql-test/main/subselect.result | 16 +-
mysql-test/main/subselect_exists2in.result | 7 +-
mysql-test/main/subselect_exists2in_costmat.result | 2 +-
mysql-test/main/subselect_extra.result | 4 +
mysql-test/main/subselect_extra_no_semijoin.result | 4 +
mysql-test/main/subselect_innodb.result | 1 +
mysql-test/main/subselect_mat.result | 6 +-
mysql-test/main/subselect_mat_cost.result | 22 +-
mysql-test/main/subselect_mat_cost_bugs.result | 1 +
mysql-test/main/subselect_no_exists_to_in.result | 14 +-
mysql-test/main/subselect_no_mat.result | 12 +-
mysql-test/main/subselect_no_opts.result | 6 +-
mysql-test/main/subselect_no_scache.result | 16 +-
mysql-test/main/subselect_no_semijoin.result | 4 +-
mysql-test/main/subselect_sj.result | 2 +
mysql-test/main/subselect_sj2_mat.result | 20 +-
mysql-test/main/subselect_sj_jcl6.result | 2 +
mysql-test/main/subselect_sj_mat.result | 22 +-
mysql-test/main/system_mysql_db.result | 66 +-
mysql-test/main/system_mysql_db_507.result | 169 +
mysql-test/main/system_mysql_db_507.test | 94 +
mysql-test/main/system_mysql_db_fix40123.result | 13 +-
mysql-test/main/system_mysql_db_fix40123.test | 2 +-
mysql-test/main/system_mysql_db_fix50030.result | 13 +-
mysql-test/main/system_mysql_db_fix50030.test | 2 +-
mysql-test/main/system_mysql_db_fix50117.result | 13 +-
mysql-test/main/system_mysql_db_fix50117.test | 2 +-
mysql-test/main/temp_table.result | 24 +
mysql-test/main/temp_table.test | 26 +
mysql-test/main/temp_table_frm.result | 6 +
mysql-test/main/temp_table_frm.test | 9 +-
mysql-test/main/temporal_literal.result | 12 +-
mysql-test/main/timezone2.result | 225 +
mysql-test/main/timezone2.test | 198 +
mysql-test/main/trigger.result | 4 +-
mysql-test/main/trigger_notembedded.test | 2 +-
mysql-test/main/truncate_coverage.result | 2 +-
mysql-test/main/truncate_coverage.test | 4 +-
mysql-test/main/type_date.result | 60 +-
mysql-test/main/type_date.test | 31 +
mysql-test/main/type_date_round.result | 174 +
mysql-test/main/type_date_round.test | 113 +
mysql-test/main/type_datetime.result | 84 +-
mysql-test/main/type_datetime.test | 39 +-
mysql-test/main/type_datetime_round.result | 205 +
mysql-test/main/type_datetime_round.test | 147 +
mysql-test/main/type_decimal.result | 4 +-
mysql-test/main/type_float.result | 42 +-
mysql-test/main/type_float.test | 30 +
mysql-test/main/type_interval.result | 83 +
mysql-test/main/type_interval.test | 54 +
mysql-test/main/type_newdecimal.result | 46 +-
mysql-test/main/type_newdecimal.test | 46 +-
mysql-test/main/type_num.result | 168 +-
mysql-test/main/type_temporal_innodb.result | 36 +-
mysql-test/main/type_time.result | 148 +-
mysql-test/main/type_time.test | 79 +
mysql-test/main/type_time_round.result | 260 +
mysql-test/main/type_time_round.test | 184 +
mysql-test/main/type_timestamp.result | 154 +-
mysql-test/main/type_timestamp.test | 158 +
mysql-test/main/type_timestamp_round.result | 191 +
mysql-test/main/type_timestamp_round.test | 160 +
mysql-test/main/type_year.result | 18 +-
mysql-test/main/type_year.test | 18 +-
mysql-test/main/udf.result | 119 +
mysql-test/main/udf.test | 79 +
mysql-test/main/union.result | 40 +-
mysql-test/main/union.test | 35 +
mysql-test/main/update.result | 4 +-
mysql-test/main/update_use_source.result | 1 +
mysql-test/main/userstat.result | 4 +-
mysql-test/main/view.result | 9 +-
mysql-test/main/view_grant.result | 8 -
mysql-test/main/view_grant.test | 16 -
mysql-test/main/warnings.result | 68 +-
mysql-test/main/win.result | 545 +-
mysql-test/main/win.test | 182 +-
mysql-test/main/win_big-mdev-11697.result | 2 +
mysql-test/main/win_big.result | 12 -
mysql-test/main/win_first_last_value.result | 20 +-
mysql-test/main/win_percent_cume.result | 72 +-
mysql-test/main/win_percent_cume.test | 6 +-
mysql-test/main/win_percentile.result | 78 +-
mysql-test/main/win_percentile.test | 19 +
mysql-test/main/win_rank.result | 81 +-
mysql-test/main/win_rank.test | 17 +-
mysql-test/main/win_std.test | 4 +
mysql-test/mysql-test-run.pl | 368 +-
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/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/galera-cert.pem | 26 -
mysql-test/std_data/galera-key.pem | 28 -
mysql-test/std_data/galera-upgrade-ca-cert.pem | 40 -
mysql-test/std_data/galera-upgrade-server-cert.pem | 20 -
mysql-test/std_data/galera-upgrade-server-key.pem | 28 -
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-5.7.11-stm-temporal-round-binlog.000001 | Bin 0 -> 514 bytes
.../mysql-8.0.13-stm-temporal-round-binlog.000001 | Bin 0 -> 892 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 | 92 +-
mysql-test/std_data/serversan-key.pem | 40 +-
mysql-test/suite.pm | 11 +-
mysql-test/suite/archive/disabled.def | 13 +
mysql-test/suite/archive/flush.result | 18 +
mysql-test/suite/archive/flush.test | 25 +
mysql-test/suite/archive/rnd_pos.result | 56 +
mysql-test/suite/archive/rnd_pos.test | 27 +
mysql-test/suite/binlog/include/binlog.test | 9 +-
.../r/binlog_flush_binlogs_delete_domain.result | 12 +
mysql-test/suite/binlog/r/binlog_row_binlog.result | 18 +-
mysql-test/suite/binlog/r/binlog_stm_binlog.result | 16 +-
.../t/binlog_flush_binlogs_delete_domain.test | 19 +
mysql-test/suite/binlog/t/binlog_stm_binlog.test | 4 -
.../suite/binlog_encryption/rpl_corruption.result | 4 -
.../suite/binlog_encryption/rpl_loadfile.result | 4 -
.../rpl_mixed_binlog_max_cache_size.result | 28 -
.../suite/binlog_encryption/rpl_parallel.result | 1 +
.../binlog_encryption/rpl_special_charset.result | 4 -
.../rpl_stm_relay_ign_space.result | 4 -
.../rpl_switch_stm_row_mixed.result | 2 +-
mysql-test/suite/binlog_encryption/rpl_sync.result | 8 -
.../suite/binlog_encryption/rpl_typeconv.result | 44 +
.../suite/compat/oracle/r/func_concat.result | 69 +
mysql-test/suite/compat/oracle/r/parser.result | 110 +
mysql-test/suite/compat/oracle/r/sp-code.result | 42 +-
.../suite/compat/oracle/r/sp-cursor-rowtype.result | 25 +
mysql-test/suite/compat/oracle/r/sp-cursor.result | 30 +-
.../suite/compat/oracle/r/sp-package-mdl.result | 4 +-
.../compat/oracle/r/sp-package-mysqldump.result | 2 +-
mysql-test/suite/compat/oracle/r/sp-package.result | 48 +
mysql-test/suite/compat/oracle/r/sp.result | 60 +-
mysql-test/suite/compat/oracle/r/versioning.result | 8 +
mysql-test/suite/compat/oracle/t/func_concat.test | 36 +
mysql-test/suite/compat/oracle/t/parser.test | 154 +
mysql-test/suite/compat/oracle/t/sp-code.test | 2 +-
.../suite/compat/oracle/t/sp-cursor-rowtype.test | 23 +
mysql-test/suite/compat/oracle/t/sp-cursor.test | 35 +
.../compat/oracle/t/sp-package-mysqldump.test | 1 +
mysql-test/suite/compat/oracle/t/sp-package.test | 57 +
mysql-test/suite/compat/oracle/t/sp.test | 45 +-
mysql-test/suite/compat/oracle/t/versioning.test | 10 +
mysql-test/suite/csv/flush.result | 25 +
mysql-test/suite/csv/flush.test | 30 +
mysql-test/suite/encryption/disabled.def | 1 +
.../encryption/r/innodb-bad-key-change.result | 1 +
.../encryption/r/innodb-checksum-algorithm.result | 225 -
.../encryption/r/innodb-encryption-alter.result | 63 +
.../encryption/r/innodb-encryption-disable.result | 1 +
.../suite/encryption/r/innodb-force-corrupt.result | 3 +-
.../suite/encryption/r/innodb-missing-key.result | 1 +
.../suite/encryption/t/innodb-bad-key-change.test | 1 +
.../encryption/t/innodb-checksum-algorithm.test | 9 +-
.../encryption/t/innodb-encryption-alter.test | 60 +-
.../encryption/t/innodb-encryption-disable.test | 1 +
.../suite/encryption/t/innodb-force-corrupt.test | 9 +-
.../suite/encryption/t/innodb-missing-key.test | 1 +
.../suite/engines/funcs/r/an_calendar.result | 4 +
mysql-test/suite/engines/funcs/r/an_number.result | 14 +
mysql-test/suite/engines/funcs/r/an_string.result | 10 +
.../funcs/r/in_number_boundary_error.result | 12 +-
.../r/in_number_decimal_boundary_error.result | 8 +-
.../engines/funcs/r/tc_partition_analyze.result | 1 +
.../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/funcs_1/r/innodb_func_view.result | 156 +-
.../suite/funcs_1/r/is_check_constraint.result | 121 +
.../suite/funcs_1/r/is_check_constraints.result | 36 +
.../suite/funcs_1/r/is_columns_innodb.result | 4 +-
mysql-test/suite/funcs_1/r/is_columns_mysql.result | 197 +-
.../funcs_1/r/is_columns_mysql_embedded.result | 197 +-
.../suite/funcs_1/r/is_key_column_usage.result | 4 +-
.../funcs_1/r/is_key_column_usage_embedded.result | 4 +-
.../suite/funcs_1/r/is_routines_embedded.result | 12 +-
mysql-test/suite/funcs_1/r/is_statistics.result | 4 +-
.../suite/funcs_1/r/is_statistics_mysql.result | 4 +-
.../funcs_1/r/is_statistics_mysql_embedded.result | 8 +-
.../suite/funcs_1/r/is_table_constraints.result | 3 +-
.../funcs_1/r/is_table_constraints_mysql.result | 3 +-
.../r/is_table_constraints_mysql_embedded.result | 6 +-
mysql-test/suite/funcs_1/r/is_tables_mysql.result | 39 +-
.../funcs_1/r/is_tables_mysql_embedded.result | 78 +-
.../suite/funcs_1/r/is_user_privileges.result | 1839 +-
mysql-test/suite/funcs_1/r/is_views.result | 1 +
.../suite/funcs_1/r/is_views_embedded.result | 1 +
mysql-test/suite/funcs_1/r/memory_func_view.result | 156 +-
mysql-test/suite/funcs_1/r/myisam_func_view.result | 156 +-
mysql-test/suite/funcs_1/r/storedproc.result | 6 +-
.../suite/funcs_1/t/is_check_constraint.test | 92 +
mysql-test/suite/funcs_1/t/is_user_privileges.test | 11 +-
mysql-test/suite/galera/disabled.def | 43 +-
mysql-test/suite/galera/galera_2nodes.cnf | 26 +-
.../suite/galera/galera_2nodes_as_master.cnf | 18 +-
mysql-test/suite/galera/galera_2nodes_as_slave.cnf | 51 +-
mysql-test/suite/galera/galera_3nodes_as_slave.cnf | 62 +-
mysql-test/suite/galera/galera_4nodes.cnf | 30 +-
.../suite/galera/include/galera_base_port.inc | 8 +
.../galera/include/galera_concurrent_test.inc | 90 +
.../suite/galera/include/galera_dump_sr_table.inc | 28 +
.../galera/include/galera_have_debug_sync.inc | 9 -
.../suite/galera/include/galera_load_provider.inc | 68 +
mysql-test/suite/galera/include/galera_resume.inc | 9 -
.../suite/galera/include/galera_sst_restore.inc | 2 +-
.../galera/include/galera_st_disconnect_slave.inc | 8 +
.../galera/include/galera_unload_provider.inc | 8 +
.../galera/include/have_filekeymanagement.inc | 3 +
.../suite/galera/include/have_xtrabackup.inc | 4 -
.../suite/galera/include/reset_query_cache.inc | 11 +
mysql-test/suite/galera/r/GAL-382.result | 2 +
mysql-test/suite/galera/r/GAL-401.result | 2 +
mysql-test/suite/galera/r/GAL-480.result | 2 +
mysql-test/suite/galera/r/GCF-1081.result | 47 +
mysql-test/suite/galera/r/GCF-939.result | 13 +
mysql-test/suite/galera/r/MDEV-15443.result | 2 +
mysql-test/suite/galera/r/MW-252.result | 2 +
mysql-test/suite/galera/r/MW-258.result | 2 +
mysql-test/suite/galera/r/MW-259.result | 2 +
mysql-test/suite/galera/r/MW-284.result | 4 +
mysql-test/suite/galera/r/MW-285.result | 2 +
mysql-test/suite/galera/r/MW-286.result | 23 +-
mysql-test/suite/galera/r/MW-292.result | 27 +-
mysql-test/suite/galera/r/MW-309.result | 2 +
mysql-test/suite/galera/r/MW-313.result | 2 +
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 | 2 +
mysql-test/suite/galera/r/MW-328D.result | 2 +
mysql-test/suite/galera/r/MW-328E.result | 2 +
mysql-test/suite/galera/r/MW-329.result | 9 +-
mysql-test/suite/galera/r/MW-336.result | 35 +
mysql-test/suite/galera/r/MW-357.result | 2 +
mysql-test/suite/galera/r/MW-360.result | 41 +
mysql-test/suite/galera/r/MW-369.result | 149 +-
mysql-test/suite/galera/r/MW-388.result | 6 +-
mysql-test/suite/galera/r/MW-402.result | 76 +-
mysql-test/suite/galera/r/MW-416.result | 5 +-
mysql-test/suite/galera/r/MW-44.result | 21 +-
mysql-test/suite/galera/r/MW-86-wait1.result | 17 +-
mysql-test/suite/galera/r/MW-86-wait8.result | 16 +-
mysql-test/suite/galera/r/MW-86.result | 78 +
mysql-test/suite/galera/r/basic.result | 2 +
mysql-test/suite/galera/r/binlog_checksum.result | 2 +
mysql-test/suite/galera/r/create.result | 2 +
.../suite/galera/r/enforce_storage_engine.result | 2 +
.../suite/galera/r/enforce_storage_engine2.result | 2 +
mysql-test/suite/galera/r/ev51914.result | 2 +
mysql-test/suite/galera/r/fk.result | 2 +
mysql-test/suite/galera/r/galera#414.result | 2 +
mysql-test/suite/galera/r/galera#500.result | 8 +
mysql-test/suite/galera/r/galera#505.result | 10 +
.../r/galera_FK_duplicate_client_insert.result | 382 +
mysql-test/suite/galera/r/galera_admin.result | 4 +
.../galera/r/galera_alter_engine_innodb.result | 2 +
.../galera/r/galera_alter_engine_myisam.result | 2 +
.../suite/galera/r/galera_alter_table_force.result | 2 +
.../galera/r/galera_applier_ftwrl_table.result | 2 +
.../r/galera_applier_ftwrl_table_alter.result | 2 +
mysql-test/suite/galera/r/galera_as_master.result | 4 +
.../suite/galera/r/galera_as_master_gtid.result | 44 +-
.../suite/galera/r/galera_as_master_large.result | 2 +
mysql-test/suite/galera/r/galera_as_slave.result | 12 +-
.../suite/galera/r/galera_as_slave_autoinc.result | 12 +-
.../suite/galera/r/galera_as_slave_gtid.result | 12 +-
.../r/galera_as_slave_gtid_replicate_do_db.result | 159 +
.../galera_as_slave_gtid_replicate_do_db_cc.result | 315 +
.../suite/galera/r/galera_as_slave_nonprim.result | 16 +
.../galera/r/galera_autoinc_sst_mariabackup.result | 51 +
.../galera/r/galera_autoinc_sst_xtrabackup.result | 47 -
mysql-test/suite/galera/r/galera_bf_abort.result | 4 +-
.../r/galera_bf_abort_flush_for_export.result | 2 +
.../galera/r/galera_bf_abort_for_update.result | 6 +-
.../suite/galera/r/galera_bf_abort_ftwrl.result | 2 +
.../suite/galera/r/galera_bf_abort_get_lock.result | 4 +-
.../galera/r/galera_bf_abort_group_commit.result | 685 +
.../galera/r/galera_bf_abort_lock_table.result | 2 +
.../suite/galera/r/galera_bf_abort_shutdown.result | 12 +
.../suite/galera/r/galera_bf_abort_sleep.result | 4 +-
.../r/galera_bf_background_statistics.result | 4 +-
.../suite/galera/r/galera_bf_lock_wait.result | 2 +
.../suite/galera/r/galera_binlog_cache_size.result | 2 +
.../suite/galera/r/galera_binlog_checksum.result | 2 +
.../r/galera_binlog_event_max_size_max.result | 2 +
.../r/galera_binlog_event_max_size_min.result | 2 +
.../suite/galera/r/galera_binlog_row_image.result | 2 +
.../galera/r/galera_binlog_stmt_autoinc.result | 147 +
.../suite/galera/r/galera_commit_empty.result | 15 +
.../suite/galera/r/galera_concurrent_ctas.result | 2 +
.../suite/galera/r/galera_create_function.result | 2 +
.../suite/galera/r/galera_create_procedure.result | 2 +
.../galera/r/galera_create_table_as_select.result | 103 +
.../suite/galera/r/galera_create_table_like.result | 2 +
.../suite/galera/r/galera_create_trigger.result | 2 +
.../suite/galera/r/galera_ddl_multiline.result | 2 +
mysql-test/suite/galera/r/galera_defaults.result | 81 +-
.../suite/galera/r/galera_delete_limit.result | 2 +
.../suite/galera/r/galera_desync_overlapped.result | 2 +
.../suite/galera/r/galera_drop_database.result | 25 +
mysql-test/suite/galera/r/galera_drop_multi.result | 2 +
.../suite/galera/r/galera_encrypt_tmp_files.result | 2 +
mysql-test/suite/galera/r/galera_enum.result | 41 +-
mysql-test/suite/galera/r/galera_events.result | 2 +
.../suite/galera/r/galera_fk_cascade_delete.result | 2 +
.../suite/galera/r/galera_fk_cascade_update.result | 2 +
.../suite/galera/r/galera_fk_conflict.result | 4 +-
.../suite/galera/r/galera_fk_mismatch.result | 2 +
.../suite/galera/r/galera_fk_multicolumn.result | 2 +
.../suite/galera/r/galera_fk_multitable.result | 2 +
mysql-test/suite/galera/r/galera_fk_no_pk.result | 2 +
.../galera/r/galera_fk_selfreferential.result | 2 +
mysql-test/suite/galera/r/galera_fk_setnull.result | 2 +
.../suite/galera/r/galera_flush_local.result | 6 +
.../galera/r/galera_forced_binlog_format.result | 20 +-
mysql-test/suite/galera/r/galera_ftwrl.result | 2 +
.../suite/galera/r/galera_ftwrl_drain.result | 4 +-
mysql-test/suite/galera/r/galera_fulltext.result | 2 +
.../suite/galera/r/galera_gcache_recover.result | 9 +
.../r/galera_gcache_recover_full_gcache.result | 11 +-
.../galera/r/galera_gcache_recover_manytrx.result | 29 +
.../suite/galera/r/galera_gcs_fc_limit.result | 2 +
.../suite/galera/r/galera_gcs_fragment.result | 15 +-
.../galera/r/galera_gcs_max_packet_size.result | 2 +
mysql-test/suite/galera/r/galera_gra_log.result | 2 +
mysql-test/suite/galera/r/galera_gtid.result | 2 +
mysql-test/suite/galera/r/galera_gtid_slave.result | 26 +-
.../galera/r/galera_gtid_slave_sst_rsync.result | 107 +-
.../suite/galera/r/galera_insert_ignore.result | 2 +
.../suite/galera/r/galera_insert_multi.result | 4 +-
.../r/galera_ist_innodb_flush_logs,release.rdiff | 114 +
.../galera/r/galera_ist_innodb_flush_logs.result | 24 +-
.../galera/r/galera_ist_mariabackup,debug.rdiff | 114 +
.../suite/galera/r/galera_ist_mariabackup.result | 292 +
...a_ist_mariabackup_innodb_flush_logs,debug.rdiff | 114 +
...galera_ist_mariabackup_innodb_flush_logs.result | 98 +
.../galera/r/galera_ist_mysqldump,debug.rdiff | 117 +
.../suite/galera/r/galera_ist_mysqldump.result | 112 +-
.../suite/galera/r/galera_ist_progress.result | 9 -
.../suite/galera/r/galera_ist_recv_bind.result | 2 +
.../galera/r/galera_ist_restart_joiner.result | 3 +-
.../suite/galera/r/galera_ist_rsync,debug.rdiff | 114 +
mysql-test/suite/galera/r/galera_ist_rsync.result | 113 +-
.../suite/galera/r/galera_ist_xtrabackup-v2.result | 357 -
mysql-test/suite/galera/r/galera_kill_ddl.result | 3 +
.../suite/galera/r/galera_kill_largechanges.result | 3 +
.../suite/galera/r/galera_kill_smallchanges.result | 3 +
mysql-test/suite/galera/r/galera_lock_table.result | 2 +
mysql-test/suite/galera/r/galera_log_bin.result | 4 +
.../suite/galera/r/galera_log_output_csv.result | 2 +
.../suite/galera/r/galera_many_columns.result | 4 +-
.../suite/galera/r/galera_many_indexes.result | 6 +-
mysql-test/suite/galera/r/galera_many_rows.result | 6 +-
.../suite/galera/r/galera_many_tables_nopk.result | 4 +-
.../suite/galera/r/galera_many_tables_pk.result | 4 +-
mysql-test/suite/galera/r/galera_mdev_10812.result | 2 +
mysql-test/suite/galera/r/galera_mdev_13787.result | 2 +
mysql-test/suite/galera/r/galera_mdev_15611.result | 2 +
mysql-test/suite/galera/r/galera_mdl_race.result | 4 +-
.../suite/galera/r/galera_multi_database.result | 2 +
.../suite/galera/r/galera_myisam_autocommit.result | 2 +
.../galera/r/galera_myisam_transactions.result | 2 +
mysql-test/suite/galera/r/galera_nopk_bit.result | 4 +-
mysql-test/suite/galera/r/galera_nopk_blob.result | 4 +-
.../galera/r/galera_nopk_large_varchar.result | 4 +-
.../suite/galera/r/galera_nopk_unicode.result | 4 +-
.../r/galera_parallel_apply_lock_table.result | 8 +-
.../r/galera_parallel_autoinc_largetrx.result | 20 +-
.../r/galera_parallel_autoinc_manytrx.result | 4 +-
.../suite/galera/r/galera_parallel_simple.result | 2 +
.../suite/galera/r/galera_pc_ignore_sb.result | 7 +-
.../suite/galera/r/galera_pc_recovery.result | 37 +
.../suite/galera/r/galera_pk_bigint_signed.result | 4 +-
.../galera/r/galera_pk_bigint_unsigned.result | 4 +-
.../galera/r/galera_prepared_statement.result | 4 +-
.../suite/galera/r/galera_query_cache.result | 2 +
.../galera/r/galera_query_cache_sync_wait.result | 2 +
mysql-test/suite/galera/r/galera_read_only.result | 2 +
.../galera/r/galera_repl_key_format_flat16.result | 2 +
.../suite/galera/r/galera_repl_max_ws_size.result | 4 +-
.../suite/galera/r/galera_restart_nochanges.result | 2 +
.../r/galera_restart_on_unknown_option.result | 2 +
mysql-test/suite/galera/r/galera_roles.result | 2 +
mysql-test/suite/galera/r/galera_rsu_add_pk.result | 2 +
.../suite/galera/r/galera_rsu_drop_pk.result | 2 +
mysql-test/suite/galera/r/galera_rsu_error.result | 2 +
mysql-test/suite/galera/r/galera_rsu_simple.result | 2 +
.../suite/galera/r/galera_rsu_wsrep_desync.result | 2 +
mysql-test/suite/galera/r/galera_sbr.result | 2 +
mysql-test/suite/galera/r/galera_sbr_binlog.result | 2 +
.../galera/r/galera_schema_dirty_reads.result | 2 +
.../suite/galera/r/galera_serializable.result | 8 +-
mysql-test/suite/galera/r/galera_server.result | 2 +
.../suite/galera/r/galera_sql_log_bin_zero.result | 2 +
mysql-test/suite/galera/r/galera_ssl.result | 2 +
.../suite/galera/r/galera_ssl_compression.result | 2 +
.../galera/r/galera_sst_mariabackup,debug.rdiff | 4 +-
.../suite/galera/r/galera_sst_mariabackup.result | 2 +
.../r/galera_sst_mariabackup_data_dir,debug.rdiff | 116 +
.../r/galera_sst_mariabackup_data_dir.result | 292 +
.../galera_sst_mariabackup_encrypt_with_key.result | 5 +
.../r/galera_sst_mariabackup_table_options.result | 999 +
.../galera/r/galera_sst_mysqldump,debug.rdiff | 22 +-
.../galera/r/galera_sst_mysqldump,release.rdiff | 18 +
.../suite/galera/r/galera_sst_mysqldump.result | 1 +
.../r/galera_sst_mysqldump_with_key,debug.rdiff | 106 +
.../galera/r/galera_sst_mysqldump_with_key.result | 97 -
mysql-test/suite/galera/r/galera_sst_rsync.result | 2 +
.../suite/galera/r/galera_sst_rsync2,debug.rdiff | 120 +
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 | 110 +-
.../galera/r/galera_sst_xtrabackup-v2,debug.rdiff | 116 -
.../r/galera_sst_xtrabackup-v2-options.result | 3 -
.../suite/galera/r/galera_sst_xtrabackup-v2.result | 290 -
...alera_sst_xtrabackup-v2_encrypt_with_key.result | 3 -
.../suite/galera/r/galera_status_cluster.result | 2 +
.../galera/r/galera_status_local_index.result | 2 +
.../galera/r/galera_status_local_state.result | 2 +
.../suite/galera/r/galera_suspend_slave.result | 4 +
.../suite/galera/r/galera_sync_wait_show.result | 2 +
.../r/galera_toi_alter_auto_increment.result | 2 +
.../suite/galera/r/galera_toi_ddl_error.result | 5 +
.../suite/galera/r/galera_toi_ddl_fk_insert.result | 2 +
.../suite/galera/r/galera_toi_ddl_fk_update.result | 2 +
.../suite/galera/r/galera_toi_ddl_locking.result | 33 +-
.../galera/r/galera_toi_ddl_nonconflicting.result | 2 +
.../galera/r/galera_toi_ddl_sequential.result | 2 +
.../suite/galera/r/galera_toi_drop_database.result | 6 +-
mysql-test/suite/galera/r/galera_toi_ftwrl.result | 2 +
.../galera/r/galera_toi_lock_exclusive.result | 4 +-
.../suite/galera/r/galera_toi_lock_shared.result | 2 +
.../suite/galera/r/galera_toi_truncate.result | 6 +-
.../galera/r/galera_transaction_read_only.result | 2 +
.../galera/r/galera_transaction_replay.result | 96 +-
mysql-test/suite/galera/r/galera_truncate.result | 2 +
.../galera/r/galera_truncate_temporary.result | 2 +
.../galera/r/galera_unicode_identifiers.result | 8 +-
mysql-test/suite/galera/r/galera_unicode_pk.result | 6 +-
.../suite/galera/r/galera_update_limit.result | 2 +
.../suite/galera/r/galera_v1_row_events.result | 2 +
.../suite/galera/r/galera_var_OSU_method.result | 2 +
.../suite/galera/r/galera_var_OSU_method2.result | 2 +
.../r/galera_var_auto_inc_control_off.result | 4 +-
.../galera/r/galera_var_auto_inc_control_on.result | 2 +
.../galera/r/galera_var_certify_nonPK_off.result | 2 +
.../galera/r/galera_var_cluster_address.result | 8 +-
.../suite/galera/r/galera_var_desync_on.result | 2 +
.../suite/galera/r/galera_var_dirty_reads.result | 5 +-
.../suite/galera/r/galera_var_fkchecks.result | 2 +
.../galera/r/galera_var_gtid_domain_id.result | 2 +
.../galera/r/galera_var_ignore_apply_errors.result | 186 +
.../r/galera_var_innodb_disallow_writes.result | 2 +
.../galera/r/galera_var_load_data_splitting.result | 2 +
.../suite/galera/r/galera_var_log_bin.result | 2 +
.../suite/galera/r/galera_var_max_ws_rows.result | 2 +
.../suite/galera/r/galera_var_max_ws_size.result | 4 +-
.../r/galera_var_mysql_replication_bundle.result | 2 +
.../suite/galera/r/galera_var_node_address.result | 4 +-
.../galera/r/galera_var_reject_queries.result | 3 +-
.../r/galera_var_replicate_myisam_off.result | 2 +
.../galera/r/galera_var_replicate_myisam_on.result | 2 +
.../galera/r/galera_var_retry_autocommit.result | 28 +-
.../suite/galera/r/galera_var_slave_threads.result | 123 +-
.../suite/galera/r/galera_var_sst_auth.result | 2 +
.../suite/galera/r/galera_var_sync_wait.result | 2 +
.../suite/galera/r/galera_var_wsrep_on_off.result | 2 +
mysql-test/suite/galera/r/galera_wan.result | 8 +-
.../suite/galera/r/galera_wan_restart_ist.result | 2 +
.../suite/galera/r/galera_wan_restart_sst.result | 2 +
.../galera/r/galera_wsrep_desync_wsrep_on.result | 2 +
.../galera/r/galera_wsrep_log_conficts.result | 4 +-
.../suite/galera/r/galera_wsrep_new_cluster.result | 2 +
.../r/galera_wsrep_provider_options_syntax.result | 2 +
.../r/galera_wsrep_provider_unset_set.result | 2 +
.../galera/r/galera_zero_length_column.result | 2 +
mysql-test/suite/galera/r/grant.result | 4 +-
mysql-test/suite/galera/r/lp1276424.result | 2 +
mysql-test/suite/galera/r/lp1347768.result | 2 +
mysql-test/suite/galera/r/lp1376747-2.result | 2 +
mysql-test/suite/galera/r/lp1376747-3.result | 2 +
mysql-test/suite/galera/r/lp1376747-4.result | 2 +
mysql-test/suite/galera/r/lp1376747.result | 2 +
mysql-test/suite/galera/r/lp1438990.result | 2 +
mysql-test/suite/galera/r/lp959512.result | 2 +
mysql-test/suite/galera/r/mdev_10518.result | 2 +
mysql-test/suite/galera/r/mdev_9290.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#110.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#198.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#201.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#216.result | 11 +
mysql-test/suite/galera/r/mysql-wsrep#237.result | 4 +-
mysql-test/suite/galera/r/mysql-wsrep#247.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#31.result | 2 +
mysql-test/suite/galera/r/mysql-wsrep#33.result | 6 +
mysql-test/suite/galera/r/mysql-wsrep#332.result | 141 +
mysql-test/suite/galera/r/mysql-wsrep#90.result | 2 +
mysql-test/suite/galera/r/partition.result | 32 +-
mysql-test/suite/galera/r/pxc-421.result | 2 +
mysql-test/suite/galera/r/query_cache.result | 49 +-
mysql-test/suite/galera/r/rename.result | 2 +
mysql-test/suite/galera/r/rpl_row_annotate.result | 8 +-
mysql-test/suite/galera/r/sql_log_bin.result | 2 +
mysql-test/suite/galera/r/unique_key.result | 2 +
mysql-test/suite/galera/r/versioning_trx_id.result | 54 +
mysql-test/suite/galera/r/view.result | 2 +
.../galera/r/wsrep_trx_fragment_size_sr.result | 15 +
mysql-test/suite/galera/suite.pm | 14 +-
mysql-test/suite/galera/t/GAL-419.test | 4 +-
mysql-test/suite/galera/t/GCF-1081.test | 72 +
mysql-test/suite/galera/t/GCF-939.test | 31 +
mysql-test/suite/galera/t/MW-284.test | 2 +
mysql-test/suite/galera/t/MW-286.test | 48 +-
mysql-test/suite/galera/t/MW-292.test | 50 +-
mysql-test/suite/galera/t/MW-328A.test | 41 +-
mysql-test/suite/galera/t/MW-328B.test | 1 +
mysql-test/suite/galera/t/MW-328C.test | 1 +
mysql-test/suite/galera/t/MW-329.test | 28 +-
mysql-test/suite/galera/t/MW-336.test | 9 +-
mysql-test/suite/galera/t/MW-360-master.opt | 2 +
mysql-test/suite/galera/t/MW-360.test | 100 +
mysql-test/suite/galera/t/MW-369.inc | 7 +-
mysql-test/suite/galera/t/MW-369.test | 100 +-
mysql-test/suite/galera/t/MW-388.test | 5 +-
mysql-test/suite/galera/t/MW-402.test | 56 +-
mysql-test/suite/galera/t/MW-416.test | 8 +-
mysql-test/suite/galera/t/MW-44-master.opt | 1 +
mysql-test/suite/galera/t/MW-44.test | 24 +-
mysql-test/suite/galera/t/MW-86-wait1.test | 13 +-
mysql-test/suite/galera/t/MW-86-wait8.test | 11 +-
mysql-test/suite/galera/t/galera#500.test | 6 +
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 | 2 +-
mysql-test/suite/galera/t/galera_as_master.test | 2 +
.../suite/galera/t/galera_as_master_gtid.cnf | 2 -
.../suite/galera/t/galera_as_master_gtid.test | 24 +-
.../t/galera_as_master_gtid_change_master.cnf | 2 -
.../t/galera_as_master_gtid_change_master.test | 2 +
mysql-test/suite/galera/t/galera_as_slave.test | 17 +-
.../suite/galera/t/galera_as_slave_autoinc.test | 18 +-
.../suite/galera/t/galera_as_slave_gtid.test | 21 +-
.../t/galera_as_slave_gtid_replicate_do_db.cnf | 17 +
.../t/galera_as_slave_gtid_replicate_do_db.test | 150 +
.../t/galera_as_slave_gtid_replicate_do_db_cc.test | 176 +
.../suite/galera/t/galera_as_slave_nonprim.test | 26 +-
.../suite/galera/t/galera_as_slave_preordered.test | 19 +-
.../t/galera_as_slave_replication_bundle.test | 13 +-
.../galera/t/galera_autoinc_sst_mariabackup.cnf | 11 +
.../galera/t/galera_autoinc_sst_mariabackup.test | 105 +
.../galera/t/galera_autoinc_sst_xtrabackup.cnf | 12 -
.../galera/t/galera_autoinc_sst_xtrabackup.test | 96 -
.../galera/t/galera_bf_abort_group_commit.cnf | 15 +
.../galera/t/galera_bf_abort_group_commit.test | 77 +
.../suite/galera/t/galera_bf_abort_shutdown.test | 33 +
.../suite/galera/t/galera_binlog_stmt_autoinc.test | 230 +
mysql-test/suite/galera/t/galera_commit_empty.test | 35 +
.../galera/t/galera_create_table_as_select.test | 145 +
mysql-test/suite/galera/t/galera_defaults.test | 38 +-
.../suite/galera/t/galera_drop_database.test | 47 +
mysql-test/suite/galera/t/galera_enum.test | 18 +-
.../galera/t/galera_forced_binlog_format.test | 5 +-
mysql-test/suite/galera/t/galera_ftwrl_drain.test | 4 +-
.../t/galera_gcache_recover_full_gcache.test | 12 +-
mysql-test/suite/galera/t/galera_gcs_fragment.test | 4 +-
mysql-test/suite/galera/t/galera_gtid-master.opt | 2 +-
mysql-test/suite/galera/t/galera_gtid_slave.test | 33 +-
.../galera/t/galera_gtid_slave_sst_rsync.test | 110 +-
.../galera/t/galera_ist_innodb_flush_logs.cnf | 3 +-
.../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 | 2 +
mysql-test/suite/galera/t/galera_ist_progress.test | 4 +-
.../suite/galera/t/galera_ist_restart_joiner.test | 4 +-
.../suite/galera/t/galera_ist_xtrabackup-v2.cnf | 12 -
.../suite/galera/t/galera_ist_xtrabackup-v2.test | 10 -
mysql-test/suite/galera/t/galera_kill_applier.test | 1 -
mysql-test/suite/galera/t/galera_kill_ddl.test | 2 +
.../suite/galera/t/galera_kill_largechanges.test | 2 +
.../suite/galera/t/galera_kill_smallchanges.test | 2 +
mysql-test/suite/galera/t/galera_log_bin.test | 2 +
mysql-test/suite/galera/t/galera_many_rows.cnf | 10 +
mysql-test/suite/galera/t/galera_many_rows.test | 7 +
mysql-test/suite/galera/t/galera_migrate.cnf | 2 +
.../galera/t/galera_parallel_apply_lock_table.test | 6 +-
.../galera/t/galera_parallel_autoinc_largetrx.test | 11 +-
.../galera/t/galera_parallel_autoinc_manytrx.test | 2 +-
.../suite/galera/t/galera_parallel_simple.test | 2 +-
mysql-test/suite/galera/t/galera_pc_ignore_sb.test | 21 +-
mysql-test/suite/galera/t/galera_pc_recovery.test | 102 +
mysql-test/suite/galera/t/galera_split_brain.test | 6 +-
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 | 6 +-
.../galera/t/galera_sst_mariabackup_data_dir.cnf | 17 +
.../galera/t/galera_sst_mariabackup_data_dir.test | 23 +
.../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 | 16 +
.../t/galera_sst_mariabackup_table_options.test | 229 +
mysql-test/suite/galera/t/galera_sst_mysqldump.cnf | 4 +-
.../suite/galera/t/galera_sst_mysqldump.test | 2 -
.../galera/t/galera_sst_mysqldump_with_key.cnf | 4 +
mysql-test/suite/galera/t/galera_sst_rsync2.cnf | 15 +
mysql-test/suite/galera/t/galera_sst_rsync2.test | 12 +
.../galera/t/galera_sst_xtrabackup-v2-options.cnf | 25 -
.../galera/t/galera_sst_xtrabackup-v2-options.test | 13 -
.../suite/galera/t/galera_sst_xtrabackup-v2.cnf | 15 -
.../suite/galera/t/galera_sst_xtrabackup-v2.test | 20 -
.../galera_sst_xtrabackup-v2_encrypt_with_key.cnf | 12 -
.../galera_sst_xtrabackup-v2_encrypt_with_key.test | 14 -
.../suite/galera/t/galera_suspend_slave.test | 3 +
.../suite/galera/t/galera_toi_ddl_error.test | 5 +
.../suite/galera/t/galera_toi_ddl_locking.test | 54 +-
mysql-test/suite/galera/t/galera_toi_truncate.test | 16 +-
.../suite/galera/t/galera_transaction_replay.test | 201 +-
.../suite/galera/t/galera_unicode_identifiers.test | 12 +-
.../suite/galera/t/galera_var_cluster_address.test | 11 +-
.../suite/galera/t/galera_var_dirty_reads.test | 12 +-
.../galera/t/galera_var_ignore_apply_errors.test | 235 +
mysql-test/suite/galera/t/galera_var_log_bin.cnf | 5 +
.../suite/galera/t/galera_var_node_address.test | 8 +-
.../suite/galera/t/galera_var_reject_queries.test | 7 +-
.../galera/t/galera_var_retry_autocommit.test | 24 +-
.../suite/galera/t/galera_var_slave_threads.cnf | 7 +
.../suite/galera/t/galera_var_slave_threads.test | 141 +-
.../galera/t/galera_vote_drop_temporary-master.opt | 1 +
mysql-test/suite/galera/t/galera_wan.test | 14 +-
.../suite/galera/t/galera_wsrep_new_cluster.test | 1 -
.../suite/galera/t/mysql-wsrep#198-master.opt | 1 +
mysql-test/suite/galera/t/mysql-wsrep#237.test | 4 +-
mysql-test/suite/galera/t/mysql-wsrep#332.test | 113 +
mysql-test/suite/galera/t/partition.test | 30 +-
mysql-test/suite/galera/t/query_cache.test | 123 +-
mysql-test/suite/galera/t/rpl_row_annotate.test | 5 +-
mysql-test/suite/galera/t/versioning_trx_id.cnf | 1 +
mysql-test/suite/galera/t/versioning_trx_id.test | 28 +
.../suite/galera/t/wsrep_trx_fragment_size_sr.test | 22 +
mysql-test/suite/galera_3nodes/disabled.def | 1 -
mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf | 34 +-
mysql-test/suite/galera_3nodes/galera_3nodes.cnf | 20 +-
.../suite/galera_3nodes/include/galera_resume.inc | 9 +
.../suite/galera_3nodes/include/galera_suspend.inc | 14 -
.../suite/galera_3nodes/include/have_ipv6.inc | 15 -
.../galera_3nodes/include/have_mariabackup.inc | 4 +
mysql-test/suite/galera_3nodes/r/GAL-501.result | 6 +
.../r/galera_certification_ccc.result | 2 +
.../r/galera_certification_double_failure.result | 5 +-
.../r/galera_evs_suspect_timeout.result | 9 +
.../suite/galera_3nodes/r/galera_garbd.result | 14 +
.../r/galera_innobackupex_backup.result | 11 -
.../galera_3nodes/r/galera_ipv6_mariabackup.result | 24 +
.../galera_3nodes/r/galera_ipv6_mysqldump.result | 24 +-
.../suite/galera_3nodes/r/galera_ipv6_rsync.result | 5 +
.../r/galera_ipv6_xtrabackup-v2.result | 18 -
.../r/galera_ist_gcache_rollover.result | 3 +
.../r/galera_parallel_apply_3nodes.result | 4 +-
.../galera_3nodes/r/galera_pc_bootstrap.result | 13 +
.../suite/galera_3nodes/r/galera_pc_weight.result | 55 +-
.../r/galera_safe_to_bootstrap.result | 33 +
.../galera_3nodes/r/galera_var_dirty_reads2.result | 7 +
.../galera_3nodes/r/galera_wsrep_schema.result | 82 +
mysql-test/suite/galera_3nodes/suite.pm | 48 +-
mysql-test/suite/galera_3nodes/t/GAL-501.opt | 1 +
mysql-test/suite/galera_3nodes/t/GAL-501.test | 8 +-
.../t/galera_certification_double_failure.test | 2 +
.../t/galera_evs_suspect_timeout.test | 8 +-
mysql-test/suite/galera_3nodes/t/galera_garbd.test | 26 +-
.../galera_3nodes/t/galera_innobackupex_backup.cnf | 4 +
.../t/galera_innobackupex_backup.test | 58 -
.../galera_3nodes/t/galera_ipv6_mariabackup.cnf | 34 +
.../galera_3nodes/t/galera_ipv6_mariabackup.opt | 1 +
.../galera_3nodes/t/galera_ipv6_mariabackup.test | 68 +
.../galera_3nodes/t/galera_ipv6_mysqldump.cnf | 10 +-
.../galera_3nodes/t/galera_ipv6_mysqldump.opt | 1 +
.../galera_3nodes/t/galera_ipv6_mysqldump.test | 48 +-
.../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_xtrabackup-v2.cnf | 26 -
.../galera_3nodes/t/galera_ipv6_xtrabackup-v2.test | 62 -
.../galera_3nodes/t/galera_ist_gcache_rollover.cnf | 6 +-
.../t/galera_ist_gcache_rollover.test | 3 +-
.../t/galera_parallel_apply_3nodes.test | 2 +-
.../suite/galera_3nodes/t/galera_pc_weight.cnf | 8 +-
.../suite/galera_3nodes/t/galera_pc_weight.test | 64 +-
.../galera_3nodes/t/galera_safe_to_bootstrap.test | 41 +-
.../t/galera_slave_options_ignore.test | 1 +
.../galera_3nodes/t/galera_var_dirty_reads2.test | 3 +-
.../suite/galera_3nodes/t/galera_wsrep_schema.test | 83 +
mysql-test/suite/galera_3nodes_sr/disabled.def | 7 +
.../suite/galera_3nodes_sr/galera_3nodes.cnf | 1 +
mysql-test/suite/galera_3nodes_sr/my.cnf | 1 +
mysql-test/suite/galera_3nodes_sr/r/GCF-336.result | 26 +
mysql-test/suite/galera_3nodes_sr/r/GCF-582.result | 23 +
mysql-test/suite/galera_3nodes_sr/r/GCF-606.result | 38 +
mysql-test/suite/galera_3nodes_sr/r/GCF-609.result | 20 +
.../suite/galera_3nodes_sr/r/GCF-810A.result | 256 +
.../suite/galera_3nodes_sr/r/GCF-810B.result | 100 +
.../suite/galera_3nodes_sr/r/GCF-810C.result | 177 +
mysql-test/suite/galera_3nodes_sr/r/GCF-817.result | 54 +
mysql-test/suite/galera_3nodes_sr/r/GCF-832.result | 26 +
.../r/galera_sr_isolate_master.result | 80 +
.../galera_3nodes_sr/r/galera_sr_join_slave.result | 39 +
.../r/galera_sr_kill_master.result | 33 +
.../r/galera_sr_kill_slave_after_apply.result | 53 +
...alera_sr_kill_slave_after_apply_rollback.result | 58 +
...lera_sr_kill_slave_after_apply_rollback2.result | 31 +
.../r/galera_sr_kill_slave_before_apply.result | 44 +
.../r/galera_sr_threeway_split.result | 117 +
mysql-test/suite/galera_3nodes_sr/t/GCF-336.test | 47 +
mysql-test/suite/galera_3nodes_sr/t/GCF-582.test | 39 +
mysql-test/suite/galera_3nodes_sr/t/GCF-606.test | 80 +
mysql-test/suite/galera_3nodes_sr/t/GCF-609.test | 30 +
mysql-test/suite/galera_3nodes_sr/t/GCF-810A.test | 137 +
mysql-test/suite/galera_3nodes_sr/t/GCF-810B.test | 49 +
mysql-test/suite/galera_3nodes_sr/t/GCF-810C.test | 70 +
mysql-test/suite/galera_3nodes_sr/t/GCF-817.test | 109 +
mysql-test/suite/galera_3nodes_sr/t/GCF-832.test | 43 +
.../t/galera_sr_isolate_master.test | 127 +
.../galera_3nodes_sr/t/galera_sr_join_slave.test | 59 +
.../galera_3nodes_sr/t/galera_sr_kill_master.test | 58 +
.../t/galera_sr_kill_slave_after_apply.test | 81 +
.../galera_sr_kill_slave_after_apply_rollback.test | 80 +
...galera_sr_kill_slave_after_apply_rollback2.test | 56 +
.../t/galera_sr_kill_slave_before_apply.test | 73 +
.../t/galera_sr_threeway_split.cnf | 5 +
.../t/galera_sr_threeway_split.test | 177 +
mysql-test/suite/galera_sr/disabled.def | 3 +
mysql-test/suite/galera_sr/galera_2nodes.cnf | 1 +
mysql-test/suite/galera_sr/my.cnf | 1 +
mysql-test/suite/galera_sr/r/GCF-1008.result | 70 +
mysql-test/suite/galera_sr/r/GCF-1018.result | 24 +
mysql-test/suite/galera_sr/r/GCF-1018B.result | 12 +
mysql-test/suite/galera_sr/r/GCF-1043A.result | 21 +
mysql-test/suite/galera_sr/r/GCF-1043B.result | 21 +
mysql-test/suite/galera_sr/r/GCF-1051.result | 46 +
mysql-test/suite/galera_sr/r/GCF-1060.result | 21 +
mysql-test/suite/galera_sr/r/GCF-437.result | 12 +
mysql-test/suite/galera_sr/r/GCF-561.result | 50 +
mysql-test/suite/galera_sr/r/GCF-571.result | 67 +
mysql-test/suite/galera_sr/r/GCF-572.result | 37 +
mysql-test/suite/galera_sr/r/GCF-574.result | 11 +
mysql-test/suite/galera_sr/r/GCF-580.result | 13 +
mysql-test/suite/galera_sr/r/GCF-585.result | 28 +
mysql-test/suite/galera_sr/r/GCF-597.result | 21 +
mysql-test/suite/galera_sr/r/GCF-620.result | 18 +
mysql-test/suite/galera_sr/r/GCF-623.result | 29 +
mysql-test/suite/galera_sr/r/GCF-627.result | 26 +
mysql-test/suite/galera_sr/r/GCF-845.result | 21 +
mysql-test/suite/galera_sr/r/GCF-851.result | 30 +
mysql-test/suite/galera_sr/r/GCF-867.result | 4 +
mysql-test/suite/galera_sr/r/GCF-889.result | 25 +
mysql-test/suite/galera_sr/r/GCF-900.result | 21 +
.../suite/galera_sr/r/galera-features#56.result | 32 +
.../suite/galera_sr/r/galera_sr_bf_abort.result | 555 +
mysql-test/suite/galera_sr/r/galera_sr_blob.result | 23 +
.../suite/galera_sr/r/galera_sr_cc_master.result | 65 +
.../suite/galera_sr/r/galera_sr_cc_slave.result | 59 +
.../suite/galera_sr/r/galera_sr_concurrent.result | 36 +
.../suite/galera_sr/r/galera_sr_conflict.result | 21 +
.../r/galera_sr_conflict_on_commit.result | 31 +
.../r/galera_sr_conflict_on_commit2.result | 28 +
.../galera_sr_conflict_with_rollback_master.result | 29 +
.../suite/galera_sr/r/galera_sr_ddl_master.result | 48 +
.../suite/galera_sr/r/galera_sr_ddl_schema.result | 23 +
.../suite/galera_sr/r/galera_sr_ddl_slave.result | 50 +
.../galera_sr/r/galera_sr_ddl_unrelated.result | 42 +
.../galera_sr/r/galera_sr_dupkey_error.result | 46 +
.../suite/galera_sr/r/galera_sr_fk_conflict.result | 39 +
mysql-test/suite/galera_sr/r/galera_sr_gtid.result | 57 +
.../galera_sr/r/galera_sr_insert_select.result | 18 +
.../r/galera_sr_kill_all_nobootstrap.result | 29 +
.../r/galera_sr_kill_all_norecovery.result | 30 +
.../r/galera_sr_kill_all_pcrecovery.result | 30 +
.../galera_sr/r/galera_sr_kill_connection.result | 32 +
.../suite/galera_sr/r/galera_sr_kill_query.result | 31 +
.../suite/galera_sr/r/galera_sr_kill_slave.result | 53 +
.../galera_sr/r/galera_sr_large_fragment.result | 33 +
.../suite/galera_sr/r/galera_sr_load_data.result | 13 +
.../r/galera_sr_load_data_splitting.result | 9 +
.../suite/galera_sr/r/galera_sr_log_bin.result | 124 +
.../galera_sr/r/galera_sr_many_fragments.result | 33 +
.../suite/galera_sr/r/galera_sr_myisam.result | 16 +
.../galera_sr/r/galera_sr_mysqldump_sst.result | 58 +
.../galera_sr/r/galera_sr_parallel_apply.result | 37 +
.../suite/galera_sr/r/galera_sr_rollback.result | 42 +
.../galera_sr/r/galera_sr_rollback_retry.result | 33 +
.../r/galera_sr_rollback_savepoint.result | 42 +
.../r/galera_sr_rollback_statement.result | 22 +
mysql-test/suite/galera_sr/r/galera_sr_sbr.result | 16 +
.../galera_sr/r/galera_sr_shutdown_master.result | 31 +
.../galera_sr/r/galera_sr_shutdown_slave.result | 43 +
.../galera_sr/r/galera_sr_small_gcache.result | 15 +
.../galera_sr/r/galera_sr_table_contents.result | 198 +
.../r/galera_sr_transaction_replay.result | 121 +
.../galera_sr/r/galera_sr_unit_statements.result | 54 +
.../galera_sr/r/galera_sr_v1_row_events.result | 20 +
.../suite/galera_sr/r/galera_sr_ws_size.result | 36 +
.../suite/galera_sr/r/galera_sr_ws_size2.result | 34 +
.../r/galera_var_ignore_apply_errors_sr.result | 29 +
.../suite/galera_sr/r/mysql-wsrep#215.result | 137 +
.../galera_sr/r/mysql-wsrep-features#136.result | 65 +
.../galera_sr/r/mysql-wsrep-features#138.result | 24 +
.../galera_sr/r/mysql-wsrep-features#14.result | 12 +
.../galera_sr/r/mysql-wsrep-features#148.result | 42 +
.../galera_sr/r/mysql-wsrep-features#15.result | 11 +
.../galera_sr/r/mysql-wsrep-features#165.result | 752 +
.../galera_sr/r/mysql-wsrep-features#22.result | 35 +
.../galera_sr/r/mysql-wsrep-features#27.result | 23 +
.../galera_sr/r/mysql-wsrep-features#29.result | 14 +
.../galera_sr/r/mysql-wsrep-features#32.result | 27 +
.../galera_sr/r/mysql-wsrep-features#35.result | 41 +
.../galera_sr/r/mysql-wsrep-features#8.result | 39 +
.../galera_sr/r/mysql-wsrep-features#9.result | 20 +
.../galera_sr/r/mysql-wsrep-features#93.result | 18 +
.../galera_sr/r/mysql-wsrep-features#96.result | 33 +
mysql-test/suite/galera_sr/t/GCF-1008.inc | 36 +
mysql-test/suite/galera_sr/t/GCF-1008.test | 18 +
mysql-test/suite/galera_sr/t/GCF-1018.test | 38 +
mysql-test/suite/galera_sr/t/GCF-1018B.test | 40 +
mysql-test/suite/galera_sr/t/GCF-1043A.test | 13 +
mysql-test/suite/galera_sr/t/GCF-1043B.test | 13 +
mysql-test/suite/galera_sr/t/GCF-1051.test | 51 +
mysql-test/suite/galera_sr/t/GCF-1060.test | 9 +
mysql-test/suite/galera_sr/t/GCF-437.test | 21 +
mysql-test/suite/galera_sr/t/GCF-561.test | 65 +
mysql-test/suite/galera_sr/t/GCF-571.test | 54 +
mysql-test/suite/galera_sr/t/GCF-572.test | 54 +
mysql-test/suite/galera_sr/t/GCF-574.test | 27 +
mysql-test/suite/galera_sr/t/GCF-580.test | 27 +
mysql-test/suite/galera_sr/t/GCF-585.test | 44 +
mysql-test/suite/galera_sr/t/GCF-597.test | 29 +
mysql-test/suite/galera_sr/t/GCF-620.test | 22 +
mysql-test/suite/galera_sr/t/GCF-623.test | 31 +
mysql-test/suite/galera_sr/t/GCF-627.test | 30 +
mysql-test/suite/galera_sr/t/GCF-845.test | 30 +
mysql-test/suite/galera_sr/t/GCF-851.test | 24 +
mysql-test/suite/galera_sr/t/GCF-867.test | 42 +
mysql-test/suite/galera_sr/t/GCF-889.test | 29 +
mysql-test/suite/galera_sr/t/GCF-900.test | 28 +
.../suite/galera_sr/t/galera-features#56.test | 55 +
.../suite/galera_sr/t/galera_sr_bf_abort.inc | 145 +
.../suite/galera_sr/t/galera_sr_bf_abort.test | 50 +
mysql-test/suite/galera_sr/t/galera_sr_blob.test | 38 +
.../suite/galera_sr/t/galera_sr_cc_master.test | 98 +
.../suite/galera_sr/t/galera_sr_cc_slave.test | 97 +
.../suite/galera_sr/t/galera_sr_concurrent.test | 45 +
.../suite/galera_sr/t/galera_sr_conflict.test | 45 +
.../galera_sr/t/galera_sr_conflict_on_commit.test | 45 +
.../galera_sr/t/galera_sr_conflict_on_commit2.test | 46 +
.../t/galera_sr_conflict_with_rollback_master.test | 44 +
.../suite/galera_sr/t/galera_sr_ddl_master.test | 63 +
.../suite/galera_sr/t/galera_sr_ddl_schema.test | 43 +
.../suite/galera_sr/t/galera_sr_ddl_slave.test | 65 +
.../suite/galera_sr/t/galera_sr_ddl_unrelated.test | 53 +
.../suite/galera_sr/t/galera_sr_dupkey_error.test | 59 +
.../suite/galera_sr/t/galera_sr_fk_conflict.test | 62 +
.../suite/galera_sr/t/galera_sr_gtid-master.opt | 1 +
mysql-test/suite/galera_sr/t/galera_sr_gtid.test | 46 +
.../suite/galera_sr/t/galera_sr_insert_select.test | 33 +
.../t/galera_sr_kill_all_nobootstrap.test | 52 +
.../galera_sr/t/galera_sr_kill_all_norecovery.cnf | 4 +
.../galera_sr/t/galera_sr_kill_all_norecovery.test | 53 +
.../galera_sr/t/galera_sr_kill_all_pcrecovery.test | 54 +
.../galera_sr/t/galera_sr_kill_connection.test | 59 +
.../suite/galera_sr/t/galera_sr_kill_query.test | 48 +
.../suite/galera_sr/t/galera_sr_kill_slave.cnf | 4 +
.../suite/galera_sr/t/galera_sr_kill_slave.test | 80 +
.../t/galera_sr_large_fragment-master.opt | 1 +
.../galera_sr/t/galera_sr_large_fragment.test | 58 +
.../suite/galera_sr/t/galera_sr_load_data.test | 39 +
.../galera_sr/t/galera_sr_load_data_splitting.test | 50 +
.../suite/galera_sr/t/galera_sr_log_bin-master.opt | 1 +
.../suite/galera_sr/t/galera_sr_log_bin.test | 70 +
.../galera_sr/t/galera_sr_many_fragments.test | 53 +
mysql-test/suite/galera_sr/t/galera_sr_myisam.test | 29 +
.../suite/galera_sr/t/galera_sr_mysqldump_sst.cnf | 11 +
.../suite/galera_sr/t/galera_sr_mysqldump_sst.test | 79 +
.../galera_sr/t/galera_sr_parallel_apply.test | 59 +
.../suite/galera_sr/t/galera_sr_rollback.test | 76 +
.../galera_sr/t/galera_sr_rollback_retry.test | 55 +
.../galera_sr/t/galera_sr_rollback_savepoint.test | 51 +
.../galera_sr/t/galera_sr_rollback_statement.test | 61 +
mysql-test/suite/galera_sr/t/galera_sr_sbr.test | 31 +
.../galera_sr/t/galera_sr_shutdown_master.test | 53 +
.../galera_sr/t/galera_sr_shutdown_slave.test | 63 +
.../suite/galera_sr/t/galera_sr_small_gcache.cnf | 6 +
.../suite/galera_sr/t/galera_sr_small_gcache.test | 21 +
.../galera_sr/t/galera_sr_table_contents.test | 49 +
.../galera_sr/t/galera_sr_transaction_replay.test | 260 +
.../galera_sr/t/galera_sr_unit_statements.test | 54 +
.../galera_sr/t/galera_sr_v1_row_events-master.opt | 1 +
.../suite/galera_sr/t/galera_sr_v1_row_events.test | 27 +
.../suite/galera_sr/t/galera_sr_ws_size.test | 70 +
.../suite/galera_sr/t/galera_sr_ws_size2.test | 62 +
.../t/galera_var_ignore_apply_errors_sr.test | 38 +
mysql-test/suite/galera_sr/t/mysql-wsrep#215.test | 175 +
.../t/mysql-wsrep-features#136-master.opt | 1 +
.../galera_sr/t/mysql-wsrep-features#136.test | 41 +
.../galera_sr/t/mysql-wsrep-features#138.test | 25 +
.../suite/galera_sr/t/mysql-wsrep-features#14.test | 21 +
.../galera_sr/t/mysql-wsrep-features#148.test | 60 +
.../suite/galera_sr/t/mysql-wsrep-features#15.test | 17 +
.../suite/galera_sr/t/mysql-wsrep-features#165.inc | 104 +
.../galera_sr/t/mysql-wsrep-features#165.test | 41 +
.../suite/galera_sr/t/mysql-wsrep-features#22.test | 47 +
.../suite/galera_sr/t/mysql-wsrep-features#27.test | 29 +
.../suite/galera_sr/t/mysql-wsrep-features#29.test | 23 +
.../galera_sr/t/mysql-wsrep-features#32-master.opt | 1 +
.../suite/galera_sr/t/mysql-wsrep-features#32.test | 44 +
.../suite/galera_sr/t/mysql-wsrep-features#35.test | 48 +
.../suite/galera_sr/t/mysql-wsrep-features#8.test | 63 +
.../suite/galera_sr/t/mysql-wsrep-features#9.test | 44 +
.../suite/galera_sr/t/mysql-wsrep-features#93.test | 29 +
.../suite/galera_sr/t/mysql-wsrep-features#96.test | 45 +
mysql-test/suite/gcol/r/gcol_bug20746926.result | 8 +-
mysql-test/suite/gcol/r/gcol_bugfixes.result | 2 +
mysql-test/suite/gcol/r/gcol_keys_innodb.result | 8 +-
mysql-test/suite/gcol/r/gcol_keys_myisam.result | 6 +
.../suite/gcol/r/gcol_partition_innodb.result | 17 +
mysql-test/suite/gcol/r/gcol_select_innodb.result | 7 +
mysql-test/suite/gcol/r/gcol_select_myisam.result | 11 +
mysql-test/suite/gcol/r/gcol_view_innodb.result | 1 +
mysql-test/suite/gcol/r/gcol_view_myisam.result | 1 +
.../suite/gcol/r/innodb_virtual_fk_restart.result | 9 +
.../suite/gcol/r/innodb_virtual_index.result | 54 +-
.../suite/gcol/r/innodb_virtual_rebuild.result | 16 +-
mysql-test/suite/gcol/t/gcol_partition_innodb.test | 20 +
.../suite/gcol/t/innodb_virtual_fk_restart.test | 9 +
mysql-test/suite/gcol/t/innodb_virtual_index.test | 50 +
.../suite/gcol/t/innodb_virtual_rebuild.test | 5 +-
mysql-test/suite/handler/aria.result | 4 +-
mysql-test/suite/handler/heap.result | 5 +-
mysql-test/suite/handler/innodb.result | 4 +-
mysql-test/suite/handler/interface.result | 6 +-
mysql-test/suite/handler/interface.test | 6 +-
mysql-test/suite/handler/myisam.result | 4 +-
mysql-test/suite/heap/heap_btree.result | 4 +
mysql-test/suite/heap/heap_btree.test | 9 +
mysql-test/suite/innodb/include/alter_instant.inc | 33 -
mysql-test/suite/innodb/include/alter_nocopy.inc | 33 -
.../suite/innodb/include/alter_nocopy_fail.inc | 51 -
mysql-test/suite/innodb/include/alter_not_null.inc | 94 -
mysql-test/suite/innodb/include/crc32.pl | 33 +
.../innodb/include/innodb_binlog.combinations | 3 +
mysql-test/suite/innodb/include/innodb_binlog.inc | 3 +
.../suite/innodb/r/alter_algorithm,COPY.rdiff | 92 -
.../suite/innodb/r/alter_algorithm,INPLACE.rdiff | 128 +-
.../suite/innodb/r/alter_algorithm,INSTANT.rdiff | 124 +-
.../suite/innodb/r/alter_algorithm,NOCOPY.rdiff | 145 +
mysql-test/suite/innodb/r/alter_algorithm.result | 103 +-
.../suite/innodb/r/alter_candidate_key.result | 114 +
.../suite/innodb/r/alter_inplace_perfschema.result | 21 +
mysql-test/suite/innodb/r/alter_instant,COPY.rdiff | 61 -
.../suite/innodb/r/alter_instant,INPLACE.rdiff | 11 -
.../suite/innodb/r/alter_instant,INSTANT.rdiff | 11 -
mysql-test/suite/innodb/r/alter_instant.result | 50 -
mysql-test/suite/innodb/r/alter_kill.result | 2 +
.../suite/innodb/r/alter_varchar_change.result | 459 +
mysql-test/suite/innodb/r/analyze_table.result | 1 +
.../innodb/r/auto_increment_dup,skip-log-bin.rdiff | 51 +
.../suite/innodb/r/auto_increment_dup.result | 22 +-
mysql-test/suite/innodb/r/data_types.result | 23 +-
.../r/default_row_format_create,redundant.rdiff | 11 +
.../innodb/r/default_row_format_create.result | 22 +-
mysql-test/suite/innodb/r/foreign-keys.result | 73 +
mysql-test/suite/innodb/r/foreign_key.result | 76 +-
mysql-test/suite/innodb/r/innochecksum.result | 5 -
.../suite/innodb/r/innodb-alter-debug.result | 41 +-
.../suite/innodb/r/innodb-alter-table.result | 1 +
mysql-test/suite/innodb/r/innodb-alter.result | 173 +-
mysql-test/suite/innodb/r/innodb-index,debug.rdiff | 10 +
.../suite/innodb/r/innodb-index-online.result | 7 +-
mysql-test/suite/innodb/r/innodb-index.result | 48 +
mysql-test/suite/innodb/r/innodb-lock.result | 47 +-
.../suite/innodb/r/innodb-online-alter-gis.result | 2 +-
.../innodb/r/innodb-page_compression_bzip2.result | 8 +-
.../innodb/r/innodb-page_compression_lz4.result | 7 +-
.../innodb/r/innodb-page_compression_lzma.result | 8 +-
.../innodb/r/innodb-page_compression_lzo.result | 8 +-
.../innodb/r/innodb-page_compression_tables.result | 8 +-
.../innodb/r/innodb-page_compression_zip.result | 7 +-
.../suite/innodb/r/innodb-table-online.result | 12 +-
.../suite/innodb/r/innodb-update-insert.result | 4 +-
.../suite/innodb/r/innodb-virtual-columns.result | 13 +
.../suite/innodb/r/innodb-wl5522-debug.result | 6 -
mysql-test/suite/innodb/r/innodb.result | 3 +-
mysql-test/suite/innodb/r/innodb_28867993.result | 9 +
.../suite/innodb/r/innodb_bug14676111.result | 6 +
mysql-test/suite/innodb/r/innodb_bug30423.result | 11 +
mysql-test/suite/innodb/r/innodb_bug53046.result | 1 +
mysql-test/suite/innodb/r/innodb_bug57252.result | 1 +
.../innodb/r/innodb_max_recordsize_32k.result | 6 +
.../innodb/r/innodb_max_recordsize_64k.result | 6 +
mysql-test/suite/innodb/r/innodb_mysql.result | 17 +-
.../innodb/r/innodb_skip_innodb_is_tables.result | 1 -
mysql-test/suite/innodb/r/innodb_stats.result | 10 +
.../suite/innodb/r/innodb_stats_drop_locked.result | 1 +
.../suite/innodb/r/innodb_stats_fetch.result | 4 +
.../innodb/r/innodb_stats_fetch_corrupted.result | 4 +
.../innodb/r/innodb_stats_fetch_nonexistent.result | 4 +
.../suite/innodb/r/innodb_stats_persistent.result | 3 +-
.../innodb/r/innodb_stats_persistent_debug.result | 1 +
.../suite/innodb/r/innodb_zip_innochecksum.result | 91 -
.../suite/innodb/r/innodb_zip_innochecksum2.result | 160 -
.../suite/innodb/r/innodb_zip_innochecksum3.result | 227 -
mysql-test/suite/innodb/r/instant_alter.result | 803 +-
.../suite/innodb/r/instant_alter_bugs.result | 130 +
.../suite/innodb/r/instant_alter_crash.result | 78 +-
.../suite/innodb/r/instant_alter_debug.result | 66 +-
.../suite/innodb/r/instant_alter_limit.result | 35 +
.../suite/innodb/r/instant_alter_null.result | 56 +
.../innodb/r/instant_alter_purge,release.rdiff | 18 +
.../suite/innodb/r/instant_alter_purge.result | 46 +
.../suite/innodb/r/instant_alter_rollback.result | 108 +-
mysql-test/suite/innodb/r/instant_drop.result | 203 +
.../suite/innodb/r/instant_varchar_enlarge.result | 9 +
mysql-test/suite/innodb/r/log_file_size.result | 2 +-
mysql-test/suite/innodb/r/monitor.result | 1 -
mysql-test/suite/innodb/r/purge_secondary.result | 1 +
.../suite/innodb/r/table_flags,32k,debug.rdiff | 132 +
.../suite/innodb/r/table_flags,32k,release.rdiff | 20 +
mysql-test/suite/innodb/r/table_flags,32k.rdiff | 20 -
.../suite/innodb/r/table_flags,64k,debug.rdiff | 132 +
.../suite/innodb/r/table_flags,64k,release.rdiff | 20 +
mysql-test/suite/innodb/r/table_flags,64k.rdiff | 20 -
mysql-test/suite/innodb/r/table_flags,debug.rdiff | 122 +
mysql-test/suite/innodb/r/table_flags.result | 5 +
mysql-test/suite/innodb/r/truncate.result | 33 +
.../suite/innodb/r/undo_truncate_recover.result | 1 -
mysql-test/suite/innodb/t/alter_algorithm.test | 129 +-
mysql-test/suite/innodb/t/alter_candidate_key.test | 72 +
.../suite/innodb/t/alter_inplace_perfschema.opt | 2 +
.../suite/innodb/t/alter_inplace_perfschema.test | 42 +
mysql-test/suite/innodb/t/alter_instant.test | 45 -
mysql-test/suite/innodb/t/alter_kill.test | 9 +-
mysql-test/suite/innodb/t/alter_not_null.test | 94 +-
.../suite/innodb/t/alter_varchar_change.test | 336 +
mysql-test/suite/innodb/t/auto_increment_dup.test | 40 +-
mysql-test/suite/innodb/t/data_types.test | 22 +-
.../suite/innodb/t/default_row_format_create.test | 20 +-
mysql-test/suite/innodb/t/foreign-keys.test | 87 +
mysql-test/suite/innodb/t/foreign_key.test | 112 +-
mysql-test/suite/innodb/t/innochecksum.test | 32 -
mysql-test/suite/innodb/t/innodb-alter-debug.test | 57 +-
mysql-test/suite/innodb/t/innodb-alter.test | 123 +-
mysql-test/suite/innodb/t/innodb-index.test | 59 +-
mysql-test/suite/innodb/t/innodb-lock.test | 74 +-
.../innodb/t/innodb-page_compression_bzip2.test | 15 +-
.../innodb/t/innodb-page_compression_lz4.test | 14 +-
.../innodb/t/innodb-page_compression_lzma.test | 15 +-
.../innodb/t/innodb-page_compression_lzo.test | 15 +-
.../innodb/t/innodb-page_compression_tables.test | 8 +-
.../innodb/t/innodb-page_compression_zip.test | 14 +-
mysql-test/suite/innodb/t/innodb-table-online.test | 4 -
.../suite/innodb/t/innodb-virtual-columns.test | 11 +
mysql-test/suite/innodb/t/innodb-wl5522-debug.test | 14 -
mysql-test/suite/innodb/t/innodb_28867993.test | 12 +
.../t/innodb_default_row_format.combinations | 2 +
.../suite/innodb/t/innodb_zip_innochecksum.opt | 2 -
.../suite/innodb/t/innodb_zip_innochecksum.test | 239 -
.../suite/innodb/t/innodb_zip_innochecksum2.opt | 3 -
.../suite/innodb/t/innodb_zip_innochecksum2.test | 118 -
.../suite/innodb/t/innodb_zip_innochecksum3.opt | 1 -
.../suite/innodb/t/innodb_zip_innochecksum3.test | 406 -
mysql-test/suite/innodb/t/instant_alter.test | 290 +
mysql-test/suite/innodb/t/instant_alter_bugs.test | 138 +
mysql-test/suite/innodb/t/instant_alter_crash.test | 78 +-
mysql-test/suite/innodb/t/instant_alter_debug.test | 71 +-
mysql-test/suite/innodb/t/instant_alter_limit.test | 42 +
mysql-test/suite/innodb/t/instant_alter_null.test | 57 +
mysql-test/suite/innodb/t/instant_alter_purge.test | 75 +
.../suite/innodb/t/instant_alter_rollback.test | 80 +-
mysql-test/suite/innodb/t/instant_drop.test | 108 +
.../suite/innodb/t/instant_varchar_enlarge.test | 8 +
mysql-test/suite/innodb/t/log_file_name_debug.test | 4 +-
mysql-test/suite/innodb/t/log_file_size.test | 2 +-
.../suite/innodb/t/purge_thread_shutdown.test | 4 +-
mysql-test/suite/innodb/t/recovery_shutdown.test | 6 +
mysql-test/suite/innodb/t/table_flags.test | 11 +-
mysql-test/suite/innodb/t/truncate.test | 35 +
.../suite/innodb/t/undo_truncate_recover.test | 4 -
.../suite/innodb_fts/r/crash_recovery.result | 1 +
mysql-test/suite/innodb_fts/r/create.result | 20 +-
.../suite/innodb_fts/r/innodb-fts-ddl.result | 11 +-
.../suite/innodb_fts/r/innodb-fts-fic.result | 2 +
.../suite/innodb_fts/r/innodb-fts-stopword.result | 4 +
.../suite/innodb_fts/r/innodb_fts_misc_1.result | 4 +
mysql-test/suite/innodb_fts/t/crash_recovery.test | 1 +
mysql-test/suite/innodb_fts/t/create.test | 16 +
mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test | 10 +
mysql-test/suite/innodb_gis/r/1.result | 4 +-
.../suite/innodb_gis/r/alter_spatial_index.result | 11 +-
.../suite/innodb_gis/r/create_spatial_index.result | 3 +
mysql-test/suite/innodb_gis/r/gis.result | 4 +-
.../suite/innodb_gis/r/innodb_gis_rtree.result | 1 +
mysql-test/suite/innodb_gis/r/rt_precise.result | 1 +
mysql-test/suite/innodb_gis/r/rtree.result | 2 +
.../innodb_gis/r/rtree_concurrent_srch.result | 4 +-
.../suite/innodb_gis/r/rtree_estimate.result | 1 +
.../suite/innodb_gis/t/alter_spatial_index.test | 3 +-
.../suite/innodb_gis/t/rtree_concurrent_srch.test | 2 +-
mysql-test/suite/innodb_zip/r/innodb-zip.result | 4 +
.../innodb_zip/r/prefix_index_liftedlimit.result | 2 +-
.../suite/innodb_zip/r/wl5522_debug_zip.result | 6 -
mysql-test/suite/innodb_zip/t/innochecksum.test | 4 +
.../innodb_zip/t/prefix_index_liftedlimit.test | 2 +-
.../suite/innodb_zip/t/wl5522_debug_zip.test | 14 -
.../large_tests/r/rpl_slave_net_timeout.result | 4 +
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 | 2 +-
mysql-test/suite/maria/maria-autozerofill.result | 1 +
.../suite/maria/maria-gis-rtree-dynamic.result | 1 +
.../suite/maria/maria-gis-rtree-trans.result | 1 +
mysql-test/suite/maria/maria-gis-rtree.result | 1 +
mysql-test/suite/maria/maria.result | 13 +-
mysql-test/suite/maria/maria.test | 10 +
mysql-test/suite/maria/maria3.result | 2 +
mysql-test/suite/maria/system_tables.result | 1 +
mysql-test/suite/maria/system_tables.test | 4 +-
.../suite/mariabackup/absolute_ibdata_paths.opt | 2 +-
mysql-test/suite/mariabackup/backup_grants.result | 5 +
mysql-test/suite/mariabackup/backup_grants.test | 30 +
.../mariabackup/drop_table_during_backup.result | 5 +
.../mariabackup/drop_table_during_backup.test | 9 +
.../mariabackup/encrypted_page_compressed.opt | 6 +
.../mariabackup/encrypted_page_compressed.result | 7 +
.../mariabackup/encrypted_page_compressed.test | 48 +
.../mariabackup/encrypted_page_corruption.opt | 6 +
.../mariabackup/encrypted_page_corruption.result | 8 +
.../mariabackup/encrypted_page_corruption.test | 70 +
mysql-test/suite/mariabackup/huge_lsn.opt | 4 +
.../incremental_ddl_before_backup.result | 32 +
.../mariabackup/incremental_ddl_before_backup.test | 50 +
mysql-test/suite/mariabackup/mdev-14447.result | 1 +
mysql-test/suite/mariabackup/mdev-14447.test | 14 +-
.../nolock_ddl_during_backup_end.result | 2 +
.../mariabackup/nolock_ddl_during_backup_end.test | 14 +
mysql-test/suite/mariabackup/partition_partial.opt | 1 +
.../suite/mariabackup/partition_partial.result | 31 +
.../suite/mariabackup/partition_partial.test | 44 +
.../suite/mariabackup/rename_during_backup.result | 9 +
.../suite/mariabackup/rename_during_backup.test | 7 +
mysql-test/suite/mariabackup/undo_space_id.opt | 1 +
.../mariabackup/unencrypted_page_compressed.result | 11 +
.../mariabackup/unencrypted_page_compressed.test | 50 +
.../suite/mariabackup/xb_aws_key_management.result | 5 -
.../parts/r/partition_alter1_1_2_innodb.result | 56 +
.../parts/r/partition_alter1_1_2_myisam.result | 16 +
.../suite/parts/r/partition_alter1_1_innodb.result | 32 +
.../suite/parts/r/partition_alter1_1_myisam.result | 16 +
.../suite/parts/r/partition_alter1_2_innodb.result | 80 +
.../suite/parts/r/partition_alter1_2_myisam.result | 32 +
.../parts/r/partition_alter2_1_1_innodb.result | 40 +
.../parts/r/partition_alter2_1_2_innodb.result | 40 +
.../suite/parts/r/partition_alter2_1_maria.result | 48 +
.../suite/parts/r/partition_alter2_1_myisam.result | 48 +
.../parts/r/partition_alter2_2_1_innodb.result | 40 +
.../parts/r/partition_alter2_2_2_innodb.result | 40 +
.../suite/parts/r/partition_alter2_2_maria.result | 48 +
.../suite/parts/r/partition_alter2_2_myisam.result | 48 +
.../suite/parts/r/partition_alter4_innodb.result | 216 +
.../suite/parts/r/partition_alter4_myisam.result | 216 +
.../suite/parts/r/partition_basic_innodb.result | 64 +
.../suite/parts/r/partition_basic_myisam.result | 32 +
.../parts/r/partition_basic_symlink_myisam.result | 39 +
.../suite/parts/r/partition_engine_innodb.result | 11 +
.../suite/parts/r/partition_engine_myisam.result | 11 +
.../suite/parts/r/partition_mgm_lc0_innodb.result | 1 +
.../suite/parts/r/partition_mgm_lc0_memory.result | 1 +
.../suite/parts/r/partition_mgm_lc0_myisam.result | 1 +
.../suite/parts/r/partition_mgm_lc1_innodb.result | 1 +
.../suite/parts/r/partition_mgm_lc1_memory.result | 1 +
.../suite/parts/r/partition_mgm_lc1_myisam.result | 1 +
.../suite/parts/r/partition_mgm_lc2_innodb.result | 1 +
.../suite/parts/r/partition_mgm_lc2_memory.result | 1 +
.../suite/parts/r/partition_mgm_lc2_myisam.result | 1 +
.../suite/parts/r/partition_repair_myisam.result | 3 +-
mysql-test/suite/parts/r/show_create.result | 8 +
mysql-test/suite/parts/r/update_and_cache.result | 7 +
mysql-test/suite/parts/t/show_create.test | 11 +
mysql-test/suite/parts/t/update_and_cache.test | 12 +
.../perfschema/r/dml_setup_instruments.result | 4 +-
.../suite/perfschema/r/event_aggregate.result | 412 +-
.../suite/perfschema/r/event_aggregate_no_a.result | 344 +-
.../perfschema/r/event_aggregate_no_a_no_h.result | 268 +-
.../perfschema/r/event_aggregate_no_a_no_u.result | 272 +-
.../r/event_aggregate_no_a_no_u_no_h.result | 196 +-
.../suite/perfschema/r/event_aggregate_no_h.result | 336 +-
.../suite/perfschema/r/event_aggregate_no_u.result | 340 +-
.../perfschema/r/event_aggregate_no_u_no_h.result | 264 +-
.../r/hostcache_ipv4_nameinfo_again_allow.result | 4 +-
.../r/hostcache_ipv6_nameinfo_again_allow.result | 4 +-
.../suite/perfschema/r/privilege_table_io.result | 12 +-
.../perfschema/r/setup_instruments_defaults.result | 1 -
.../suite/perfschema/r/socket_connect.result | 13 -
.../suite/perfschema/r/stage_mdl_global.result | 2 +-
mysql-test/suite/perfschema/t/socket_connect.test | 9 +-
.../suite/perfschema/t/stage_mdl_global.test | 4 +-
mysql-test/suite/plugins/r/audit_null.result | 6 +
mysql-test/suite/plugins/r/auth_ed25519.result | 31 +-
.../suite/plugins/r/cracklib_password_check.result | 2 +-
.../suite/plugins/r/feedback_plugin_load.result | 2 +-
.../suite/plugins/r/feedback_plugin_send.result | 2 +-
.../r/max_password_errors_auth_named_pipe.result | 12 +
.../r/max_password_errors_auth_socket.result | 12 +
mysql-test/suite/plugins/r/multiauth.result | 194 +
mysql-test/suite/plugins/r/server_audit.result | 22 +-
mysql-test/suite/plugins/r/show_all_plugins.result | 4 +-
.../suite/plugins/r/simple_password_check.result | 9 +-
mysql-test/suite/plugins/r/sql_error_log.result | 4 +-
.../plugins/r/thread_pool_server_audit.result | 22 +-
mysql-test/suite/plugins/t/auth_ed25519.test | 13 +
.../suite/plugins/t/feedback_plugin_load.test | 4 +-
.../t/max_password_errors_auth_named_pipe.opt | 1 +
.../t/max_password_errors_auth_named_pipe.test | 22 +
.../plugins/t/max_password_errors_auth_socket.opt | 1 +
.../plugins/t/max_password_errors_auth_socket.test | 23 +
mysql-test/suite/plugins/t/multiauth.test | 197 +
.../suite/plugins/t/simple_password_check.test | 8 +-
mysql-test/suite/roles/create_and_drop_role.result | 6 +-
.../create_and_drop_role_invalid_user_table.result | 1 -
.../create_and_drop_role_invalid_user_table.test | 7 +-
.../roles/default_create_user_not_role.result | 2 +-
mysql-test/suite/roles/flush_roles-17898.result | 9 +
mysql-test/suite/roles/flush_roles-17898.test | 12 +
mysql-test/suite/roles/grant_revoke_current.result | 3 +-
mysql-test/suite/roles/grant_revoke_current.test | 5 +-
.../suite/roles/grant_role_auto_create_user.result | 2 +-
.../roles/i_s_applicable_roles_is_default.result | 1 +
.../roles/i_s_applicable_roles_is_default.test | 2 +-
mysql-test/suite/roles/none_public.result | 12 +-
mysql-test/suite/roles/none_public.test | 6 +-
.../suite/roles/prepare_stmt_with_role.result | 6 +-
mysql-test/suite/roles/rename_user.result | 2 +-
.../suite/roles/role_case_sensitive-10744.result | 2 +-
.../suite/roles/set_default_role_clear.result | 8 +-
mysql-test/suite/roles/set_default_role_for.result | 13 +-
mysql-test/suite/roles/set_default_role_for.test | 3 -
.../suite/roles/set_default_role_invalid.result | 6 +-
.../roles/set_default_role_new_connection.result | 10 +-
.../suite/roles/set_default_role_ps-6960.result | 3 +-
.../suite/roles/set_default_role_ps-6960.test | 7 +-
.../suite/roles/set_role-database-recursive.result | 2 +-
.../suite/roles/set_role-database-simple.result | 2 +-
mysql-test/suite/roles/set_role-recursive.result | 2 +-
.../suite/roles/set_role-routine-simple.result | 2 +-
mysql-test/suite/roles/set_role-simple.result | 2 +-
.../suite/roles/set_role-table-column-priv.result | 2 +-
.../suite/roles/set_role-table-simple.result | 2 +-
mysql-test/suite/roles/show_grants.result | 2 +-
.../suite/roles/show_grants_replicated.result | 2 +-
mysql-test/suite/rpl/disabled.def | 1 +
mysql-test/suite/rpl/include/check_type.inc | 8 +
mysql-test/suite/rpl/include/rpl_EE_err.test | 2 +-
mysql-test/suite/rpl/include/rpl_foreign_key.test | 60 -
.../rpl/include/rpl_lower_case_table_names.test | 141 +
mysql-test/suite/rpl/include/rpl_mixed_dml.inc | 1 -
mysql-test/suite/rpl/include/rpl_row_001.test | 96 -
mysql-test/suite/rpl/include/rpl_row_annotate.test | 2 +-
.../suite/rpl/include/rpl_row_delayed_ins.test | 2 +-
mysql-test/suite/rpl/include/type_conversions.test | 91 +
mysql-test/suite/rpl/r/rpl_15919.result | 19 +
mysql-test/suite/rpl/r/rpl_EE_err.result | 2 +-
mysql-test/suite/rpl/r/rpl_auto_increment.result | 16 -
.../rpl/r/rpl_auto_increment_update_failure.result | 112 -
mysql-test/suite/rpl/r/rpl_binlog_index.result | 4 -
mysql-test/suite/rpl/r/rpl_bug31076.result | 2 +-
mysql-test/suite/rpl/r/rpl_checksum_cache.result | 24 -
.../suite/rpl/r/rpl_conditional_comments.result | 12 -
mysql-test/suite/rpl/r/rpl_corruption.result | 4 -
mysql-test/suite/rpl/r/rpl_create_drop_user.result | 44 +-
.../suite/rpl/r/rpl_create_if_not_exists.result | 2 -
mysql-test/suite/rpl/r/rpl_current_user.result | 78 -
mysql-test/suite/rpl/r/rpl_ddl.result | 12 +-
mysql-test/suite/rpl/r/rpl_do_grant.result | 23 +-
.../suite/rpl/r/rpl_extra_col_master_innodb.result | 2 +-
.../suite/rpl/r/rpl_extra_col_master_myisam.result | 2 +-
.../suite/rpl/r/rpl_foreign_key_innodb.result | 3 +-
mysql-test/suite/rpl/r/rpl_grant.result | 8 +-
mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result | 40 +-
mysql-test/suite/rpl/r/rpl_gtid_stop_start.result | 8 +-
mysql-test/suite/rpl/r/rpl_idempotency.result | 17 +
mysql-test/suite/rpl/r/rpl_ignore_revoke.result | 10 +-
mysql-test/suite/rpl/r/rpl_ignore_table.result | 9 +-
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result | 48 +-
mysql-test/suite/rpl/r/rpl_insert_ignore.result | 8 -
.../rpl/r/rpl_lcase_tblnames_rewrite_db.result | 38 +
mysql-test/suite/rpl/r/rpl_loaddata.result | 4 -
mysql-test/suite/rpl/r/rpl_loadfile.result | 4 -
.../suite/rpl/r/rpl_lost_events_on_rotate.result | 4 -
.../rpl/r/rpl_mixed_binlog_max_cache_size.result | 28 -
.../rpl/r/rpl_mixed_implicit_commit_binlog.result | 5 +-
.../rpl/r/rpl_mysql57_stm_temporal_round.result | 22 +
.../rpl/r/rpl_mysql80_stm_temporal_round.result | 23 +
.../rpl/r/rpl_nondeterministic_functions.result | 4 -
mysql-test/suite/rpl/r/rpl_not_null_innodb.result | 16 -
mysql-test/suite/rpl/r/rpl_not_null_myisam.result | 16 -
mysql-test/suite/rpl/r/rpl_old_master.result | 3 +
mysql-test/suite/rpl/r/rpl_parallel.result | 1 +
.../suite/rpl/r/rpl_parallel_optimistic.result | 18 +
mysql-test/suite/rpl/r/rpl_reset_slave_fail.result | 4 -
mysql-test/suite/rpl/r/rpl_rewrt_db.result | 6 +-
mysql-test/suite/rpl/r/rpl_row_001.result | 42 +-
mysql-test/suite/rpl/r/rpl_row_annotate_do.result | 2 +-
.../suite/rpl/r/rpl_row_annotate_dont.result | 2 +-
.../suite/rpl/r/rpl_row_basic_2myisam.result | 32 -
.../suite/rpl/r/rpl_row_basic_3innodb.result | 32 -
.../suite/rpl/r/rpl_row_big_table_id,32bit.rdiff | 31 +
mysql-test/suite/rpl/r/rpl_row_big_table_id.result | 46 +
mysql-test/suite/rpl/r/rpl_row_delayed_ins.result | 2 +-
mysql-test/suite/rpl/r/rpl_row_find_row.result | 4 -
mysql-test/suite/rpl/r/rpl_row_img_blobs.result | 2016 --
mysql-test/suite/rpl/r/rpl_row_img_eng_min.result | 1152 -
.../suite/rpl/r/rpl_row_img_eng_noblob.result | 1152 -
.../rpl/r/rpl_row_implicit_commit_binlog.result | 5 +-
.../suite/rpl/r/rpl_row_lcase_tblnames.result | 60 +
.../suite/rpl/r/rpl_row_loaddata_concurrent.result | 4 -
mysql-test/suite/rpl/r/rpl_row_merge_engine.result | 16 -
.../suite/rpl/r/rpl_row_rec_comp_innodb.result | 12 -
.../suite/rpl/r/rpl_row_rec_comp_myisam.result | 16 -
mysql-test/suite/rpl/r/rpl_row_tbl_metadata.result | 44 -
mysql-test/suite/rpl/r/rpl_row_utf16.result | 4 -
mysql-test/suite/rpl/r/rpl_set_null_innodb.result | 16 -
mysql-test/suite/rpl/r/rpl_set_null_myisam.result | 16 -
mysql-test/suite/rpl/r/rpl_slave_load_in.result | 8 -
mysql-test/suite/rpl/r/rpl_special_charset.result | 4 -
mysql-test/suite/rpl/r/rpl_stm_000001.result | 33 +-
.../rpl/r/rpl_stm_binlog_max_cache_size.result | 28 -
.../rpl/r/rpl_stm_implicit_commit_binlog.result | 5 +-
.../suite/rpl/r/rpl_stm_lcase_tblnames.result | 57 +
.../suite/rpl/r/rpl_stm_loaddata_concurrent.result | 4 -
.../suite/rpl/r/rpl_stm_mixing_engines.result | 4 -
.../suite/rpl/r/rpl_stm_relay_ign_space.result | 4 -
.../suite/rpl/r/rpl_stm_user_variables.result | 4 -
mysql-test/suite/rpl/r/rpl_stop_slave.result | 8 -
.../suite/rpl/r/rpl_switch_stm_row_mixed.result | 2 +-
mysql-test/suite/rpl/r/rpl_sync.result | 8 -
.../suite/rpl/r/rpl_temp_table_mix_row.result | 4 -
mysql-test/suite/rpl/r/rpl_temporal_round.result | 50 +
mysql-test/suite/rpl/r/rpl_test_framework.result | 126 -
.../suite/rpl/r/rpl_tmp_table_and_DDL.result | 22 +-
mysql-test/suite/rpl/r/rpl_trigger.result | 8 -
mysql-test/suite/rpl/r/rpl_truncate_2myisam.result | 16 -
mysql-test/suite/rpl/r/rpl_truncate_3innodb.result | 16 -
mysql-test/suite/rpl/r/rpl_typeconv.result | 44 +
mysql-test/suite/rpl/r/rpl_typeconv_innodb.result | 4 -
.../suite/rpl/r/rpl_unsafe_statements.result | 24 -
mysql-test/suite/rpl/r/rpl_user.result | 11 +
mysql-test/suite/rpl/r/rpl_variables.result | 20 -
mysql-test/suite/rpl/r/rpl_variables_stm.result | 20 -
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_create_drop_user.test | 18 +-
mysql-test/suite/rpl/t/rpl_do_grant.test | 29 +-
mysql-test/suite/rpl/t/rpl_drop_db.test | 8 +-
mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test | 62 +-
mysql-test/suite/rpl/t/rpl_gtid_crash.test | 2 +
mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test | 68 +-
mysql-test/suite/rpl/t/rpl_idempotency.test | 21 +
mysql-test/suite/rpl/t/rpl_ignore_table.test | 4 +-
.../rpl/t/rpl_lcase_tblnames_rewrite_db-slave.opt | 1 +
.../suite/rpl/t/rpl_lcase_tblnames_rewrite_db.test | 60 +
mysql-test/suite/rpl/t/rpl_mdev382.test | 1 +
.../rpl/t/rpl_mysql57_stm_temporal_round.test | 58 +
.../rpl/t/rpl_mysql80_stm_temporal_round.test | 62 +
mysql-test/suite/rpl/t/rpl_old_master.test | 8 +
.../suite/rpl/t/rpl_parallel_optimistic.test | 28 +-
.../rpl/t/rpl_parallel_optimistic_nobinlog.cnf | 1 +
mysql-test/suite/rpl/t/rpl_row_001.test | 48 +-
mysql-test/suite/rpl/t/rpl_row_big_table_id.test | 57 +
.../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_stm_000001.test | 21 +-
.../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_temporal_round.test | 35 +
mysql-test/suite/rpl/t/rpl_user.test | 11 +
mysql-test/suite/sql_sequence/create.result | 9 +
mysql-test/suite/sql_sequence/create.test | 11 +
mysql-test/suite/storage_engine/type_bool.result | 4 +-
.../sys_vars/r/delayed_insert_limit_func.result | 4 +-
.../r/innodb_ft_result_cache_limit_32.result | 7 +
.../r/innodb_ft_result_cache_limit_64.result | 5 +
.../innodb_ft_result_cache_limit_basic,32bit.rdiff | 13 +
.../r/innodb_ft_result_cache_limit_basic.result | 7 +-
.../suite/sys_vars/r/max_seeks_for_key_func.result | 1 +
.../sys_vars/r/myisam_stats_method_func.result | 6 +-
...ptimizer_use_condition_selectivity_basic.result | 20 +-
.../r/sql_low_priority_updates_func.result | 4 +-
mysql-test/suite/sys_vars/r/sql_mode_basic.result | 10 +-
.../suite/sys_vars/r/sysvars_innodb,32bit.rdiff | 118 +-
mysql-test/suite/sys_vars/r/sysvars_innodb.result | 30 +-
.../sys_vars/r/sysvars_server_embedded.result | 46 +-
.../sys_vars/r/sysvars_server_notembedded.result | 60 +-
mysql-test/suite/sys_vars/r/sysvars_wsrep.result | 58 +-
.../sys_vars/r/table_definition_cache_basic.result | 16 +-
.../suite/sys_vars/r/thread_pool_size_high.result | 1 +
.../suite/sys_vars/r/use_stat_tables_basic.result | 10 +-
.../r/wsrep_load_data_splitting_basic.result | 12 +
.../sys_vars/r/wsrep_provider_options_basic.result | 15 +-
.../suite/sys_vars/r/wsrep_sst_method_basic.result | 4 +
.../sys_vars/r/wsrep_start_position_basic.result | 10 +-
.../t/aria_used_for_temp_tables_basic.test | 1 +
.../sys_vars/t/delayed_insert_limit_func.test | 20 +-
.../t/innodb_ft_result_cache_limit_32.test | 9 +
.../t/innodb_ft_result_cache_limit_64.test | 9 +
.../t/innodb_ft_result_cache_limit_basic.test | 5 +-
.../sys_vars/t/sql_low_priority_updates_func.test | 4 +-
mysql-test/suite/sys_vars/t/sql_mode_basic.test | 8 +-
mysql-test/suite/sys_vars/t/sysvars_aria.test | 1 +
.../sys_vars/t/table_definition_cache_basic.test | 6 +-
.../suite/sys_vars/t/thread_pool_size_high.test | 1 +
.../suite/sys_vars/t/tmp_disk_table_size_func.test | 2 +
.../sys_vars/t/wsrep_provider_options_basic.test | 16 +-
.../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/r/races.result | 16 +
mysql-test/suite/vcol/r/update.result | 4 +-
mysql-test/suite/vcol/r/update_binlog.result | 8 +-
mysql-test/suite/vcol/r/upgrade.result | 16 +
mysql-test/suite/vcol/r/vcol_keys_myisam.result | 1 +
mysql-test/suite/vcol/r/vcol_misc.result | 28 +-
mysql-test/suite/vcol/r/wrong_arena.result | 28 +-
mysql-test/suite/vcol/t/races.test | 22 +
mysql-test/suite/vcol/t/update.test | 4 +-
mysql-test/suite/vcol/t/upgrade.test | 15 +
mysql-test/suite/vcol/t/vcol_misc.test | 27 +-
mysql-test/suite/versioning/innodb.combinations | 5 +
mysql-test/suite/versioning/innodb.inc | 1 +
mysql-test/suite/versioning/r/alter.result | 4 +-
mysql-test/suite/versioning/r/cte.result | 2 +-
mysql-test/suite/versioning/r/foreign.result | 9 +
mysql-test/suite/versioning/r/online.result | 162 +-
mysql-test/suite/versioning/r/partition.result | 8 +-
mysql-test/suite/versioning/r/sysvars.result | 15 +-
mysql-test/suite/versioning/r/trx_id.result | 3 +
.../trx_id_versioning_attribute_persistence.result | 86 -
mysql-test/suite/versioning/t/alter.test | 2 +-
mysql-test/suite/versioning/t/foreign.test | 14 +
mysql-test/suite/versioning/t/online.test | 192 +-
mysql-test/suite/versioning/t/sysvars.test | 10 +
mysql-test/suite/versioning/t/trx_id.test | 2 +
.../t/trx_id_versioning_attribute_persistence.test | 87 -
mysql-test/suite/wsrep/disabled.def | 3 +-
.../suite/wsrep/include/check_galera_version.inc | 20 +-
mysql-test/suite/wsrep/my.cnf | 4 +-
mysql-test/suite/wsrep/r/variables.result | 7 +-
.../suite/wsrep/r/wsrep-recover,binlogon.rdiff | 28 +
.../suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff | 17 +
mysql-test/suite/wsrep/r/wsrep-recover-v25.result | 28 +
mysql-test/suite/wsrep/r/wsrep-recover.result | 66 +
mysql-test/suite/wsrep/suite.pm | 4 +-
mysql-test/suite/wsrep/t/binlog_format.cnf | 8 +
mysql-test/suite/wsrep/t/binlog_format.opt | 1 -
mysql-test/suite/wsrep/t/binlog_format.test | 1 +
mysql-test/suite/wsrep/t/mdev_10186.cnf | 6 +
mysql-test/suite/wsrep/t/mdev_10186.opt | 1 -
mysql-test/suite/wsrep/t/mdev_10186.test | 1 +
mysql-test/suite/wsrep/t/mdev_6832.cnf | 7 +
mysql-test/suite/wsrep/t/mdev_6832.opt | 1 -
mysql-test/suite/wsrep/t/mdev_6832.test | 1 +
mysql-test/suite/wsrep/t/mdev_7798.cnf | 7 +
mysql-test/suite/wsrep/t/mdev_7798.opt | 1 -
mysql-test/suite/wsrep/t/mdev_7798.test | 1 +
mysql-test/suite/wsrep/t/pool_of_threads.cnf | 8 +
mysql-test/suite/wsrep/t/pool_of_threads.opt | 1 -
mysql-test/suite/wsrep/t/variables.test | 8 +-
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 | 121 +
mysql-test/suite/wsrep/t/wsrep-recover.cnf | 9 +
.../suite/wsrep/t/wsrep-recover.combinations | 4 +
mysql-test/suite/wsrep/t/wsrep-recover.test | 204 +
mysql-test/unstable-tests | 394 +-
mysys/CMakeLists.txt | 1 +
mysys/mf_iocache.c | 24 +-
mysys/mf_iocache2.c | 4 +-
mysys/my_alloc.c | 14 +-
mysys/my_pread.c | 26 +-
mysys/ptr_cmp.c | 7 +
mysys/safemalloc.c | 4 +-
mysys/thr_alarm.c | 6 +-
plugin/auth_ed25519/CMakeLists.txt | 4 +-
plugin/auth_ed25519/ed25519-t.c | 2 +-
plugin/auth_ed25519/server_ed25519.c | 54 +-
plugin/auth_examples/dialog_examples.c | 6 +-
plugin/auth_examples/qa_auth_interface.c | 3 +-
plugin/auth_examples/qa_auth_server.c | 3 +-
plugin/auth_examples/test_plugin.c | 6 +-
plugin/auth_gssapi/gssapi_server.cc | 20 +-
.../auth_gssapi/mysql-test/auth_gssapi/basic.test | 1 +
.../mysql-test/auth_gssapi/multiauth.result | 34 +
.../mysql-test/auth_gssapi/multiauth.test | 36 +
plugin/auth_gssapi/server_plugin.cc | 34 +-
plugin/auth_gssapi/server_plugin.h | 2 +-
plugin/auth_gssapi/sspi_server.cc | 26 +-
plugin/auth_pam/auth_pam.c | 32 +-
plugin/auth_pam/auth_pam_base.c | 9 +-
plugin/auth_pam/auth_pam_common.c | 3 +-
plugin/auth_pam/auth_pam_tool.c | 14 +-
plugin/auth_pam/auth_pam_v1.c | 31 +-
plugin/auth_socket/auth_socket.c | 3 +-
plugin/aws_key_management/CMakeLists.txt | 8 +-
.../aws_key_management_plugin.cc | 29 +-
.../cracklib_password_check.c | 3 +-
plugin/feedback/sender_thread.cc | 11 +-
plugin/handler_socket/handlersocket/database.cpp | 6 +-
plugin/metadata_lock_info/metadata_lock_info.cc | 29 +-
.../metadata_lock_info/r/global_read_lock.result | 3 +-
plugin/query_response_time/query_response_time.cc | 39 +-
.../simple_password_check/simple_password_check.c | 4 +-
plugin/user_variables/user_variables.cc | 2 +-
plugin/wsrep_info/mysql-test/wsrep_info/my.cnf | 7 +-
.../mysql-test/wsrep_info/r/plugin.result | 10 +-
plugin/wsrep_info/mysql-test/wsrep_info/suite.pm | 4 +-
plugin/wsrep_info/plugin.cc | 87 +-
scripts/CMakeLists.txt | 6 +-
scripts/galera_new_cluster.sh | 5 +-
scripts/mysql_install_db.sh | 7 +
scripts/mysql_secure_installation.sh | 6 +-
scripts/mysql_system_tables.sql | 63 +-
scripts/mysql_system_tables_data.sql | 26 +-
scripts/mysql_system_tables_fix.sql | 87 +-
scripts/mysql_test_db.sql | 4 +-
scripts/mysqld_safe.sh | 11 +-
scripts/mytop.sh | 19 +-
scripts/wsrep_sst_common.sh | 32 +-
scripts/wsrep_sst_mariabackup.sh | 155 +-
scripts/wsrep_sst_mysqldump.sh | 5 +-
scripts/wsrep_sst_rsync.sh | 61 +-
scripts/wsrep_sst_xtrabackup-v2.sh | 1236 -
scripts/wsrep_sst_xtrabackup.sh | 692 -
sql-common/my_time.c | 771 +-
sql/CMakeLists.txt | 34 +-
sql/backup.cc | 385 +
sql/backup.h | 34 +
sql/compat56.cc | 24 +-
sql/compat56.h | 9 +
sql/contributors.h | 4 +-
sql/event_data_objects.cc | 36 +-
sql/event_parse_data.cc | 16 +-
sql/event_scheduler.cc | 24 +-
sql/events.cc | 22 +-
sql/field.cc | 636 +-
sql/field.h | 178 +-
sql/field_conv.cc | 35 +-
sql/filesort.cc | 115 +-
sql/filesort.h | 3 +
sql/gcalc_slicescan.cc | 11 +
sql/gcalc_slicescan.h | 7 +
sql/gcalc_tools.cc | 11 +
sql/gcalc_tools.h | 1 +
sql/gen_lex_token.cc | 8 +-
sql/ha_partition.cc | 147 +-
sql/ha_partition.h | 7 +-
sql/ha_sequence.cc | 2 +-
sql/handle_connections_win.cc | 555 +
sql/handle_connections_win.h | 20 +
sql/handler.cc | 395 +-
sql/handler.h | 105 +-
sql/init.h | 1 -
sql/innodb_priv.h | 4 +-
sql/item.cc | 604 +-
sql/item.h | 546 +-
sql/item_cmpfunc.cc | 320 +-
sql/item_cmpfunc.h | 80 +-
sql/item_create.cc | 101 +
sql/item_func.cc | 143 +-
sql/item_func.h | 144 +-
sql/item_inetfunc.cc | 544 +-
sql/item_inetfunc.h | 60 +-
sql/item_jsonfunc.cc | 48 +-
sql/item_jsonfunc.h | 2 +-
sql/item_row.h | 2 +-
sql/item_strfunc.cc | 127 +-
sql/item_strfunc.h | 63 +-
sql/item_subselect.cc | 35 +-
sql/item_subselect.h | 7 +-
sql/item_sum.cc | 56 +-
sql/item_sum.h | 35 +-
sql/item_timefunc.cc | 501 +-
sql/item_timefunc.h | 319 +-
sql/item_vers.cc | 9 +-
sql/item_vers.h | 2 +-
sql/item_windowfunc.cc | 21 +-
sql/item_windowfunc.h | 7 +-
sql/lex.h | 41 +-
sql/lock.cc | 199 +-
sql/lock.h | 1 -
sql/log.cc | 138 +-
sql/log.h | 17 +-
sql/log_event.cc | 200 +-
sql/log_event.h | 53 +-
sql/mdl.cc | 626 +-
sql/mdl.h | 123 +-
sql/my_decimal.cc | 4 +-
sql/my_decimal.h | 7 +-
sql/mysql_install_db.cc | 102 +-
sql/mysql_upgrade_service.cc | 189 +-
sql/mysqld.cc | 1807 +-
sql/mysqld.h | 33 +-
sql/opt_range.cc | 37 +-
sql/opt_split.cc | 9 +
sql/opt_subselect.cc | 50 +-
sql/partition_info.cc | 21 +-
sql/partition_info.h | 6 +-
sql/procedure.h | 4 +-
sql/protocol.cc | 22 +-
sql/rpl_gtid.cc | 389 +-
sql/rpl_gtid.h | 10 +-
sql/rpl_mi.cc | 4 +-
sql/rpl_mi.h | 6 +-
sql/rpl_parallel.cc | 36 +-
sql/rpl_record.cc | 3 +-
sql/rpl_rli.cc | 8 +
sql/rpl_utility.cc | 34 +-
sql/semisync_master_ack_receiver.cc | 61 +-
sql/semisync_master_ack_receiver.h | 147 +-
sql/service_wsrep.cc | 255 +
sql/share/errmsg-utf8.txt | 20 +-
sql/slave.cc | 210 +-
sql/slave.h | 1 +
sql/sp.cc | 7 +-
sql/sp.h | 3 +-
sql/sp_head.cc | 58 +-
sql/sp_pcontext.cc | 13 +
sql/sp_pcontext.h | 8 +-
sql/sp_rcontext.cc | 27 -
sql/sql_acl.cc | 3827 ++-
sql/sql_admin.cc | 11 +-
sql/sql_alter.cc | 19 +-
sql/sql_alter.h | 2 +-
sql/sql_array.h | 10 +-
sql/sql_base.cc | 839 +-
sql/sql_base.h | 29 +-
sql/sql_basic_types.h | 310 +
sql/sql_cache.cc | 4 +-
sql/sql_class.cc | 275 +-
sql/sql_class.h | 440 +-
sql/sql_cmd.h | 1 +
sql/sql_connect.cc | 33 +-
sql/sql_const.h | 14 +-
sql/sql_cte.cc | 36 +-
sql/sql_cte.h | 19 +-
sql/sql_cursor.cc | 5 +
sql/sql_db.cc | 19 +-
sql/sql_db.h | 3 +-
sql/sql_delete.cc | 7 +-
sql/sql_derived.cc | 5 +-
sql/sql_error.h | 73 +-
sql/sql_get_diagnostics.cc | 2 +-
sql/sql_get_diagnostics.h | 2 +-
sql/sql_handler.cc | 14 +-
sql/sql_handler.h | 1 +
sql/sql_insert.cc | 182 +-
sql/sql_lex.cc | 188 +-
sql/sql_lex.h | 42 +-
sql/sql_load.cc | 11 +-
sql/sql_parse.cc | 953 +-
sql/sql_parse.h | 3 +-
sql/sql_partition.cc | 22 +-
sql/sql_partition.h | 4 +
sql/sql_partition_admin.cc | 4 +-
sql/sql_plist.h | 7 +-
sql/sql_plugin.cc | 104 +-
sql/sql_plugin_services.ic | 58 +-
sql/sql_prepare.cc | 76 +-
sql/sql_reload.cc | 73 +-
sql/sql_repl.cc | 123 +-
sql/sql_select.cc | 360 +-
sql/sql_select.h | 8 +-
sql/sql_show.cc | 535 +-
sql/sql_signal.cc | 10 +-
sql/sql_sort.h | 1 -
sql/sql_statistics.cc | 101 +-
sql/sql_statistics.h | 57 +-
sql/sql_string.cc | 195 +-
sql/sql_string.h | 1035 +-
sql/sql_table.cc | 314 +-
sql/sql_time.cc | 217 +-
sql/sql_time.h | 57 +-
sql/sql_trigger.cc | 29 +-
sql/sql_trigger.h | 3 +
sql/sql_truncate.cc | 6 +-
sql/sql_tvc.cc | 19 +-
sql/sql_type.cc | 1338 +-
sql/sql_type.h | 1937 +-
sql/sql_type_int.h | 126 +
sql/sql_udf.cc | 3 +
sql/sql_udf.h | 15 +
sql/sql_union.cc | 41 +-
sql/sql_update.cc | 6 +-
sql/sql_view.cc | 12 +-
sql/sql_window.cc | 36 +-
sql/sql_window.h | 6 +-
sql/sql_yacc.yy | 874 +-
sql/sql_yacc_ora.yy | 823 +-
sql/structs.h | 65 +-
sql/sys_vars.cc | 136 +-
sql/sys_vars.ic | 9 +-
sql/table.cc | 67 +-
sql/table.h | 86 +-
sql/table_cache.cc | 51 +-
sql/table_cache.h | 2 +-
sql/temporary_tables.cc | 80 +-
sql/threadpool_common.cc | 2 +-
sql/threadpool_generic.cc | 52 +-
sql/threadpool_win.cc | 31 +-
sql/transaction.cc | 56 +-
sql/udf_example.c | 139 +
sql/udf_example.def | 7 +
sql/unireg.h | 2 +-
sql/upgrade_conf_file.cc | 177 +
sql/vers_string.h | 6 +
sql/vers_utils.h | 39 -
sql/wsrep_applier.cc | 321 +-
sql/wsrep_applier.h | 67 +-
sql/wsrep_binlog.cc | 341 +-
sql/wsrep_binlog.h | 35 +-
sql/wsrep_check_opts.cc | 4 +-
sql/wsrep_client_service.cc | 307 +
sql/wsrep_client_service.h | 63 +
sql/wsrep_client_state.h | 47 +
sql/wsrep_condition_variable.h | 54 +
sql/wsrep_dummy.cc | 109 +-
sql/wsrep_high_priority_service.cc | 649 +
sql/wsrep_high_priority_service.h | 118 +
sql/wsrep_hton.cc | 653 -
sql/wsrep_mutex.h | 50 +
sql/wsrep_mysqld.cc | 2836 +-
sql/wsrep_mysqld.h | 397 +-
sql/wsrep_notify.cc | 77 +-
sql/wsrep_plugin.cc | 53 +
sql/wsrep_priv.h | 24 +-
sql/wsrep_schema.cc | 1360 +
sql/wsrep_schema.h | 161 +
sql/wsrep_server_service.cc | 318 +
sql/wsrep_server_service.h | 81 +
sql/wsrep_server_state.cc | 82 +
sql/wsrep_server_state.h | 66 +
sql/wsrep_sst.cc | 654 +-
sql/wsrep_sst.h | 34 +-
sql/wsrep_storage_service.cc | 238 +
sql/wsrep_storage_service.h | 48 +
sql/wsrep_thd.cc | 787 +-
sql/wsrep_thd.h | 216 +-
sql/wsrep_trans_observer.h | 423 +
sql/wsrep_types.h | 29 +
sql/wsrep_utils.cc | 104 +-
sql/wsrep_utils.h | 79 +-
sql/wsrep_var.cc | 325 +-
sql/wsrep_var.h | 11 +-
sql/wsrep_xid.cc | 118 +-
sql/wsrep_xid.h | 14 +-
storage/archive/azio.c | 5 +-
storage/archive/ha_archive.cc | 14 +
storage/archive/ha_archive.h | 3 +-
storage/blackhole/ha_blackhole.h | 2 +-
storage/connect/CMakeLists.txt | 10 +-
storage/connect/connect.cc | 2 +-
storage/connect/filamdbf.cpp | 4 +-
storage/connect/global.h | 10 +-
storage/connect/ha_connect.cc | 108 +-
storage/connect/ha_connect.h | 6 +-
storage/connect/inihandl.cpp | 2 +-
storage/connect/javaconn.cpp | 25 +-
storage/connect/jdbconn.cpp | 4 -
storage/connect/jsonudf.cpp | 12 +-
storage/connect/mysql-test/connect/disabled.def | 23 +-
storage/connect/mysql-test/connect/r/dir.result | 2 +-
storage/connect/mysql-test/connect/r/jdbc.result | 12 +
.../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/odbc_postgresql.result | 18 +-
storage/connect/mysql-test/connect/r/xml2.result | 33 +-
.../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 +
storage/connect/mysql-test/connect/t/xml2.test | 36 +-
storage/connect/odbconn.cpp | 10 +-
storage/connect/plugutil.cpp | 28 +-
storage/connect/reldef.cpp | 11 +-
storage/connect/tabext.cpp | 6 +
storage/connect/tabfmt.h | 2 +-
storage/connect/tabjdbc.cpp | 9 +-
storage/connect/tabjson.cpp | 10 +-
storage/connect/tabjson.h | 6 +-
storage/connect/tabmysql.cpp | 11 +-
storage/connect/tabodbc.cpp | 330 +-
storage/connect/tabxml.cpp | 13 +-
storage/connect/tabxml.h | 5 +-
storage/connect/user_connect.cc | 4 +-
storage/csv/ha_tina.cc | 28 +-
storage/csv/ha_tina.h | 2 +-
storage/federated/ha_federated.h | 1 +
storage/federatedx/TODO | 30 -
storage/federatedx/ha_federatedx.h | 2 +-
storage/heap/ha_heap.h | 2 +-
storage/heap/hp_create.c | 22 +-
storage/innobase/CMakeLists.txt | 6 +-
storage/innobase/btr/btr0btr.cc | 345 +-
storage/innobase/btr/btr0bulk.cc | 9 +-
storage/innobase/btr/btr0cur.cc | 638 +-
storage/innobase/btr/btr0defragment.cc | 25 +-
storage/innobase/btr/btr0pcur.cc | 43 +-
storage/innobase/btr/btr0scrub.cc | 8 +-
storage/innobase/btr/btr0sea.cc | 18 +-
storage/innobase/buf/buf0buf.cc | 536 +-
storage/innobase/buf/buf0checksum.cc | 55 +-
storage/innobase/buf/buf0dblwr.cc | 44 +-
storage/innobase/buf/buf0dump.cc | 6 +-
storage/innobase/buf/buf0flu.cc | 167 +-
storage/innobase/buf/buf0lru.cc | 6 +-
storage/innobase/buf/buf0rea.cc | 12 +-
storage/innobase/data/data0data.cc | 73 +-
storage/innobase/data/data0type.cc | 2 -
storage/innobase/dict/dict0boot.cc | 44 +-
storage/innobase/dict/dict0crea.cc | 176 +-
storage/innobase/dict/dict0defrag_bg.cc | 5 +-
storage/innobase/dict/dict0dict.cc | 267 +-
storage/innobase/dict/dict0load.cc | 5 +-
storage/innobase/dict/dict0mem.cc | 391 +-
storage/innobase/dict/dict0stats.cc | 10 +-
storage/innobase/dict/dict0stats_bg.cc | 1 -
storage/innobase/fil/fil0crypt.cc | 185 +-
storage/innobase/fil/fil0fil.cc | 554 +-
storage/innobase/fil/fil0pagecompress.cc | 9 +-
storage/innobase/fsp/fsp0file.cc | 5 -
storage/innobase/fsp/fsp0fsp.cc | 37 +-
storage/innobase/fsp/fsp0space.cc | 16 +-
storage/innobase/fsp/fsp0sysspace.cc | 20 +-
storage/innobase/fts/fts0ast.cc | 2 -
storage/innobase/fts/fts0fts.cc | 109 +-
storage/innobase/fts/fts0opt.cc | 2 -
storage/innobase/fts/fts0que.cc | 5 +-
storage/innobase/gis/gis0rtree.cc | 14 +-
storage/innobase/gis/gis0sea.cc | 20 +-
storage/innobase/ha/ha0ha.cc | 20 +-
storage/innobase/ha/ha0storage.cc | 1 -
storage/innobase/handler/ha_innodb.cc | 1163 +-
storage/innobase/handler/ha_innodb.h | 63 +-
storage/innobase/handler/handler0alter.cc | 2784 +-
storage/innobase/handler/i_s.cc | 5 +-
storage/innobase/ibuf/ibuf0ibuf.cc | 79 +-
storage/innobase/include/btr0btr.h | 44 +-
storage/innobase/include/btr0btr.ic | 4 +-
storage/innobase/include/btr0bulk.h | 7 +-
storage/innobase/include/btr0cur.h | 5 +-
storage/innobase/include/btr0defragment.h | 6 +-
storage/innobase/include/btr0pcur.h | 5 -
storage/innobase/include/btr0scrub.h | 6 -
storage/innobase/include/btr0sea.h | 7 +-
storage/innobase/include/btr0types.h | 5 +-
storage/innobase/include/buf0buddy.h | 6 -
storage/innobase/include/buf0buddy.ic | 10 -
storage/innobase/include/buf0buf.h | 208 +-
storage/innobase/include/buf0buf.ic | 89 +-
storage/innobase/include/buf0checksum.h | 19 +-
storage/innobase/include/buf0dblwr.h | 1 -
storage/innobase/include/buf0flu.h | 13 -
storage/innobase/include/buf0flu.ic | 79 +-
storage/innobase/include/buf0lru.h | 1 -
storage/innobase/include/buf0rea.h | 10 +-
storage/innobase/include/data0data.h | 34 +-
storage/innobase/include/data0type.h | 44 +
storage/innobase/include/dict0boot.h | 17 +-
storage/innobase/include/dict0crea.h | 11 -
storage/innobase/include/dict0defrag_bg.h | 5 +-
storage/innobase/include/dict0dict.h | 206 +-
storage/innobase/include/dict0dict.ic | 157 +-
storage/innobase/include/dict0load.h | 2 -
storage/innobase/include/dict0mem.h | 435 +-
storage/innobase/include/dict0priv.h | 14 -
storage/innobase/include/dict0priv.ic | 35 -
storage/innobase/include/dict0stats.h | 2 -
storage/innobase/include/dict0stats.ic | 1 -
storage/innobase/include/dict0stats_bg.h | 2 -
storage/innobase/include/dyn0buf.h | 3 +-
storage/innobase/include/eval0eval.h | 1 -
storage/innobase/include/eval0proc.h | 1 -
storage/innobase/include/fil0crypt.h | 13 +-
storage/innobase/include/fil0fil.h | 192 +-
storage/innobase/include/fsp0file.h | 24 +-
storage/innobase/include/fsp0fsp.h | 52 +-
storage/innobase/include/fsp0fsp.ic | 2 +-
storage/innobase/include/fsp0space.h | 2 -
storage/innobase/include/fsp0sysspace.h | 1 -
storage/innobase/include/fsp0types.h | 6 +-
storage/innobase/include/fts0ast.h | 1 -
storage/innobase/include/fts0fts.h | 20 +-
storage/innobase/include/fts0plugin.h | 2 +-
storage/innobase/include/fts0priv.h | 1 -
storage/innobase/include/fts0types.h | 5 +-
storage/innobase/include/fts0types.ic | 29 +-
storage/innobase/include/fut0fut.h | 3 -
storage/innobase/include/fut0lst.h | 11 +-
storage/innobase/include/fut0lst.ic | 2 +-
storage/innobase/include/gis0rtree.h | 18 -
storage/innobase/include/gis0type.h | 11 +-
storage/innobase/include/ha0ha.h | 2 -
storage/innobase/include/ha0storage.ic | 2 -
storage/innobase/include/ha_prototypes.h | 3 +
storage/innobase/include/hash0hash.h | 1 -
storage/innobase/include/ib0mutex.h | 127 +-
storage/innobase/include/ibuf0ibuf.h | 14 +-
storage/innobase/include/ibuf0ibuf.ic | 9 +-
storage/innobase/include/lock0iter.h | 1 -
storage/innobase/include/lock0lock.h | 2 -
storage/innobase/include/lock0prdt.h | 1 -
storage/innobase/include/lock0priv.h | 1 -
storage/innobase/include/lock0types.h | 1 +
storage/innobase/include/log0log.h | 9 -
storage/innobase/include/log0recv.h | 2 -
storage/innobase/include/mach0data.h | 4 +-
storage/innobase/include/mem0mem.h | 102 -
storage/innobase/include/mem0mem.ic | 2 -
storage/innobase/include/mtr0log.h | 1 -
storage/innobase/include/mtr0mtr.h | 29 +-
storage/innobase/include/mtr0mtr.ic | 2 +-
storage/innobase/include/os0file.ic | 2 -
storage/innobase/include/os0proc.h | 2 +-
storage/innobase/include/os0thread.h | 2 +-
storage/innobase/include/page0cur.h | 3 -
storage/innobase/include/page0cur.ic | 6 +-
storage/innobase/include/page0page.h | 54 +-
storage/innobase/include/page0page.ic | 31 -
storage/innobase/include/page0size.h | 3 +-
storage/innobase/include/page0types.h | 2 -
storage/innobase/include/page0zip.h | 30 +-
storage/innobase/include/page0zip.ic | 10 -
storage/innobase/include/pars0opt.h | 2 -
storage/innobase/include/pars0pars.h | 1 -
storage/innobase/include/pars0sym.h | 2 -
storage/innobase/include/que0que.h | 2 -
storage/innobase/include/que0types.h | 1 -
storage/innobase/include/read0types.h | 37 +-
storage/innobase/include/rem0cmp.h | 6 +-
storage/innobase/include/rem0cmp.ic | 1 +
storage/innobase/include/rem0rec.h | 171 +-
storage/innobase/include/rem0rec.ic | 55 +-
storage/innobase/include/row0ext.h | 3 +-
storage/innobase/include/row0ftsort.h | 5 -
storage/innobase/include/row0import.h | 1 -
storage/innobase/include/row0ins.h | 12 -
storage/innobase/include/row0log.h | 6 +-
storage/innobase/include/row0merge.h | 5 +-
storage/innobase/include/row0mysql.h | 63 +-
storage/innobase/include/row0purge.h | 5 +-
storage/innobase/include/row0quiesce.h | 1 -
storage/innobase/include/row0row.h | 36 +-
storage/innobase/include/row0row.ic | 12 +-
storage/innobase/include/row0sel.h | 2 -
storage/innobase/include/row0uins.h | 2 -
storage/innobase/include/row0umod.h | 2 -
storage/innobase/include/row0undo.h | 19 +-
storage/innobase/include/row0upd.h | 43 +-
storage/innobase/include/row0upd.ic | 8 +-
storage/innobase/include/row0vers.h | 2 -
storage/innobase/include/srv0mon.h | 1 -
storage/innobase/include/srv0srv.h | 20 +-
storage/innobase/include/srv0start.h | 1 -
storage/innobase/include/sync0arr.h | 1 -
storage/innobase/include/sync0arr.ic | 3 +-
storage/innobase/include/sync0debug.h | 1 -
storage/innobase/include/sync0policy.h | 524 +-
storage/innobase/include/sync0policy.ic | 101 -
storage/innobase/include/sync0rw.h | 7 +-
storage/innobase/include/sync0rw.ic | 87 +-
storage/innobase/include/sync0sync.h | 1 -
storage/innobase/include/sync0types.h | 74 -
storage/innobase/include/trx0i_s.h | 1 -
storage/innobase/include/trx0purge.h | 42 +-
storage/innobase/include/trx0rec.h | 12 +-
storage/innobase/include/trx0roll.h | 12 -
storage/innobase/include/trx0sys.h | 67 +-
storage/innobase/include/trx0trx.h | 35 +-
storage/innobase/include/trx0types.h | 2 -
storage/innobase/include/trx0undo.h | 43 +-
storage/innobase/include/trx0undo.ic | 35 +-
storage/innobase/include/univ.i | 17 +-
storage/innobase/include/ut0counter.h | 123 +-
storage/innobase/include/ut0crc32.h | 6 +-
storage/innobase/include/ut0dbg.h | 2 -
storage/innobase/include/ut0mem.h | 1 -
storage/innobase/include/ut0mutex.h | 6 -
storage/innobase/include/ut0new.h | 4 +-
storage/innobase/include/ut0rbt.h | 1 -
storage/innobase/include/ut0rnd.h | 5 +-
storage/innobase/include/ut0sort.h | 2 -
storage/innobase/include/ut0stage.h | 2 -
storage/innobase/include/ut0ut.h | 13 +-
storage/innobase/include/ut0vec.h | 1 -
storage/innobase/include/ut0vec.ic | 2 -
storage/innobase/innodb.cmake | 2 +
storage/innobase/lock/lock0iter.cc | 1 -
storage/innobase/lock/lock0lock.cc | 225 +-
storage/innobase/lock/lock0prdt.cc | 9 -
storage/innobase/lock/lock0wait.cc | 6 +-
storage/innobase/log/log0log.cc | 18 +-
storage/innobase/log/log0recv.cc | 72 +-
storage/innobase/mem/mem0mem.cc | 2 -
storage/innobase/mtr/mtr0mtr.cc | 33 +-
storage/innobase/os/os0event.cc | 23 +-
storage/innobase/os/os0file.cc | 36 +-
storage/innobase/os/os0proc.cc | 31 +-
storage/innobase/os/os0thread.cc | 17 +-
storage/innobase/page/page0cur.cc | 20 +-
storage/innobase/page/page0page.cc | 46 +-
storage/innobase/page/page0zip.cc | 246 +-
storage/innobase/pars/pars0opt.cc | 1 -
storage/innobase/pars/pars0pars.cc | 3 -
storage/innobase/que/que0que.cc | 8 +-
storage/innobase/read/read0read.cc | 10 +-
storage/innobase/rem/rem0cmp.cc | 33 +-
storage/innobase/rem/rem0rec.cc | 531 +-
storage/innobase/row/row0ftsort.cc | 42 +-
storage/innobase/row/row0import.cc | 88 +-
storage/innobase/row/row0ins.cc | 219 +-
storage/innobase/row/row0log.cc | 71 +-
storage/innobase/row/row0merge.cc | 110 +-
storage/innobase/row/row0mysql.cc | 376 +-
storage/innobase/row/row0purge.cc | 64 +-
storage/innobase/row/row0quiesce.cc | 18 +-
storage/innobase/row/row0row.cc | 644 +-
storage/innobase/row/row0sel.cc | 127 +-
storage/innobase/row/row0uins.cc | 240 +-
storage/innobase/row/row0umod.cc | 174 +-
storage/innobase/row/row0undo.cc | 197 +-
storage/innobase/row/row0upd.cc | 217 +-
storage/innobase/row/row0vers.cc | 2 -
storage/innobase/srv/srv0conc.cc | 38 +-
storage/innobase/srv/srv0mon.cc | 9 +-
storage/innobase/srv/srv0srv.cc | 79 +-
storage/innobase/srv/srv0start.cc | 268 +-
storage/innobase/sync/sync0arr.cc | 40 +-
storage/innobase/sync/sync0debug.cc | 3 -
storage/innobase/sync/sync0rw.cc | 97 +-
storage/innobase/sync/sync0sync.cc | 1 -
storage/innobase/trx/trx0i_s.cc | 14 +-
storage/innobase/trx/trx0purge.cc | 44 +-
storage/innobase/trx/trx0rec.cc | 286 +-
storage/innobase/trx/trx0roll.cc | 190 +-
storage/innobase/trx/trx0rseg.cc | 74 +-
storage/innobase/trx/trx0sys.cc | 9 +-
storage/innobase/trx/trx0trx.cc | 77 +-
storage/innobase/trx/trx0undo.cc | 56 +-
storage/innobase/ut/ut0crc32.cc | 81 +-
storage/innobase/ut/ut0dbg.cc | 5 +-
storage/innobase/ut/ut0new.cc | 2 -
storage/innobase/ut/ut0rbt.cc | 3 -
storage/maria/CMakeLists.txt | 7 +-
storage/maria/ha_maria.cc | 29 +-
storage/maria/ma_backup.c | 281 +
storage/maria/ma_blockrec.c | 18 +-
storage/maria/ma_check.c | 11 +-
storage/maria/ma_control_file.c | 120 +
storage/maria/ma_control_file.h | 1 +
storage/maria/ma_extra.c | 5 +
storage/maria/ma_ft_boolean_search.c | 2 +-
storage/maria/ma_init.c | 2 +
storage/maria/ma_key_recover.c | 2 -
storage/maria/ma_locking.c | 6 +-
storage/maria/ma_loghandler.c | 26 +-
storage/maria/ma_loghandler.h | 3 +
storage/maria/ma_norec.c | 4 +-
storage/maria/ma_pagecrc.c | 10 +-
storage/maria/ma_recovery.c | 8 +-
storage/maria/ma_write.c | 15 +-
storage/maria/maria_def.h | 4 +
storage/maria/maria_read_log.c | 24 +-
storage/maria/test_ma_backup.c | 449 +
storage/maria/unittest/ma_test_recovery.pl | 23 +-
storage/mroonga/CMakeLists.txt | 2 +-
storage/mroonga/ha_mroonga.cpp | 40 +-
storage/mroonga/ha_mroonga.hpp | 6 +-
storage/mroonga/lib/mrn_condition_converter.cpp | 11 +-
.../mroonga/lib/mrn_multiple_column_key_codec.cpp | 4 +-
storage/mroonga/mrn_table.hpp | 3 +
...etime_64bit_strict_sql_mode_out_of_range.result | 2 +-
storage/mroonga/vendor/groonga/lib/expr.c | 2 +-
storage/myisam/TODO | 7 -
storage/myisam/mi_check.c | 4 +
storage/myisam/mi_extra.c | 5 +
storage/myisam/mi_locking.c | 6 +-
storage/myisam/myisamdef.h | 1 +
.../mysql-test/storage_engine/disabled.def | 1 +
storage/perfschema/unittest/pfs-t.cc | 5 +-
storage/perfschema/unittest/pfs_server_stubs.cc | 2 -
storage/rocksdb/CMakeLists.txt | 4 +-
storage/rocksdb/event_listener.cc | 2 +-
storage/rocksdb/event_listener.h | 2 +-
storage/rocksdb/ha_rocksdb.cc | 21 +-
storage/rocksdb/ha_rocksdb.h | 2 +-
storage/rocksdb/ha_rocksdb_proto.h | 4 +-
storage/rocksdb/logger.h | 2 +-
storage/rocksdb/myrocks_hotbackup | 686 -
storage/rocksdb/myrocks_hotbackup.py | 685 +
.../mysql-test/rocksdb/r/2pc_group_commit.result | 30 +-
.../mysql-test/rocksdb/r/add_index_inplace.result | 12 +
.../mysql-test/rocksdb/r/analyze_table.result | 6 +
.../rocksdb/mysql-test/rocksdb/r/bulk_load.result | 3 +
.../mysql-test/rocksdb/r/bulk_load_errors.result | 2 +-
.../mysql-test/rocksdb/r/bulk_load_rev_cf.result | 3 +
.../rocksdb/r/bulk_load_rev_cf_and_data.result | 3 +
.../mysql-test/rocksdb/r/bulk_load_rev_data.result | 3 +
.../mysql-test/rocksdb/r/bulk_load_unsorted.result | 3 +
.../rocksdb/r/bulk_load_unsorted_rev.result | 3 +
.../mysql-test/rocksdb/r/cardinality.result | 1 +
.../mysql-test/rocksdb/r/col_opt_not_null.result | 4 +-
.../mysql-test/rocksdb/r/col_opt_null.result | 4 +-
.../mysql-test/rocksdb/r/drop_index_inplace.result | 2 +
.../rocksdb/r/index_merge_rocksdb.result | 1 +
.../rocksdb/mysql-test/rocksdb/r/issue255.result | 14 +-
storage/rocksdb/mysql-test/rocksdb/r/misc.result | 4 +-
.../rocksdb/mysql-test/rocksdb/r/partition.result | 1 +
.../mysql-test/rocksdb/r/records_in_range.result | 2 +-
.../rocksdb/mysql-test/rocksdb/r/rocksdb.result | 14 +-
.../rocksdb/r/rocksdb_cf_per_partition.result | 2 +
.../mysql-test/rocksdb/r/rocksdb_range2.result | 20 +-
.../rocksdb/mysql-test/rocksdb/r/statistics.result | 3 +
.../rocksdb/mysql-test/rocksdb/r/type_bool.result | 4 +-
.../mysql-test/rocksdb/r/type_decimal.result | 2 +
.../mysql-test/rocksdb/r/type_varchar.result | 5 +
storage/rocksdb/mysql-test/rocksdb/r/xa.result | 32 +
.../mysql-test/rocksdb/t/2pc_group_commit.test | 24 +-
.../t/allow_to_start_after_corruption-master.opt | 1 +
storage/rocksdb/mysql-test/rocksdb/t/disabled.def | 2 +
storage/rocksdb/mysql-test/rocksdb/t/issue255.test | 16 +-
.../mysql-test/rocksdb/t/rocksdb_range2.test | 12 +
storage/rocksdb/mysql-test/rocksdb/t/xa-master.opt | 1 +
storage/rocksdb/mysql-test/rocksdb/t/xa.test | 38 +
.../mysql-test/rocksdb_rpl/r/mdev12179.result | 18 +
.../mysql-test/rocksdb_rpl/r/rpl_blob_key.result | 9 -
.../mysql-test/rocksdb_rpl/t/mdev12179.test | 85 +
.../mysql-test/rocksdb_rpl/t/rpl_blob_key.test | 15 -
.../rocksdb/mysql-test/storage_engine/disabled.def | 1 +
storage/rocksdb/properties_collector.cc | 2 +-
storage/rocksdb/properties_collector.h | 2 +-
storage/rocksdb/rdb_buff.h | 2 +-
storage/rocksdb/rdb_cf_manager.cc | 2 +-
storage/rocksdb/rdb_cf_manager.h | 2 +-
storage/rocksdb/rdb_cf_options.cc | 2 +-
storage/rocksdb/rdb_cf_options.h | 2 +-
storage/rocksdb/rdb_compact_filter.h | 2 +-
storage/rocksdb/rdb_comparator.h | 2 +-
storage/rocksdb/rdb_datadic.cc | 2 +-
storage/rocksdb/rdb_datadic.h | 2 +-
storage/rocksdb/rdb_i_s.cc | 2 +-
storage/rocksdb/rdb_i_s.h | 2 +-
storage/rocksdb/rdb_index_merge.cc | 2 +-
storage/rocksdb/rdb_index_merge.h | 2 +-
storage/rocksdb/rdb_io_watchdog.cc | 2 +-
storage/rocksdb/rdb_io_watchdog.h | 2 +-
storage/rocksdb/rdb_mutex_wrapper.cc | 2 +-
storage/rocksdb/rdb_mutex_wrapper.h | 2 +-
storage/rocksdb/rdb_perf_context.cc | 2 +-
storage/rocksdb/rdb_perf_context.h | 2 +-
storage/rocksdb/rdb_sst_info.cc | 2 +-
storage/rocksdb/rdb_sst_info.h | 2 +-
storage/rocksdb/rdb_threads.cc | 2 +-
storage/rocksdb/rdb_threads.h | 2 +-
storage/rocksdb/rdb_utils.cc | 2 +-
storage/rocksdb/rdb_utils.h | 2 +-
.../rocksdb/unittest/test_properties_collector.cc | 2 +-
storage/spider/CMakeLists.txt | 2 +-
storage/spider/ha_spider.cc | 199 +-
storage/spider/ha_spider.h | 92 +-
storage/spider/hs_client/hs_compat.h | 2 +-
storage/spider/hs_client/hstcpcli.cpp | 25 +-
storage/spider/hs_client/hstcpcli.hpp | 3 +
.../checksum_table_with_quick_mode_3_deinit.inc | 14 +
.../checksum_table_with_quick_mode_3_init.inc | 29 +
.../include/direct_sql_with_tmp_table_deinit.inc | 7 +
.../include/direct_sql_with_tmp_table_init.inc | 9 +
.../spider/bugfix/include/quick_mode_0_deinit.inc | 19 +
.../spider/bugfix/include/quick_mode_0_init.inc | 51 +
.../spider/bugfix/include/quick_mode_1_deinit.inc | 19 +
.../spider/bugfix/include/quick_mode_1_init.inc | 51 +
.../spider/bugfix/include/quick_mode_2_deinit.inc | 19 +
.../spider/bugfix/include/quick_mode_2_init.inc | 51 +
.../spider/bugfix/include/quick_mode_3_deinit.inc | 19 +
.../spider/bugfix/include/quick_mode_3_init.inc | 51 +
.../bugfix/include/slave_trx_isolation_deinit.inc | 15 +
.../bugfix/include/slave_trx_isolation_init.inc | 35 +
.../bugfix/include/wrapper_mariadb_deinit.inc | 11 +
.../spider/bugfix/include/wrapper_mariadb_init.inc | 24 +
storage/spider/mysql-test/spider/bugfix/my.cnf | 2 +
storage/spider/mysql-test/spider/bugfix/my_1_1.cnf | 44 +
storage/spider/mysql-test/spider/bugfix/my_2_1.cnf | 56 +
storage/spider/mysql-test/spider/bugfix/my_2_2.cnf | 38 +
storage/spider/mysql-test/spider/bugfix/my_2_3.cnf | 8 +
storage/spider/mysql-test/spider/bugfix/my_3_1.cnf | 11 +
storage/spider/mysql-test/spider/bugfix/my_3_2.cnf | 9 +
storage/spider/mysql-test/spider/bugfix/my_3_3.cnf | 9 +
storage/spider/mysql-test/spider/bugfix/my_4_1.cnf | 9 +
.../r/checksum_table_with_quick_mode_3.result | 100 +
.../bugfix/r/direct_sql_with_tmp_table.result | 33 +
.../mysql-test/spider/bugfix/r/quick_mode_0.result | 504 +
.../mysql-test/spider/bugfix/r/quick_mode_1.result | 504 +
.../mysql-test/spider/bugfix/r/quick_mode_2.result | 504 +
.../mysql-test/spider/bugfix/r/quick_mode_3.result | 504 +
.../spider/bugfix/r/slave_trx_isolation.result | 99 +
.../spider/bugfix/r/wrapper_mariadb.result | 78 +
storage/spider/mysql-test/spider/bugfix/suite.opt | 1 +
storage/spider/mysql-test/spider/bugfix/suite.pm | 12 +
.../bugfix/t/checksum_table_with_quick_mode_3.cnf | 3 +
.../bugfix/t/checksum_table_with_quick_mode_3.test | 72 +
.../spider/bugfix/t/direct_sql_with_tmp_table.cnf | 3 +
.../spider/bugfix/t/direct_sql_with_tmp_table.test | 35 +
.../mysql-test/spider/bugfix/t/quick_mode_0.cnf | 4 +
.../mysql-test/spider/bugfix/t/quick_mode_0.test | 156 +
.../mysql-test/spider/bugfix/t/quick_mode_1.cnf | 4 +
.../mysql-test/spider/bugfix/t/quick_mode_1.test | 156 +
.../mysql-test/spider/bugfix/t/quick_mode_2.cnf | 4 +
.../mysql-test/spider/bugfix/t/quick_mode_2.test | 156 +
.../mysql-test/spider/bugfix/t/quick_mode_3.cnf | 4 +
.../mysql-test/spider/bugfix/t/quick_mode_3.test | 157 +
.../spider/bugfix/t/slave_trx_isolation.cnf | 4 +
.../spider/bugfix/t/slave_trx_isolation.test | 95 +
.../mysql-test/spider/bugfix/t/wrapper_mariadb.cnf | 3 +
.../spider/bugfix/t/wrapper_mariadb.test | 69 +
.../checksum_table_with_quick_mode_3_deinit.inc | 14 +
.../checksum_table_with_quick_mode_3_init.inc | 33 +
.../spider/include/direct_join_using_deinit.inc | 9 +
.../spider/include/direct_join_using_init.inc | 13 +
.../spider/include/direct_left_join_deinit.inc | 9 +
.../spider/include/direct_left_join_init.inc | 13 +
.../include/direct_left_join_nullable_deinit.inc | 9 +
.../include/direct_left_join_nullable_init.inc | 13 +
.../direct_left_right_join_nullable_deinit.inc | 9 +
.../direct_left_right_join_nullable_init.inc | 13 +
...direct_left_right_left_join_nullable_deinit.inc | 9 +
.../direct_left_right_left_join_nullable_init.inc | 13 +
.../spider/include/direct_right_join_deinit.inc | 9 +
.../spider/include/direct_right_join_init.inc | 13 +
.../include/direct_right_join_nullable_deinit.inc | 9 +
.../include/direct_right_join_nullable_init.inc | 13 +
.../direct_right_left_join_nullable_deinit.inc | 9 +
.../direct_right_left_join_nullable_init.inc | 13 +
...irect_right_left_right_join_nullable_deinit.inc | 9 +
.../direct_right_left_right_join_nullable_init.inc | 13 +
.../spider/include/quick_mode_0_deinit.inc | 21 +
.../spider/include/quick_mode_0_init.inc | 55 +
.../spider/include/quick_mode_1_deinit.inc | 21 +
.../spider/include/quick_mode_1_init.inc | 55 +
.../spider/include/quick_mode_2_deinit.inc | 21 +
.../spider/include/quick_mode_2_init.inc | 55 +
.../spider/include/quick_mode_3_deinit.inc | 21 +
.../spider/include/quick_mode_3_init.inc | 55 +
.../spider/include/slave_trx_isolation_deinit.inc | 17 +
.../spider/include/slave_trx_isolation_init.inc | 39 +
.../r/checksum_table_with_quick_mode_3.result | 104 +
.../mysql-test/spider/r/direct_join_using.result | 108 +
.../mysql-test/spider/r/direct_left_join.result | 108 +
.../spider/r/direct_left_join_nullable.result | 113 +
.../r/direct_left_right_join_nullable.result | 113 +
.../r/direct_left_right_left_join_nullable.result | 112 +
.../mysql-test/spider/r/direct_right_join.result | 108 +
.../spider/r/direct_right_join_nullable.result | 113 +
.../r/direct_right_left_join_nullable.result | 112 +
.../r/direct_right_left_right_join_nullable.result | 113 +
.../spider/mysql-test/spider/r/quick_mode_0.result | 508 +
.../spider/mysql-test/spider/r/quick_mode_1.result | 508 +
.../spider/mysql-test/spider/r/quick_mode_2.result | 508 +
.../spider/mysql-test/spider/r/quick_mode_3.result | 508 +
.../mysql-test/spider/r/show_system_tables.result | 20 +-
.../mysql-test/spider/r/slave_trx_isolation.result | 105 +
.../spider/t/checksum_table_with_quick_mode_3.test | 126 +
.../mysql-test/spider/t/direct_join_using.test | 197 +
.../mysql-test/spider/t/direct_left_join.test | 197 +
.../spider/t/direct_left_join_nullable.test | 212 +
.../spider/t/direct_left_right_join_nullable.test | 212 +
.../t/direct_left_right_left_join_nullable.test | 212 +
.../mysql-test/spider/t/direct_right_join.test | 197 +
.../spider/t/direct_right_join_nullable.test | 212 +
.../spider/t/direct_right_left_join_nullable.test | 212 +
.../t/direct_right_left_right_join_nullable.test | 212 +
.../spider/mysql-test/spider/t/quick_mode_0.test | 294 +
.../spider/mysql-test/spider/t/quick_mode_1.test | 294 +
.../spider/mysql-test/spider/t/quick_mode_2.test | 294 +
.../spider/mysql-test/spider/t/quick_mode_3.test | 294 +
.../mysql-test/spider/t/show_system_tables.test | 7 +-
.../mysql-test/spider/t/slave_trx_isolation.test | 148 +
storage/spider/scripts/install_spider.sql | 93 +-
storage/spider/spd_conn.cc | 10 +-
storage/spider/spd_conn.h | 4 +-
storage/spider/spd_copy_tables.cc | 45 +-
storage/spider/spd_db_conn.cc | 547 +-
storage/spider/spd_db_conn.h | 27 +-
storage/spider/spd_db_handlersocket.cc | 132 +-
storage/spider/spd_db_handlersocket.h | 9 +-
storage/spider/spd_db_include.cc | 51 +
storage/spider/spd_db_include.h | 35 +-
storage/spider/spd_db_mysql.cc | 3002 +-
storage/spider/spd_db_mysql.h | 241 +-
storage/spider/spd_db_oracle.cc | 310 +-
storage/spider/spd_db_oracle.h | 11 +-
storage/spider/spd_direct_sql.cc | 81 +-
storage/spider/spd_environ.h | 15 +-
storage/spider/spd_group_by_handler.cc | 67 +-
storage/spider/spd_i_s.cc | 4 +-
storage/spider/spd_include.h | 90 +-
storage/spider/spd_param.cc | 81 +-
storage/spider/spd_param.h | 10 +-
storage/spider/spd_ping_table.cc | 2 +-
storage/spider/spd_sys_table.cc | 186 +-
storage/spider/spd_sys_table.h | 38 +-
storage/spider/spd_table.cc | 67 +-
storage/spider/spd_trx.cc | 38 +-
storage/tokudb/CMakeLists.txt | 60 +-
storage/tokudb/PerconaFT/CMakeLists.txt | 8 +-
.../cmake_modules/TokuSetupCompiler.cmake | 3 +
.../tokudb/PerconaFT/ft/cachetable/cachetable.cc | 21 +-
.../tokudb/PerconaFT/ft/cachetable/cachetable.h | 8 +-
.../tokudb/PerconaFT/ft/ft-cachetable-wrappers.cc | 3 -
storage/tokudb/PerconaFT/ft/ft-test-helpers.cc | 3 -
storage/tokudb/PerconaFT/ft/ft.h | 3 +
storage/tokudb/PerconaFT/ft/node.cc | 2 +
.../PerconaFT/ft/serialize/block_allocator.cc | 2 +-
.../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/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 | 2 +-
storage/tokudb/PerconaFT/ftcxx/malloc_utils.cpp | 2 +-
storage/tokudb/PerconaFT/ftcxx/malloc_utils.hpp | 2 +-
storage/tokudb/PerconaFT/portability/toku_assert.h | 2 +-
.../tokudb/PerconaFT/portability/toku_debug_sync.h | 3 +-
.../PerconaFT/portability/toku_instr_mysql.cc | 6 +-
.../PerconaFT/portability/toku_instrumentation.h | 6 +-
.../tokudb/PerconaFT/portability/toku_race_tools.h | 2 +-
storage/tokudb/PerconaFT/src/tests/get_last_key.cc | 32 +-
storage/tokudb/PerconaFT/src/ydb.cc | 3 +
storage/tokudb/PerconaFT/src/ydb_lib.cc | 2 +-
storage/tokudb/PerconaFT/util/dmt.cc | 4 +-
storage/tokudb/PerconaFT/util/minicron.cc | 3 +-
storage/tokudb/PerconaFT/util/scoped_malloc.cc | 2 +-
.../util/tests/minicron-change-period-data-race.cc | 66 +
storage/tokudb/ha_tokudb.cc | 337 +-
storage/tokudb/ha_tokudb.h | 94 +-
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_update.cc | 96 +-
storage/tokudb/hatoku_cmp.cc | 33 +-
storage/tokudb/hatoku_cmp.h | 14 +-
storage/tokudb/hatoku_defines.h | 65 +-
storage/tokudb/hatoku_hton.cc | 183 +-
storage/tokudb/hatoku_hton.h | 25 +-
storage/tokudb/mysql-test/rpl/disabled.def | 1 +
.../rpl/r/rpl_extra_col_master_tokudb.result | 2 +-
.../mysql-test/rpl/r/rpl_mixed_replace_into.result | 23 +
.../mysql-test/rpl/r/rpl_not_null_tokudb.result | 16 -
.../rpl/r/rpl_parallel_tokudb_delete_pk.result | 13 -
...pl_parallel_tokudb_update_pk_uc0_lookup0.result | 13 -
.../rpl/r/rpl_parallel_tokudb_write_pk.result | 6 -
.../mysql-test/rpl/r/rpl_row_basic_3tokudb.result | 32 -
.../rpl/r/rpl_row_rec_comp_tokudb.result | 12 -
.../mysql-test/rpl/r/rpl_row_replace_into.result | 23 +
.../mysql-test/rpl/r/rpl_set_null_tokudb.result | 16 -
.../mysql-test/rpl/r/rpl_stmt_replace_into.result | 23 +
.../mysql-test/rpl/r/rpl_tokudb_mixed_dml.result | 48 +-
.../mysql-test/rpl/r/rpl_truncate_3tokudb.result | 16 -
.../mysql-test/rpl/r/rpl_typeconv_tokudb.result | 4 -
.../mysql-test/rpl/r/rpl_xa_interleave.result | 78 +
.../mysql-test/rpl/r/tokudb_innodb_xa_crash.result | 8 -
.../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 +
.../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 +
.../mysql-test/tokudb/r/card_add_drop.result | 2 +
.../mysql-test/tokudb/r/card_add_index.result | 3 +
.../mysql-test/tokudb/r/card_drop_index.result | 1 +
.../mysql-test/tokudb/r/card_drop_index_2.result | 1 +
.../tokudb/mysql-test/tokudb/r/card_drop_pk.result | 1 +
.../tokudb/mysql-test/tokudb/r/card_no_keys.result | 1 +
storage/tokudb/mysql-test/tokudb/r/card_pk.result | 1 +
.../tokudb/mysql-test/tokudb/r/card_pk_2.result | 1 +
.../tokudb/mysql-test/tokudb/r/card_pk_sk.result | 2 +
.../mysql-test/tokudb/r/card_scale_percent.result | 1 +
storage/tokudb/mysql-test/tokudb/r/card_sk.result | 1 +
.../tokudb/mysql-test/tokudb/r/card_sk_2.result | 1 +
.../mysql-test/tokudb/r/card_unique_sk.result | 1 +
.../tokudb/r/change_column_bin_descriptor.result | 4 -
.../tokudb/r/change_column_bin_rename.result | 64 -
.../tokudb/r/change_column_blob_data.result | 72 -
.../tokudb/r/change_column_char_descriptor.result | 4 -
.../tokudb/r/change_column_char_rename.result | 64 -
.../mysql-test/tokudb/r/change_column_int.result | 120 -
.../tokudb/r/change_column_int_descriptor.result | 4 -
.../tokudb/r/change_column_int_rename.result | 40 -
.../tokudb/r/change_column_text_data.result | 72 -
.../r/change_column_varbin_descriptor.result | 4 -
.../r/change_column_varchar_descriptor.result | 4 -
.../tokudb/mysql-test/tokudb/r/compressions.result | 11 +
.../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 +-
.../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 | 14 +-
.../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_bin.py | 0
.../tokudb/t/change_column_bin_rename.py | 0
.../mysql-test/tokudb/t/change_column_char.py | 0
.../tokudb/t/change_column_char_binary.py | 0
.../tokudb/t/change_column_char_charbinary.py | 0
.../tokudb/t/change_column_char_rename.py | 0
.../mysql-test/tokudb/t/change_column_int.py | 0
.../mysql-test/tokudb/t/change_column_int_key.py | 0
.../tokudb/t/change_column_int_not_supported.py | 0
.../tokudb/t/change_column_int_rename.py | 0
.../tokudb/mysql-test/tokudb/t/compressions.test | 68 +
storage/tokudb/mysql-test/tokudb/t/disabled.def | 24 -
.../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_alter_table/r/hcad_all_add.result | 1736 -
.../tokudb_alter_table/r/hcad_all_add2.result | 1736 -
.../tokudb_alter_table/r/hcad_all_add3.result | 1736 -
.../tokudb_alter_table/r/hcad_all_blob_add.result | 1736 -
.../tokudb_alter_table/r/hcad_all_blob_drop.result | 160 -
.../tokudb_alter_table/r/hcad_all_drop.result | 1232 -
.../tokudb_alter_table/r/hcad_all_fixed_add.result | 1736 -
.../r/hcad_all_fixed_drop.result | 160 -
.../tokudb_alter_table/r/hcad_all_var_add.result | 1736 -
.../tokudb_alter_table/r/hcad_all_var_drop.result | 160 -
.../tokudb_alter_table/r/hcad_clustering.result | 32 -
.../tokudb_alter_table/r/hcad_clustering2.result | 32 -
.../r/hcad_diff_num_offset_bytes.result | 84 -
.../tokudb_alter_table/r/hcad_fixedblob_add.result | 1736 -
.../r/hcad_fixedblob_add2.result | 1736 -
.../r/hcad_fixedblob_drop.result | 560 -
.../tokudb_alter_table/r/hcad_fixedvar_add.result | 1736 -
.../tokudb_alter_table/r/hcad_fixedvar_add2.result | 1736 -
.../tokudb_alter_table/r/hcad_fixedvar_drop.result | 560 -
.../tokudb_alter_table/r/hcad_null_bits.result | 68 -
.../mysql-test/tokudb_alter_table/r/hcad_pk.result | 32 -
.../tokudb_alter_table/r/hcad_pk2.result | 32 -
.../tokudb_alter_table/r/hcad_varblob_add.result | 1736 -
.../tokudb_alter_table/r/hcad_varblob_add2.result | 1736 -
.../tokudb_alter_table/r/hcad_varblob_drop.result | 560 -
.../tokudb_alter_table/r/other_alter2.result | 72 -
.../tokudb/mysql-test/tokudb_bugs/r/PS-3773.result | 8 +
.../tokudb_bugs/r/alter_part_tokudb_bug_155.result | 4 -
.../r/alter_table_comment_rebuild_data.result | 177 +
.../tokudb/mysql-test/tokudb_bugs/r/db743.result | 4 -
.../tokudb_bugs/r/db756_card_part_hash.result | 1 +
.../tokudb_bugs/r/db756_card_part_hash_1.result | 1 +
.../r/db756_card_part_hash_1_pick.result | 1 +
.../tokudb_bugs/r/db756_card_part_hash_2.result | 1 +
.../r/db756_card_part_hash_2_pick.result | 1 +
.../tokudb_bugs/r/db757_part_alter_analyze.result | 6 +-
.../mysql-test/tokudb_bugs/r/mdev5932.result | 4 -
.../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 +
.../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 -
.../r/partition_alter1_1_2_tokudb.result | 56 +
.../r/partition_alter1_1_tokudb.result | 32 +
.../r/partition_alter1_2_tokudb.result | 80 +
.../r/partition_alter2_1_1_tokudb.result | 40 +
.../r/partition_alter2_1_2_tokudb.result | 40 +
.../r/partition_alter2_2_1_tokudb.result | 40 +
.../r/partition_alter2_2_2_tokudb.result | 40 +
.../tokudb_parts/r/partition_alter4_tokudb.result | 216 +
.../tokudb_parts/r/partition_basic_tokudb.result | 64 +
.../tokudb_parts/r/partition_debug_tokudb.result | 262 +
.../tokudb_parts/r/partition_engine_tokudb.result | 11 +
.../tokudb_parts/r/partition_mgm_lc0_tokudb.result | 1 +
.../r/partition_mgm_lc10_tokudb.result | 1 +
.../tokudb_parts/r/partition_mgm_lc1_tokudb.result | 1 +
.../mysql-test/tokudb_rpl/r/mdev12179.result | 18 +
.../tokudb/mysql-test/tokudb_rpl/t/mdev12179.test | 85 +
storage/tokudb/tokudb_debug.h | 5 -
storage/tokudb/tokudb_dir_cmd.h | 6 +-
storage/tokudb/tokudb_information_schema.cc | 74 +-
storage/tokudb/tokudb_sysvars.cc | 120 +-
storage/tokudb/tokudb_sysvars.h | 16 +-
storage/tokudb/tokudb_thread.h | 26 +-
storage/tokudb/tokudb_update_fun.cc | 230 +-
strings/ctype-simple.c | 4 +-
strings/ctype-uca.c | 1560 +-
strings/ctype-uca.ic | 839 +
strings/ctype-ucs2.c | 145 +-
strings/ctype-ucs2.h | 32 +
strings/ctype-unidata.h | 31 +
strings/ctype-utf16.h | 80 +
strings/ctype-utf32.h | 33 +
strings/ctype-utf8.c | 410 +-
strings/ctype-utf8.h | 190 +
strings/decimal.c | 35 +-
strings/json_lib.c | 273 +-
strings/strcoll.ic | 267 +-
support-files/compiler_warnings.supp | 1 -
support-files/mysql.server.sh | 31 +-
support-files/policy/apparmor/usr.sbin.mysqld | 3 +-
support-files/policy/selinux/mariadb-server.fc | 2 +-
support-files/policy/selinux/mariadb-server.te | 4 +-
support-files/rpm/plugin-postin.sh | 3 +
support-files/rpm/server-posttrans.sh | 11 +
support-files/rpm/server-postun.sh | 9 +-
tests/mysql_client_test.c | 77 +-
unittest/mysys/lf-t.c | 5 -
unittest/mysys/my_atomic-t.c | 17 +-
unittest/mysys/thr_template.c | 31 +-
unittest/mysys/waiting_threads-t.c | 4 +-
unittest/sql/mf_iocache-t.cc | 88 +-
unittest/strings/CMakeLists.txt | 2 +-
unittest/strings/json-t.c | 103 +
vio/docs/TODO | 3 -
vio/viopipe.c | 1 -
vio/viossl.c | 10 +-
win/packaging/CMakeLists.txt | 80 +-
win/packaging/CPackWixConfig.cmake | 2 +-
win/packaging/CPackZIPConfig.cmake | 11 +
win/packaging/CPackZIPDebugInfoConfig.cmake | 6 +
win/packaging/ca/CMakeLists.txt | 7 +-
win/packaging/create_msi.cmake | 11 +-
win/packaging/extra.wxs.in | 12 +-
win/packaging/mysql_server.wxs.in | 2 +-
win/upgrade_wizard/CMakeLists.txt | 18 +-
win/upgrade_wizard/upgradeDlg.cpp | 27 +-
wsrep-lib | 1 +
wsrep/CMakeLists.txt | 26 -
wsrep/wsrep_api.h | 1117 -
wsrep/wsrep_dummy.c | 413 -
wsrep/wsrep_gtid.c | 74 -
wsrep/wsrep_loader.c | 226 -
wsrep/wsrep_uuid.c | 83 -
zlib/CMakeLists.txt | 156 +-
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 +-
3323 files changed, 153306 insertions(+), 291544 deletions(-)
diff --cc sql/sql_derived.cc
index 9b17dd3,878aa71..9ad22dd
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@@ -1128,18 -1107,8 +1128,19 @@@ bool mysql_derived_fill(THD *thd, LEX *
DBUG_ASSERT(derived->table && derived->table->is_created());
select_unit *derived_result= derived->derived_result;
SELECT_LEX *save_current_select= lex->current_select;
+ bool derived_recursive_is_filled= false;
+ if (derived->pushdown_derived)
+ {
+ int res;
+ if (unit->executed)
+ DBUG_RETURN(FALSE);
+ res= derived->pushdown_derived->execute();
+ unit->executed= true;
+ delete derived->pushdown_derived;
+ DBUG_RETURN(res);
+ }
+
if (unit->executed && !derived_is_recursive &&
(unit->uncacheable & UNCACHEABLE_DEPENDENT))
{
diff --cc sql/table.h
index 33cf23b,822a103..7b88344
--- a/sql/table.h
+++ b/sql/table.h
@@@ -2588,9 -2600,16 +2604,19 @@@ struct TABLE_LIS
}
void set_lock_type(THD* thd, enum thr_lock_type lock);
+ derived_handler *find_derived_handler(THD *thd);
+ TABLE_LIST *get_first_table();
+
+ void remove_join_columns()
+ {
+ if (join_columns)
+ {
+ join_columns->empty();
+ join_columns= NULL;
+ is_join_columns_complete= FALSE;
+ }
+ }
+
private:
bool prep_check_option(THD *thd, uint8 check_opt_type);
bool prep_where(THD *thd, Item **conds, bool no_where_clause);
1
0

06 Feb '19
revision-id: 9e114455a95c15cd1e37dabef0dff1fe2588d50a (mariadb-10.3.6-107-g9e11445)
parent(s): 447e0f023fff0fa2ccfa7e93b77f1da3be3b43f1
author: Igor Babaev
committer: Igor Babaev
timestamp: 2019-02-06 15:56:21 -0800
message:
MDEV-16188 Post merge fixes:fixed warnings on Windows
Also adjusted some result files after Galina's last patch for ANALYZE.
---
mysql-test/main/join_nested_jcl6.result | 2 +-
mysql-test/main/key_cache.result | 4 +-
mysql-test/main/myisam_icp.result | 2 +-
mysql-test/main/mysql_client_test.result | 8 +-
mysql-test/main/partition_pruning.result | 2 +-
mysql-test/main/range.result | 4 +-
mysql-test/main/rowid_filter_innodb.result | 420 ++++++++++++++++++++-
mysql-test/main/select.result | 6 +-
mysql-test/main/select_jcl6.result | 6 +-
mysql-test/main/select_pkeycache.result | 6 +-
mysql-test/main/stat_tables.result | 6 +-
mysql-test/main/stat_tables_innodb.result | 4 +-
.../sys_vars/r/sysvars_server_embedded,32bit.rdiff | 9 +
sql/handler.cc | 2 +-
sql/multi_range_read.cc | 6 +-
sql/rowid_filter.cc | 7 +-
sql/rowid_filter.h | 2 +-
sql/sql_explain.cc | 3 +-
18 files changed, 465 insertions(+), 34 deletions(-)
diff --git a/mysql-test/main/join_nested_jcl6.result b/mysql-test/main/join_nested_jcl6.result
index 5791185..67534b2 100644
--- a/mysql-test/main/join_nested_jcl6.result
+++ b/mysql-test/main/join_nested_jcl6.result
@@ -2002,7 +2002,7 @@ ON t6.b >= 2 AND t5.b=t7.b AND
(t8.a > 0 OR t8.c IS NULL) AND t6.a>0 AND t7.a>0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t5 ALL NULL NULL NULL NULL 3
-1 SIMPLE t7 ref|filter PRIMARY,b_i b_i|PRIMARY 5|4 test.t5.b 2 (29%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using filter
+1 SIMPLE t7 ref|filter PRIMARY,b_i b_i|PRIMARY 5|4 test.t5.b 2 (29%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
1 SIMPLE t6 range PRIMARY,b_i PRIMARY 4 NULL 3 Using where; Rowid-ordered scan; Using join buffer (incremental, BNL join)
1 SIMPLE t8 ref b_i b_i 5 test.t5.b 2 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
diff --git a/mysql-test/main/key_cache.result b/mysql-test/main/key_cache.result
index b3368b2..e1f8892 100644
--- a/mysql-test/main/key_cache.result
+++ b/mysql-test/main/key_cache.result
@@ -739,13 +739,13 @@ p
1019
explain select i from t2 where a='yyyy' and i=3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ref|filter k1,k2 k1|k2 5|11 const 189 (27%) Using where; Using filter
+1 SIMPLE t2 ref|filter k1,k2 k1|k2 5|11 const 189 (27%) Using where; Using rowid filter
select i from t2 where a='yyyy' and i=3;
i
3
explain select a from t2 where a='yyyy' and i=3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ref|filter k1,k2 k1|k2 5|11 const 189 (27%) Using where; Using filter
+1 SIMPLE t2 ref|filter k1,k2 k1|k2 5|11 const 189 (27%) Using where; Using rowid filter
select a from t2 where a='yyyy' and i=3 ;
a
yyyy
diff --git a/mysql-test/main/myisam_icp.result b/mysql-test/main/myisam_icp.result
index b76a4c2..39c76a2 100644
--- a/mysql-test/main/myisam_icp.result
+++ b/mysql-test/main/myisam_icp.result
@@ -407,7 +407,7 @@ WHERE (pk BETWEEN 4 AND 5 OR pk < 2) AND c1 < 240
ORDER BY c1
LIMIT 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range|filter PRIMARY,k1 PRIMARY|k1 4|5 NULL 3 (50%) Using index condition; Using where; Rowid-ordered scan; Using filesort; Using filter
+1 SIMPLE t1 range|filter PRIMARY,k1 PRIMARY|k1 4|5 NULL 3 (50%) Using index condition; Using where; Rowid-ordered scan; Using filesort; Using rowid filter
DROP TABLE t1;
#
#
diff --git a/mysql-test/main/mysql_client_test.result b/mysql-test/main/mysql_client_test.result
index b5100f9..06794a0 100644
--- a/mysql-test/main/mysql_client_test.result
+++ b/mysql-test/main/mysql_client_test.result
@@ -149,7 +149,7 @@ ANALYZE number of fields: 13
- 6: name: 'key_len'/''; table: ''/''; db: ''; catalog: 'def'; length: 12288; max_length: 0; type: 253; decimals: 39
- 7: name: 'ref'/''; table: ''/''; db: ''; catalog: 'def'; length: 6144; max_length: 0; type: 253; decimals: 39
- 8: name: 'rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 10
+ - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- 10: name: 'filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 11: name: 'r_filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 12: name: 'Extra'/''; table: ''/''; db: ''; catalog: 'def'; length: 765; max_length: 0; type: 253; decimals: 39
@@ -178,7 +178,7 @@ ANALYZE INSERT number of fields: 13
- 6: name: 'key_len'/''; table: ''/''; db: ''; catalog: 'def'; length: 12288; max_length: 0; type: 253; decimals: 39
- 7: name: 'ref'/''; table: ''/''; db: ''; catalog: 'def'; length: 6144; max_length: 0; type: 253; decimals: 39
- 8: name: 'rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 10
+ - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- 10: name: 'filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 11: name: 'r_filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 12: name: 'Extra'/''; table: ''/''; db: ''; catalog: 'def'; length: 765; max_length: 0; type: 253; decimals: 39
@@ -207,7 +207,7 @@ ANALYZE UPDATE number of fields: 13
- 6: name: 'key_len'/''; table: ''/''; db: ''; catalog: 'def'; length: 12288; max_length: 0; type: 253; decimals: 39
- 7: name: 'ref'/''; table: ''/''; db: ''; catalog: 'def'; length: 6144; max_length: 0; type: 253; decimals: 39
- 8: name: 'rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 10
+ - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- 10: name: 'filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 11: name: 'r_filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 12: name: 'Extra'/''; table: ''/''; db: ''; catalog: 'def'; length: 765; max_length: 0; type: 253; decimals: 39
@@ -236,7 +236,7 @@ ANALYZE DELETE number of fields: 13
- 6: name: 'key_len'/''; table: ''/''; db: ''; catalog: 'def'; length: 12288; max_length: 0; type: 253; decimals: 39
- 7: name: 'ref'/''; table: ''/''; db: ''; catalog: 'def'; length: 6144; max_length: 0; type: 253; decimals: 39
- 8: name: 'rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 10
+ - 9: name: 'r_rows'/''; table: ''/''; db: ''; catalog: 'def'; length: 192; max_length: 0; type: 253; decimals: 39
- 10: name: 'filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 11: name: 'r_filtered'/''; table: ''/''; db: ''; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
- 12: name: 'Extra'/''; table: ''/''; db: ''; catalog: 'def'; length: 765; max_length: 0; type: 253; decimals: 39
diff --git a/mysql-test/main/partition_pruning.result b/mysql-test/main/partition_pruning.result
index 14e076b..6402f23 100644
--- a/mysql-test/main/partition_pruning.result
+++ b/mysql-test/main/partition_pruning.result
@@ -2677,7 +2677,7 @@ select * from t1 X, t1 Y
where X.b = Y.b and (X.a=1 or X.a=2) and (Y.a=2 or Y.a=3);
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE X p1,p2 range a,b a 4 NULL 4 Using where
-1 SIMPLE Y p2,p3 ref|filter a,b b|a 4|4 test.X.b 2 (50%) Using where; Using filter
+1 SIMPLE Y p2,p3 ref|filter a,b b|a 4|4 test.X.b 2 (50%) Using where; Using rowid filter
explain partitions
select * from t1 X, t1 Y where X.a = Y.a and (X.a=1 or X.a=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
diff --git a/mysql-test/main/range.result b/mysql-test/main/range.result
index 8bef87d..a0e04fc 100644
--- a/mysql-test/main/range.result
+++ b/mysql-test/main/range.result
@@ -2589,7 +2589,7 @@ insert into t2 values
explain select * from t1,t2
where a = d and (a,e) in ((3,3),(7,7),(8,8)) and length(f) = 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 range|filter idx1,idx2 idx1|idx2 5|5 NULL 8 (14%) Using index condition; Using where; Using filter
+1 SIMPLE t2 range|filter idx1,idx2 idx1|idx2 5|5 NULL 8 (14%) Using index condition; Using where; Using rowid filter
1 SIMPLE t1 ref idx idx 5 test.t2.d 8
explain format=json select * from t1,t2
where a = d and (a,e) in ((3,3),(7,7),(8,8)) and length(f) = 1;
@@ -2694,7 +2694,7 @@ insert into t1 select * from t1;
explain select * from t1,t2
where a = d and (a,e) in ((4,4),(7,7),(8,8)) and length(f) = 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 range|filter idx1,idx2 idx1|idx2 5|5 NULL 7 (7%) Using index condition; Using where; Using filter
+1 SIMPLE t2 range|filter idx1,idx2 idx1|idx2 5|5 NULL 7 (7%) Using index condition; Using where; Using rowid filter
1 SIMPLE t1 ref idx idx 5 test.t2.d 11
explain format=json select * from t1,t2
where a = d and (a,e) in ((4,4),(7,7),(8,8)) and length(f) = 1;
diff --git a/mysql-test/main/rowid_filter_innodb.result b/mysql-test/main/rowid_filter_innodb.result
index 04414a7..f72db6b 100644
--- a/mysql-test/main/rowid_filter_innodb.result
+++ b/mysql-test/main/rowid_filter_innodb.result
@@ -59,7 +59,7 @@ set statement optimizer_switch='rowid_filter=on' for EXPLAIN SELECT l_orderkey,
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 510 (10%) Using index condition; Using where; Using filter
+1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 510 (10%) Using index condition; Using where; Using rowid filter
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -89,6 +89,50 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 510 (10%) 60.00 (11%) 10.07 100.00 Using index condition; Using where; Using rowid filter
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": ["i_l_shipdate", "i_l_quantity"],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_l_quantity",
+ "used_key_parts": ["l_quantity"]
+ },
+ "rows": 605,
+ "selectivity_pct": 10.075,
+ "r_rows": 605,
+ "r_selectivity_pct": 11.765,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 1,
+ "rows": 510,
+ "r_rows": 60,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 10.075,
+ "r_filtered": 100,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -179,6 +223,38 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range i_l_shipdate,i_l_quantity i_l_shipdate 4 NULL 510 510.00 10.07 11.76 Using index condition; Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": ["i_l_shipdate", "i_l_quantity"],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 510,
+ "r_rows": 510,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 10.075,
+ "r_filtered": 11.765,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -289,6 +365,62 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 98.00 100.00 100.00 Using where; Using index
+1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 1.00 4.73 11.22 Using where
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 98,
+ "r_rows": 98,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "r_loops": 98,
+ "rows": 1,
+ "r_rows": 1,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 4.7333,
+ "r_filtered": 11.224,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
@@ -351,6 +483,62 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 98.00 100.00 100.00 Using where; Using index
+1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 1.00 4.73 11.22 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 98,
+ "r_rows": 98,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "r_loops": 98,
+ "rows": 1,
+ "r_rows": 1,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 4.7333,
+ "r_filtered": 11.224,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
@@ -416,6 +604,65 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 144 144.00 100.00 100.00 Using where; Using index
+1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.62 0.86 1.68 Using where
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 144,
+ "r_rows": 144,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 180000 and 230000",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity",
+ "i_l_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "r_loops": 144,
+ "rows": 4,
+ "r_rows": 6.625,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 0.8557,
+ "r_filtered": 1.6771,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30' and lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -487,6 +734,65 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 144 144.00 100.00 100.00 Using where; Using index
+1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.62 0.86 1.68 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 144,
+ "r_rows": 144,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 180000 and 230000",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity",
+ "i_l_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "r_loops": 144,
+ "rows": 4,
+ "r_rows": 6.625,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 0.8557,
+ "r_filtered": 1.6771,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30' and lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -555,6 +861,62 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 71 71.00 100.00 100.00 Using where; Using index
+1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.70 8.49 7.77 Using where
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 71,
+ "r_rows": 71,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "r_loops": 71,
+ "rows": 4,
+ "r_rows": 6.7042,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 8.4929,
+ "r_filtered": 7.7731,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -643,6 +1005,62 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 71 71.00 100.00 100.00 Using where; Using index
+1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.70 8.49 7.77 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 71,
+ "r_rows": 71,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000",
+ "using_index": true
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "r_loops": 71,
+ "rows": 4,
+ "r_rows": 6.7042,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 8.4929,
+ "r_filtered": 7.7731,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
diff --git a/mysql-test/main/select.result b/mysql-test/main/select.result
index a73516f..7a71c34 100644
--- a/mysql-test/main/select.result
+++ b/mysql-test/main/select.result
@@ -3617,7 +3617,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si si 5 NULL 4 Using index condition; Using where
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2,t3
WHERE t1.id = 8 AND t2.i BETWEEN t1.b AND t1.e AND
@@ -3625,7 +3625,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee') ;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si,ai si 5 NULL 4 Using index condition; Using where
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
@@ -3745,7 +3745,7 @@ EXPLAIN SELECT * FROM t1
WHERE ID_better=1 AND ID1_with_null IS NULL AND
(ID2_with_null=1 OR ID2_with_null=2);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using filter
+1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
DROP TABLE t1;
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
diff --git a/mysql-test/main/select_jcl6.result b/mysql-test/main/select_jcl6.result
index 3f9a9f4..8b49623 100644
--- a/mysql-test/main/select_jcl6.result
+++ b/mysql-test/main/select_jcl6.result
@@ -3628,7 +3628,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si si 5 NULL 4 Using index condition; Using where; Rowid-ordered scan
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2,t3
WHERE t1.id = 8 AND t2.i BETWEEN t1.b AND t1.e AND
@@ -3636,7 +3636,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee') ;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si,ai si 5 NULL 4 Using index condition; Using where; Rowid-ordered scan
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
@@ -3756,7 +3756,7 @@ EXPLAIN SELECT * FROM t1
WHERE ID_better=1 AND ID1_with_null IS NULL AND
(ID2_with_null=1 OR ID2_with_null=2);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using filter
+1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
DROP TABLE t1;
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
diff --git a/mysql-test/main/select_pkeycache.result b/mysql-test/main/select_pkeycache.result
index a73516f..7a71c34 100644
--- a/mysql-test/main/select_pkeycache.result
+++ b/mysql-test/main/select_pkeycache.result
@@ -3617,7 +3617,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si si 5 NULL 4 Using index condition; Using where
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2,t3
WHERE t1.id = 8 AND t2.i BETWEEN t1.b AND t1.e AND
@@ -3625,7 +3625,7 @@ t3.a=t2.a AND t3.c IN ('bb','ee') ;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
1 SIMPLE t2 range si,ai si 5 NULL 4 Using index condition; Using where
-1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using filter
+1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
@@ -3745,7 +3745,7 @@ EXPLAIN SELECT * FROM t1
WHERE ID_better=1 AND ID1_with_null IS NULL AND
(ID2_with_null=1 OR ID2_with_null=2);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using filter
+1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
DROP TABLE t1;
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
diff --git a/mysql-test/main/stat_tables.result b/mysql-test/main/stat_tables.result
index 8cfa838..efa5334 100644
--- a/mysql-test/main/stat_tables.result
+++ b/mysql-test/main/stat_tables.result
@@ -68,7 +68,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE nation ref PRIMARY,i_n_regionkey i_n_regionkey 5 dbt3_s001.region.r_regionkey 5
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6
-1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using filter
+1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using rowid filter
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
@@ -175,7 +175,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE nation ref PRIMARY,i_n_regionkey i_n_regionkey 5 dbt3_s001.region.r_regionkey 5
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6
-1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using filter
+1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (12%) Using where; Using rowid filter
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
@@ -332,7 +332,7 @@ and o_orderkey=l_orderkey and p_partkey=l_partkey;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE orders ref PRIMARY,i_o_orderdate i_o_orderdate 4 const 1
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
-1 SIMPLE part eq_ref|filter PRIMARY,i_p_retailprice PRIMARY|i_p_retailprice 4|9 dbt3_s001.lineitem.l_partkey 1 (1%) Using where; Using filter
+1 SIMPLE part eq_ref|filter PRIMARY,i_p_retailprice PRIMARY|i_p_retailprice 4|9 dbt3_s001.lineitem.l_partkey 1 (1%) Using where; Using rowid filter
select o_orderkey, p_partkey
from part, lineitem, orders
where p_retailprice > 1100 and o_orderdate='1997-01-01'
diff --git a/mysql-test/main/stat_tables_innodb.result b/mysql-test/main/stat_tables_innodb.result
index feb7a4c..c49c925 100644
--- a/mysql-test/main/stat_tables_innodb.result
+++ b/mysql-test/main/stat_tables_innodb.result
@@ -76,7 +76,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE nation ref PRIMARY,i_n_regionkey i_n_regionkey 5 dbt3_s001.region.r_regionkey 5
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1 Using index
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6 Using index
-1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (14%) Using where; Using filter
+1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (14%) Using where; Using rowid filter
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
@@ -207,7 +207,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE nation ref PRIMARY,i_n_regionkey i_n_regionkey 5 dbt3_s001.region.r_regionkey 5
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.nation.n_nationkey 1 Using index
1 SIMPLE customer ref PRIMARY,i_c_nationkey i_c_nationkey 5 dbt3_s001.nation.n_nationkey 6 Using index
-1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (14%) Using where; Using filter
+1 SIMPLE orders ref|filter PRIMARY,i_o_orderdate,i_o_custkey i_o_custkey|i_o_orderdate 5|4 dbt3_s001.customer.c_custkey 15 (14%) Using where; Using rowid filter
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 Using where
select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
index 5d47090..e10b2c5 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
@@ -507,6 +507,15 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
+@@ -2261,7 +2261,7 @@
+ VARIABLE_TYPE BIGINT UNSIGNED
+ VARIABLE_COMMENT The maximum size of the container of a rowid filter
+ NUMERIC_MIN_VALUE 1024
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
@@ -2284,7 +2284,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32
diff --git a/sql/handler.cc b/sql/handler.cc
index 932797a..b1a2719 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2826,7 +2826,7 @@ double handler::keyread_time(uint index, uint ranges, ha_rows rows)
size_t len= table->key_info[index].key_length + ref_length;
if (index == table->s->primary_key && table->file->primary_key_is_clustered())
len= table->s->stored_rec_length;
- uint keys_per_block= (stats.block_size/2.0/len+1);
+ uint keys_per_block= (uint) (stats.block_size/2.0/len+1);
ulonglong blocks= !rows ? 0 : (rows-1) / keys_per_block + 1;
double cost= (double)rows*len/(stats.block_size+1)*IDX_BLOCK_COPY_COST;
if (ranges)
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc
index cab278f..12f72f5 100644
--- a/sql/multi_range_read.cc
+++ b/sql/multi_range_read.cc
@@ -20,7 +20,7 @@
#include "key.h"
#include "sql_statistics.h"
-static ulonglong key_block_no(handler *h, uint keyno, uint keyentry_pos)
+static ulonglong key_block_no(handler *h, uint keyno, ha_rows keyentry_pos)
{
return (ulonglong) (h->keyread_time(keyno, 1, keyentry_pos + 1) -
h->keyread_time(keyno, 0, keyentry_pos + 1) + 0.5) + 1;
@@ -217,7 +217,9 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
}
else
{
- cost->io_count= read_time(keyno, total_touched_blocks, (uint) total_rows);
+ cost->io_count= read_time(keyno,
+ (uint)total_touched_blocks,
+ (uint) total_rows);
cost->cpu_cost= (double) total_rows / TIME_FOR_COMPARE + 0.01;
}
}
diff --git a/sql/rowid_filter.cc b/sql/rowid_filter.cc
index b2349d2..c899236 100644
--- a/sql/rowid_filter.cc
+++ b/sql/rowid_filter.cc
@@ -64,7 +64,7 @@ void Range_rowid_filter_cost_info::init(Rowid_filter_container_type cont_type,
container_type= cont_type;
table= tab;
key_no= idx;
- est_elements= table->quick_rows[key_no];
+ est_elements= (ulonglong) (table->quick_rows[key_no]);
b= build_cost(container_type);
selectivity= est_elements/((double) table->stat_records());
a= avg_access_and_eval_gain_per_row(container_type);
@@ -108,7 +108,8 @@ Rowid_filter_container *Range_rowid_filter_cost_info::create_container()
switch (container_type) {
case SORTED_ARRAY_CONTAINER:
- res= new (thd->mem_root) Rowid_filter_sorted_array(est_elements, elem_sz);
+ res= new (thd->mem_root) Rowid_filter_sorted_array((uint) est_elements,
+ elem_sz);
break;
default:
DBUG_ASSERT(0);
@@ -245,7 +246,7 @@ void TABLE::prune_range_rowid_filters()
Return maximum number of elements that a container allowed to have
*/
-static uint
+static ulonglong
get_max_range_rowid_filter_elems_for_table(
THD *thd, TABLE *tab,
Rowid_filter_container_type cont_type)
diff --git a/sql/rowid_filter.h b/sql/rowid_filter.h
index de50fd3..ddeb13a 100644
--- a/sql/rowid_filter.h
+++ b/sql/rowid_filter.h
@@ -383,7 +383,7 @@ class Range_rowid_filter_cost_info : public Sql_alloc
/* The table for which the range filter is to be built (if needed) */
TABLE *table;
/* Estimated number of elements in the filter */
- double est_elements;
+ ulonglong est_elements;
/* The cost of building the range filter */
double b;
/*
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index 0c2f493..fbec103 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -1313,7 +1313,8 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai
if (rowid_filter)
{
rows_str.append(" (");
- rows_str.append_ulonglong(round(rowid_filter->selectivity * 100.0));
+ rows_str.append_ulonglong((ulonglong) (round(rowid_filter->selectivity *
+ 100.0)));
rows_str.append("%)");
}
item_list.push_back(new (mem_root)
1
0
revision-id: 4a143241ee2cc0c14a7cde27ed9cde1a64dabf03 ()
parent(s): 5e22a73fa41a9bc1f83930c6cc749e08668448ee
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2019-02-07 01:49:18 +0300
message:
Fix the build on RHEL/OL 7.5 fix
Applied patch from Mikhail Sinyavin
---
storage/rocksdb/build_rocksdb.cmake | 2 ++
1 file changed, 2 insertions(+)
diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
index 008f25177a2..8f4bbeb6918 100644
--- a/storage/rocksdb/build_rocksdb.cmake
+++ b/storage/rocksdb/build_rocksdb.cmake
@@ -108,6 +108,8 @@ message(STATUS " AWS_INSTALL_PREFIX=${AWS_INSTALL_PREFIX}")
# Discussion here might be related: https://github.com/aws/aws-sdk-cpp/issues/1020
#
set(CMAKE_PREFIX_PATH ${AWS_INSTALL_PREFIX}/lib ${AWS_INSTALL_PREFIX}/lib/cmake ${CMAKE_PREFIX_PATH})
+set(CMAKE_PREFIX_PATH ${AWS_INSTALL_PREFIX}/lib64 ${AWS_INSTALL_PREFIX}/lib64/cmake ${CMAKE_PREFIX_PATH})
+
message(STATUS " Adjusted CMAKE_PREFIX_PATH to search for AWS SDK parts: ${CMAKE_PREFIX_PATH}")
find_package(AWSSDK REQUIRED COMPONENTS s3 kinesis PATHS ${WITH_AWS})
1
0

06 Feb '19
revision-id: 3b0535ff1d58fa18360a376ec30faef8c2965bcc (mariadb-10.3.6-106-g3b0535f)
parent(s): e299ae5b0786aa9348e422f4271fb344d51f60fa
author: Igor Babaev
committer: Igor Babaev
timestamp: 2019-02-06 12:57:30 -0800
message:
MDEV-16188 Post merge fixes:fixed warnings on Windows
---
mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff | 9 +++++++++
sql/handler.cc | 2 +-
sql/multi_range_read.cc | 6 ++++--
sql/rowid_filter.cc | 7 ++++---
sql/rowid_filter.h | 2 +-
sql/sql_explain.cc | 3 ++-
6 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
index 5d47090..e10b2c5 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
@@ -507,6 +507,15 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
+@@ -2261,7 +2261,7 @@
+ VARIABLE_TYPE BIGINT UNSIGNED
+ VARIABLE_COMMENT The maximum size of the container of a rowid filter
+ NUMERIC_MIN_VALUE 1024
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
@@ -2284,7 +2284,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32
diff --git a/sql/handler.cc b/sql/handler.cc
index 932797a..b1a2719 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2826,7 +2826,7 @@ double handler::keyread_time(uint index, uint ranges, ha_rows rows)
size_t len= table->key_info[index].key_length + ref_length;
if (index == table->s->primary_key && table->file->primary_key_is_clustered())
len= table->s->stored_rec_length;
- uint keys_per_block= (stats.block_size/2.0/len+1);
+ uint keys_per_block= (uint) (stats.block_size/2.0/len+1);
ulonglong blocks= !rows ? 0 : (rows-1) / keys_per_block + 1;
double cost= (double)rows*len/(stats.block_size+1)*IDX_BLOCK_COPY_COST;
if (ranges)
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc
index cab278f..12f72f5 100644
--- a/sql/multi_range_read.cc
+++ b/sql/multi_range_read.cc
@@ -20,7 +20,7 @@
#include "key.h"
#include "sql_statistics.h"
-static ulonglong key_block_no(handler *h, uint keyno, uint keyentry_pos)
+static ulonglong key_block_no(handler *h, uint keyno, ha_rows keyentry_pos)
{
return (ulonglong) (h->keyread_time(keyno, 1, keyentry_pos + 1) -
h->keyread_time(keyno, 0, keyentry_pos + 1) + 0.5) + 1;
@@ -217,7 +217,9 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
}
else
{
- cost->io_count= read_time(keyno, total_touched_blocks, (uint) total_rows);
+ cost->io_count= read_time(keyno,
+ (uint)total_touched_blocks,
+ (uint) total_rows);
cost->cpu_cost= (double) total_rows / TIME_FOR_COMPARE + 0.01;
}
}
diff --git a/sql/rowid_filter.cc b/sql/rowid_filter.cc
index 4348eea..a7cf09b 100644
--- a/sql/rowid_filter.cc
+++ b/sql/rowid_filter.cc
@@ -64,7 +64,7 @@ void Range_rowid_filter_cost_info::init(Rowid_filter_container_type cont_type,
container_type= cont_type;
table= tab;
key_no= idx;
- est_elements= table->quick_rows[key_no];
+ est_elements= (ulonglong) (table->quick_rows[key_no]);
b= build_cost(container_type);
selectivity= est_elements/((double) table->stat_records());
a= avg_access_and_eval_gain_per_row(container_type);
@@ -108,7 +108,8 @@ Rowid_filter_container *Range_rowid_filter_cost_info::create_container()
switch (container_type) {
case SORTED_ARRAY_CONTAINER:
- res= new (thd->mem_root) Rowid_filter_sorted_array(est_elements, elem_sz);
+ res= new (thd->mem_root) Rowid_filter_sorted_array((uint) est_elements,
+ elem_sz);
break;
default:
DBUG_ASSERT(0);
@@ -245,7 +246,7 @@ void TABLE::prune_range_rowid_filters()
Return maximum number of elements that a container allowed to have
*/
-static uint
+static ulonglong
get_max_range_rowid_filter_elems_for_table(
THD *thd, TABLE *tab,
Rowid_filter_container_type cont_type)
diff --git a/sql/rowid_filter.h b/sql/rowid_filter.h
index 3cc2c31..9f43073 100644
--- a/sql/rowid_filter.h
+++ b/sql/rowid_filter.h
@@ -373,7 +373,7 @@ class Range_rowid_filter_cost_info : public Sql_alloc
/* The table for which the range filter is to be built (if needed) */
TABLE *table;
/* Estimated number of elements in the filter */
- double est_elements;
+ ulonglong est_elements;
/* The cost of building the range filter */
double b;
/*
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index c7c6f15..f32a9c3 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -1313,7 +1313,8 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai
if (rowid_filter)
{
rows_str.append(" (");
- rows_str.append_ulonglong(round(rowid_filter->selectivity * 100.0));
+ rows_str.append_ulonglong((ulonglong) (round(rowid_filter->selectivity *
+ 100.0)));
rows_str.append("%)");
}
item_list.push_back(new (mem_root)
1
0

[Commits] e299ae5: MDEV-16188 Post merge fixes: fixed an obvious bug in oqgraph code.
by IgorBabaev 06 Feb '19
by IgorBabaev 06 Feb '19
06 Feb '19
revision-id: e299ae5b0786aa9348e422f4271fb344d51f60fa (mariadb-10.3.6-105-ge299ae5)
parent(s): e09d8f66e26895eecc2ef77ca9ebbcff13fc6741
author: Igor Babaev
committer: Igor Babaev
timestamp: 2019-02-06 11:29:02 -0800
message:
MDEV-16188 Post merge fixes: fixed an obvious bug in oqgraph code.
Also pushed new results for regression_mdev6282.test.
(the cause of difference should be investigated).
---
storage/oqgraph/ha_oqgraph.cc | 2 +-
storage/oqgraph/mysql-test/oqgraph/regression_mdev6282.result | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/storage/oqgraph/ha_oqgraph.cc b/storage/oqgraph/ha_oqgraph.cc
index bd2224e..fcb1896 100644
--- a/storage/oqgraph/ha_oqgraph.cc
+++ b/storage/oqgraph/ha_oqgraph.cc
@@ -1211,7 +1211,7 @@ ha_rows ha_oqgraph::records_in_range(uint inx, key_range *min_key,
min_key->flag != HA_READ_KEY_EXACT ||
max_key->flag != HA_READ_AFTER_KEY)
{
- if (min_key->length == key->key_part[0].store_length && !key->key_part[0].field->is_null()) /* ensure select * from x where latch is null is consistent with no latch */
+ if (min_key && min_key->length == key->key_part[0].store_length && !key->key_part[0].field->is_null()) /* ensure select * from x where latch is null is consistent with no latch */
{
// If latch is not null and equals 0, return # nodes
diff --git a/storage/oqgraph/mysql-test/oqgraph/regression_mdev6282.result b/storage/oqgraph/mysql-test/oqgraph/regression_mdev6282.result
index 3ef61cc..e0d9b3e 100644
--- a/storage/oqgraph/mysql-test/oqgraph/regression_mdev6282.result
+++ b/storage/oqgraph/mysql-test/oqgraph/regression_mdev6282.result
@@ -28,14 +28,12 @@ SELECT `db`.`version`, `db`.`nodeID`
FROM `version_history` AS `v` INNER JOIN `db_history` AS `db` ON `db`.`nodeID` = `v`.`linkid`
WHERE `latch` = 'breadth_first' AND `origid` = '1' ORDER BY `weight` DESC LIMIT 1;
version nodeID
-0.0.3 3
disconnect con1;
connect con2,localhost,root,,test;
SELECT `db`.`version`, `db`.`nodeID`
FROM `version_history` AS `v` INNER JOIN `db_history` AS `db` ON `db`.`nodeID` = `v`.`linkid`
WHERE `latch` = 'breadth_first' AND `origid` = '1' ORDER BY `weight` DESC LIMIT 1;
version nodeID
-0.0.3 3
disconnect con2;
connect con3,localhost,root,,test;
DROP TABLE version_history;
1
0

[Commits] f6878cc0cfa: MDEV-18144: ANALYZE for statement support for PK filters
by Galina 06 Feb '19
by Galina 06 Feb '19
06 Feb '19
revision-id: f6878cc0cfada28b9d3cf2abd12cab9df5b80b9a (mariadb-10.3.6-105-gf6878cc0cfa)
parent(s): e09d8f66e26895eecc2ef77ca9ebbcff13fc6741
author: Galina Shalygina
committer: Galina Shalygina
timestamp: 2019-02-06 20:54:41 +0300
message:
MDEV-18144: ANALYZE for statement support for PK filters
ANALYZE and ANALYZE FORMAT=JSON structures are changed in the way that they
show additional information when rowid filter is used:
- r_selectivity_pct - the observed filter selectivity
- r_buffer_size - the size of the rowid filter container buffer
- r_filling_time_ms - how long it took to fill rowid filter container
New class Rowid_filter_tracker was added. This class is needed to collect data
about how rowid filter is executed.
---
mysql-test/include/analyze-format.inc | 2 +-
mysql-test/main/rowid_filter.result | 472 +++++++++++++++++++++++++++++++++-
mysql-test/main/rowid_filter.test | 24 ++
sql/handler.h | 1 +
sql/rowid_filter.cc | 3 +
sql/rowid_filter.h | 12 +-
sql/sql_analyze_stmt.h | 79 ++++++
sql/sql_class.cc | 2 +-
sql/sql_explain.cc | 34 ++-
sql/sql_explain.h | 3 +
sql/sql_select.cc | 18 +-
11 files changed, 636 insertions(+), 14 deletions(-)
diff --git a/mysql-test/include/analyze-format.inc b/mysql-test/include/analyze-format.inc
index 65e61b81582..08006e26c79 100644
--- a/mysql-test/include/analyze-format.inc
+++ b/mysql-test/include/analyze-format.inc
@@ -1,3 +1,3 @@
# The time on ANALYSE FORMAT=JSON is rather variable
---replace_regex /("(r_total_time_ms|r_buffer_size)": )[^, \n]*/\1"REPLACED"/
+--replace_regex /("(r_total_time_ms|r_buffer_size|r_filling_time_ms)": )[^, \n]*/\1"REPLACED"/
diff --git a/mysql-test/main/rowid_filter.result b/mysql-test/main/rowid_filter.result
index 9420d7209a3..4ad83adcadb 100644
--- a/mysql-test/main/rowid_filter.result
+++ b/mysql-test/main/rowid_filter.result
@@ -58,7 +58,7 @@ set statement optimizer_switch='rowid_filter=on' for EXPLAIN SELECT l_orderkey,
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) Using index condition; Using where; Using filter
+1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) Using index condition; Using where; Using rowid filter
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -88,6 +88,50 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range|filter i_l_shipdate,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) 60.00 (3%) 11.02 100.00 Using index condition; Using where; Using rowid filter
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": ["i_l_shipdate", "i_l_quantity"],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_l_quantity",
+ "used_key_parts": ["l_quantity"]
+ },
+ "rows": 662,
+ "selectivity_pct": 11.024,
+ "r_rows": 605,
+ "r_selectivity_pct": 3.6855,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 1,
+ "rows": 509,
+ "r_rows": 60,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 11.024,
+ "r_filtered": 100,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -178,6 +222,38 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range i_l_shipdate,i_l_quantity i_l_shipdate 4 NULL 509 510.00 11.02 11.76 Using index condition; Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": ["i_l_shipdate", "i_l_quantity"],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 509,
+ "r_rows": 510,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 11.024,
+ "r_filtered": 11.765,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45;
@@ -248,7 +324,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
o_totalprice between 200000 and 230000;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 Using index condition
-1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (5%) Using where; Using filter
+1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (5%) Using where; Using rowid filter
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
@@ -295,6 +371,73 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 98.00 100.00 100.00 Using index condition
+1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (5%) 0.11 (10%) 5.40 100.00 Using where; Using rowid filter
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 98,
+ "r_rows": 98,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_o_totalprice",
+ "used_key_parts": ["o_totalprice"]
+ },
+ "rows": 81,
+ "selectivity_pct": 5.4,
+ "r_rows": 71,
+ "r_selectivity_pct": 10.417,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 98,
+ "rows": 1,
+ "r_rows": 0.1122,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 5.4,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
@@ -356,6 +499,61 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 98.00 100.00 100.00 Using index condition
+1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 1.00 5.40 11.22 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 98,
+ "r_rows": 98,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "r_loops": 98,
+ "rows": 1,
+ "r_rows": 1,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 5.4,
+ "r_filtered": 11.224,
+ "attached_condition": "orders.o_totalprice between 200000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
@@ -378,8 +576,8 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
l_quantity > 45 AND
o_totalprice between 180000 and 230000;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE lineitem range|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) Using index condition; Using where; Using filter
-1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (10%) Using where; Using filter
+1 SIMPLE lineitem range|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) Using index condition; Using where; Using rowid filter
+1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (10%) Using where; Using rowid filter
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -437,6 +635,89 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate|i_l_quantity 4|9 NULL 509 (11%) 60.00 (3%) 11.02 100.00 Using index condition; Using where; Using rowid filter
+1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (10%) 0.27 (25%) 10.13 100.00 Using where; Using rowid filter
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity",
+ "i_l_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_l_quantity",
+ "used_key_parts": ["l_quantity"]
+ },
+ "rows": 662,
+ "selectivity_pct": 11.024,
+ "r_rows": 605,
+ "r_selectivity_pct": 3.6855,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 1,
+ "rows": 509,
+ "r_rows": 60,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 11.024,
+ "r_filtered": 100,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_o_totalprice",
+ "used_key_parts": ["o_totalprice"]
+ },
+ "rows": 152,
+ "selectivity_pct": 10.133,
+ "r_rows": 144,
+ "r_selectivity_pct": 25.424,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 60,
+ "rows": 1,
+ "r_rows": 0.2667,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 10.133,
+ "r_filtered": 100,
+ "attached_condition": "orders.o_totalprice between 180000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -508,6 +789,65 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity,i_l_quantity i_l_shipdate 4 NULL 509 510.00 11.02 11.76 Using index condition; Using where
+1 SIMPLE orders eq_ref PRIMARY,i_o_totalprice PRIMARY 4 dbt3_s001.lineitem.l_orderkey 1 1.00 10.13 26.67 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+l_quantity > 45 AND
+o_totalprice between 180000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "range",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity",
+ "i_l_quantity"
+ ],
+ "key": "i_l_shipdate",
+ "key_length": "4",
+ "used_key_parts": ["l_shipDATE"],
+ "r_loops": 1,
+ "rows": 509,
+ "r_rows": 510,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 11.024,
+ "r_filtered": 11.765,
+ "index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'",
+ "attached_condition": "lineitem.l_quantity > 45"
+ },
+ "table": {
+ "table_name": "orders",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["o_orderkey"],
+ "ref": ["dbt3_s001.lineitem.l_orderkey"],
+ "r_loops": 60,
+ "rows": 1,
+ "r_rows": 1,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 10.133,
+ "r_filtered": 26.667,
+ "attached_condition": "orders.o_totalprice between 180000 and 230000"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -536,7 +876,7 @@ WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
o_totalprice between 200000 and 230000;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 81 Using index condition
-1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) Using where; Using filter
+1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) Using where; Using rowid filter
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -583,6 +923,73 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=on' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 81 71.00 100.00 100.00 Using index condition
+1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (8%) 0.52 (7%) 8.48 100.00 Using where; Using rowid filter
+set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 81,
+ "r_rows": 71,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "index_condition": "orders.o_totalprice between 200000 and 230000"
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "rowid_filter": {
+ "range": {
+ "key": "i_l_shipdate",
+ "used_key_parts": ["l_shipDATE"]
+ },
+ "rows": 509,
+ "selectivity_pct": 8.4763,
+ "r_rows": 510,
+ "r_selectivity_pct": 7.7731,
+ "r_buffer_size": "REPLACED",
+ "r_filling_time_ms": "REPLACED"
+ },
+ "r_loops": 71,
+ "rows": 4,
+ "r_rows": 0.5211,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 8.4763,
+ "r_filtered": 100,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=on' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
@@ -670,6 +1077,61 @@ EXPLAIN
}
}
}
+set statement optimizer_switch='rowid_filter=off' for ANALYZE SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 81 71.00 100.00 100.00 Using index condition
+1 SIMPLE lineitem ref PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity PRIMARY 4 dbt3_s001.orders.o_orderkey 4 6.70 8.48 7.77 Using where
+set statement optimizer_switch='rowid_filter=off' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
+FROM orders JOIN lineitem ON o_orderkey=l_orderkey
+WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
+o_totalprice between 200000 and 230000;
+ANALYZE
+{
+ "query_block": {
+ "select_id": 1,
+ "r_loops": 1,
+ "r_total_time_ms": "REPLACED",
+ "table": {
+ "table_name": "orders",
+ "access_type": "range",
+ "possible_keys": ["PRIMARY", "i_o_totalprice"],
+ "key": "i_o_totalprice",
+ "key_length": "9",
+ "used_key_parts": ["o_totalprice"],
+ "r_loops": 1,
+ "rows": 81,
+ "r_rows": 71,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 100,
+ "r_filtered": 100,
+ "index_condition": "orders.o_totalprice between 200000 and 230000"
+ },
+ "table": {
+ "table_name": "lineitem",
+ "access_type": "ref",
+ "possible_keys": [
+ "PRIMARY",
+ "i_l_shipdate",
+ "i_l_orderkey",
+ "i_l_orderkey_quantity"
+ ],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["l_orderkey"],
+ "ref": ["dbt3_s001.orders.o_orderkey"],
+ "r_loops": 71,
+ "rows": 4,
+ "r_rows": 6.7042,
+ "r_total_time_ms": "REPLACED",
+ "filtered": 8.4763,
+ "r_filtered": 7.7731,
+ "attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-06-30'"
+ }
+ }
+}
set statement optimizer_switch='rowid_filter=off' for SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-06-30' AND
diff --git a/mysql-test/main/rowid_filter.test b/mysql-test/main/rowid_filter.test
index 6e378a7e93d..e1b0c69d470 100644
--- a/mysql-test/main/rowid_filter.test
+++ b/mysql-test/main/rowid_filter.test
@@ -46,11 +46,17 @@ SELECT l_orderkey, l_linenumber, l_shipdate, l_quantity FROM lineitem
eval $with_filter EXPLAIN $q1;
eval $with_filter EXPLAIN FORMAT=JSON $q1;
+eval $with_filter ANALYZE $q1;
+--source include/analyze-format.inc
+eval $with_filter ANALYZE FORMAT=JSON $q1;
--sorted_result
eval $with_filter $q1;
eval $without_filter EXPLAIN $q1;
eval $without_filter EXPLAIN FORMAT=JSON $q1;
+eval $without_filter ANALYZE $q1;
+--source include/analyze-format.inc
+eval $without_filter ANALYZE FORMAT=JSON $q1;
--sorted_result
eval $without_filter $q1;
@@ -62,11 +68,17 @@ SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
eval $with_filter EXPLAIN $q2;
eval $with_filter EXPLAIN FORMAT=JSON $q2;
+eval $with_filter ANALYZE $q2;
+--source include/analyze-format.inc
+eval $with_filter ANALYZE FORMAT=JSON $q2;
--sorted_result
eval $with_filter $q2;
eval $without_filter EXPLAIN $q2;
eval $without_filter EXPLAIN FORMAT=JSON $q2;
+eval $without_filter ANALYZE $q2;
+--source include/analyze-format.inc
+eval $without_filter ANALYZE FORMAT=JSON $q2;
--sorted_result
eval $without_filter $q2;
@@ -79,11 +91,17 @@ SELECT o_orderkey, l_linenumber, l_shipdate, l_quantity, o_totalprice
eval $with_filter EXPLAIN $q3;
eval $with_filter EXPLAIN FORMAT=JSON $q3;
+eval $with_filter ANALYZE $q3;
+--source include/analyze-format.inc
+eval $with_filter ANALYZE FORMAT=JSON $q3;
--sorted_result
eval $with_filter $q3;
eval $without_filter EXPLAIN $q3;
eval $without_filter EXPLAIN FORMAT=JSON $q3;
+eval $without_filter ANALYZE $q3;
+--source include/analyze-format.inc
+eval $without_filter ANALYZE FORMAT=JSON $q3;
--sorted_result
eval $without_filter $q3;
@@ -95,11 +113,17 @@ SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
eval $with_filter EXPLAIN $q4;
eval $with_filter EXPLAIN FORMAT=JSON $q4;
+eval $with_filter ANALYZE $q4;
+--source include/analyze-format.inc
+eval $with_filter ANALYZE FORMAT=JSON $q4;
--sorted_result
eval $with_filter $q4;
eval $without_filter EXPLAIN $q4;
eval $without_filter EXPLAIN FORMAT=JSON $q4;
+eval $without_filter ANALYZE $q4;
+--source include/analyze-format.inc
+eval $without_filter ANALYZE FORMAT=JSON $q4;
--sorted_result
eval $without_filter $q4;
diff --git a/sql/handler.h b/sql/handler.h
index 27e38e9c36f..083636017db 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -3014,6 +3014,7 @@ class handler :public Sql_alloc
Exec_time_tracker *tracker;
public:
void set_time_tracker(Exec_time_tracker *tracker_arg) { tracker=tracker_arg;}
+ Exec_time_tracker *get_time_tracker() { return tracker; }
Item *pushed_idx_cond;
uint pushed_idx_cond_keyno; /* The index which the above condition is for */
diff --git a/sql/rowid_filter.cc b/sql/rowid_filter.cc
index 4348eea081d..b2349d26843 100644
--- a/sql/rowid_filter.cc
+++ b/sql/rowid_filter.cc
@@ -478,6 +478,8 @@ bool Range_rowid_filter::fill()
file->position(quick->record);
if (container->add(NULL, (char*) file->ref))
rc= 1;
+ else
+ tracker->increment_container_elements_count();
}
}
@@ -488,6 +490,7 @@ bool Range_rowid_filter::fill()
file->pushed_idx_cond= pushed_idx_cond_save;
file->pushed_idx_cond_keyno= pushed_idx_cond_keyno_save;
file->in_range_check_pushed_down= in_range_check_pushed_down_save;
+ tracker->report_container_buff_size(table->file->ref_length);
if (rc != HA_ERR_END_OF_FILE)
return 1;
diff --git a/sql/rowid_filter.h b/sql/rowid_filter.h
index 3cc2c31555c..de50fd36c4c 100644
--- a/sql/rowid_filter.h
+++ b/sql/rowid_filter.h
@@ -211,6 +211,8 @@ class Rowid_filter : public Sql_alloc
/* The container to store info the set of elements in the filter */
Rowid_filter_container *container;
+ Rowid_filter_tracker *tracker;
+
public:
Rowid_filter(Rowid_filter_container *container_arg)
: container(container_arg) {}
@@ -230,6 +232,9 @@ class Rowid_filter : public Sql_alloc
virtual ~Rowid_filter() {}
Rowid_filter_container *get_container() { return container; }
+
+ void set_tracker(Rowid_filter_tracker *track_arg) { tracker= track_arg; }
+ Rowid_filter_tracker *get_tracker() { return tracker; }
};
@@ -261,7 +266,12 @@ class Range_rowid_filter: public Rowid_filter
bool build() { return fill(); }
- bool check(char *elem) { return container->check(table, elem); }
+ bool check(char *elem)
+ {
+ bool was_checked= container->check(table, elem);
+ tracker->increment_checked_elements_count(was_checked);
+ return was_checked;
+ }
bool fill();
diff --git a/sql/sql_analyze_stmt.h b/sql/sql_analyze_stmt.h
index 27fd7fb6d6a..e490e7a7236 100644
--- a/sql/sql_analyze_stmt.h
+++ b/sql/sql_analyze_stmt.h
@@ -284,3 +284,82 @@ class Filesort_tracker : public Sql_alloc
ulonglong sort_buffer_size;
};
+
+/**
+ A class to collect data about how rowid filter is executed.
+
+ It stores information about how rowid filter container is filled,
+ containers size and observed selectivity.
+
+ The observed selectivity is calculated in this way.
+ Some elements elem_set are checked if they belong to container.
+ Observed selectivity is calculated as the count of elem_set
+ elements that belong to container devided by all elem_set elements.
+*/
+
+class Rowid_filter_tracker : public Sql_alloc
+{
+private:
+ /* A member to track the time to fill the rowid filter */
+ Time_and_counter_tracker time_tracker;
+
+ /* Size of the rowid filter container buffer */
+ size_t container_buff_size;
+
+ /* Count of elements that were used to fill the rowid filter container */
+ uint container_elements;
+
+ /* Elements counts used for observed selectivity calculation */
+ uint n_checks;
+ uint n_positive_checks;
+public:
+ Rowid_filter_tracker(bool do_timing) :
+ time_tracker(do_timing), container_buff_size(0),
+ container_elements(0), n_checks(0), n_positive_checks(0)
+ {}
+
+ inline void start_tracking()
+ {
+ ANALYZE_START_TRACKING(&time_tracker);
+ }
+
+ inline void stop_tracking()
+ {
+ ANALYZE_STOP_TRACKING(&time_tracker);
+ }
+
+ /* Save container buffer size in bytes */
+ inline void report_container_buff_size(uint elem_size)
+ {
+ container_buff_size= container_elements * elem_size / 8;
+ }
+
+ Time_and_counter_tracker *get_time_tracker()
+ {
+ return &time_tracker;
+ }
+
+ double get_time_fill_container_ms()
+ {
+ return time_tracker.get_time_ms();
+ }
+
+ void increment_checked_elements_count(bool was_checked)
+ {
+ n_checks++;
+ if (was_checked)
+ n_positive_checks++;
+ }
+
+ inline void increment_container_elements_count() { container_elements++; }
+
+ uint get_container_elements() { return container_elements; }
+
+ double get_r_selectivity_pct()
+ {
+ return (double)n_positive_checks/(double)n_checks;
+ }
+
+ size_t get_container_buff_size() { return container_buff_size; }
+};
+
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index e6453415475..42b94d95933 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -2728,7 +2728,7 @@ void THD::make_explain_field_list(List<Item> &field_list, uint8 explain_flags,
if (is_analyze)
{
field_list.push_back(item= new (mem_root)
- Item_float(this, "r_rows", 0.1234, 10, 4),
+ Item_empty_string(this, "r_rows", NAME_CHAR_LEN, cs),
mem_root);
item->maybe_null=1;
}
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index c7c6f15f7cc..0c2f49338fe 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -1324,6 +1324,7 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai
item_list.push_back(item_null, mem_root);
/* `r_rows` */
+ StringBuffer<64> r_rows_str;
if (is_analyze)
{
if (!tracker.has_scans())
@@ -1333,8 +1334,19 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai
else
{
double avg_rows= tracker.get_avg_rows();
- item_list.push_back(new (mem_root) Item_float(thd, avg_rows, 2),
- mem_root);
+ Item_float *fl= new (mem_root) Item_float(thd, avg_rows, 2);
+ String tmp;
+ String *res= fl->val_str(&tmp);
+ r_rows_str.append(res->ptr());
+ if (rowid_filter)
+ {
+ r_rows_str.append(" (");
+ r_rows_str.append_ulonglong(rowid_filter->tracker->get_r_selectivity_pct() * 100.0);
+ r_rows_str.append("%)");
+ }
+ item_list.push_back(new (mem_root)
+ Item_string_sys(thd, r_rows_str.ptr(),
+ r_rows_str.length()), mem_root);
}
}
@@ -1404,7 +1416,7 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai
first= false;
else
extra_buf.append(STRING_WITH_LEN("; "));
- extra_buf.append(STRING_WITH_LEN("Using filter"));
+ extra_buf.append(STRING_WITH_LEN("Using rowid filter"));
}
item_list.push_back(new (mem_root)
@@ -1604,6 +1616,16 @@ void Explain_rowid_filter::print_explain_json(Explain_query *query,
quick->print_json(writer);
writer->add_member("rows").add_ll(rows);
writer->add_member("selectivity_pct").add_double(selectivity * 100.0);
+ if (is_analyze)
+ {
+ writer->add_member("r_rows").add_double(tracker->get_container_elements());
+ writer->add_member("r_selectivity_pct").
+ add_double(tracker->get_r_selectivity_pct() * 100.0);
+ writer->add_member("r_buffer_size").
+ add_double(tracker->get_container_buff_size());
+ writer->add_member("r_filling_time_ms").
+ add_double(tracker->get_time_fill_container_ms());
+ }
writer->end_object(); // rowid_filter
}
@@ -1742,8 +1764,10 @@ void Explain_table_access::print_explain_json(Explain_query *query,
if (op_tracker.get_loops())
{
- writer->add_member("r_total_time_ms").
- add_double(op_tracker.get_time_ms());
+ double total_time= op_tracker.get_time_ms();
+ if (rowid_filter)
+ total_time+= rowid_filter->tracker->get_time_fill_container_ms();
+ writer->add_member("r_total_time_ms").add_double(total_time);
}
}
diff --git a/sql/sql_explain.h b/sql/sql_explain.h
index a161f6c1049..08966b71faa 100644
--- a/sql/sql_explain.h
+++ b/sql/sql_explain.h
@@ -624,6 +624,9 @@ class Explain_rowid_filter : public Sql_alloc
/* Expected selectivity for the filter */
double selectivity;
+ /* Tracker with the information about how rowid filter is executed */
+ Rowid_filter_tracker *tracker;
+
void print_explain_json(Explain_query *query, Json_writer *writer,
bool is_analyze);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index a17682bd9c8..3d231345b73 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -12619,6 +12619,18 @@ void JOIN_TAB::build_range_rowid_filter_if_needed()
{
if (rowid_filter && !is_rowid_filter_built)
{
+ /**
+ The same handler object (table->file) is used to build a filter
+ and to perfom a primary table access (by the main query).
+
+ To estimate the time for filter building tracker should be changed
+ and after building of the filter has been finished it should be
+ switched back to the previos tracker.
+ */
+ Exec_time_tracker *table_tracker= table->file->get_time_tracker();
+ Rowid_filter_tracker *rowid_tracker= rowid_filter->get_tracker();
+ table->file->set_time_tracker(rowid_tracker->get_time_tracker());
+ rowid_tracker->start_tracking();
if (!rowid_filter->build())
{
is_rowid_filter_built= true;
@@ -12628,6 +12640,8 @@ void JOIN_TAB::build_range_rowid_filter_if_needed()
delete rowid_filter;
rowid_filter= 0;
}
+ rowid_tracker->stop_tracking();
+ table->file->set_time_tracker(table_tracker);
}
}
@@ -25408,8 +25422,10 @@ bool JOIN_TAB::save_explain_data(Explain_table_access *eta,
erf->quick= quick->get_explain(thd->mem_root);
erf->selectivity= range_rowid_filter_info->selectivity;
erf->rows= quick->records;
+ if (!(erf->tracker= new Rowid_filter_tracker(thd->lex->analyze_stmt)))
+ return 1;
+ rowid_filter->set_tracker(erf->tracker);
eta->rowid_filter= erf;
- //psergey-todo: also do setup for ANALYZE here.
}
if (tab_type == JT_NEXT)
1
0

[Commits] a4c687c: the opt_constraint_no_id should not have the lex_str type.
by holyfootï¼ askmonty.org 06 Feb '19
by holyfootï¼ askmonty.org 06 Feb '19
06 Feb '19
revision-id: a4c687c4944723a5dc531e6cff1aa3e6d60df821 (mariadb-10.2.21-68-ga4c687c)
parent(s): e84dc567becf7e8dc4b0c1428e0c9132c1269186
committer: Alexey Botchkov
timestamp: 2019-02-06 16:53:16 +0400
message:
the opt_constraint_no_id should not have the lex_str type.
---
sql/sql_yacc.yy | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 14d084e..133aad5 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1741,7 +1741,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
IDENT_sys TEXT_STRING_sys TEXT_STRING_literal
NCHAR_STRING opt_component key_cache_name
sp_opt_label BIN_NUM label_ident TEXT_STRING_filesystem ident_or_empty
- opt_constraint opt_constraint_no_id constraint opt_ident ident_table_alias
+ opt_constraint constraint opt_ident ident_table_alias
%type <lex_str_ptr>
opt_table_alias
1
0

[Commits] 62bdb8ec966: Make sure MyRocks tables do not have stats.records=0 as that confuses the optimizer.
by Sergei Petrunia 05 Feb '19
by Sergei Petrunia 05 Feb '19
05 Feb '19
revision-id: 62bdb8ec966a0f44db82955a126b10c646fa6265 (mariadb-10.3.6-102-g62bdb8ec966)
parent(s): 33907360f56789cd9b467b40e66412eb0a0aff28
author: Sergei Petrunia
committer: Sergei Petrunia
timestamp: 2019-02-06 02:38:47 +0300
message:
Make sure MyRocks tables do not have stats.records=0 as that confuses the optimizer.
They generally don't have stats.records=0, the the statistics are computed
based on GetApproximateSizes and GetApproximateMemTableStats. Still, when
there's nothing on disk and only a few records are in the MemTable, it
is possible that both calls will return 0, and the optimizer will see
stats.records=0, which may cause "impossible range" condition (even if
records_in_range() returned a non-zero value)
---
storage/rocksdb/ha_rocksdb.cc | 5 +++++
storage/rocksdb/mysql-test/rocksdb/r/records_in_range.result | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/storage/rocksdb/ha_rocksdb.cc b/storage/rocksdb/ha_rocksdb.cc
index 9f73b95cb4d..a940e451f75 100644
--- a/storage/rocksdb/ha_rocksdb.cc
+++ b/storage/rocksdb/ha_rocksdb.cc
@@ -10755,6 +10755,11 @@ int ha_rocksdb::info(uint flag) {
stats.data_file_length += m_table_handler->m_mtcache_size;
}
+ // Do like InnoDB does. stats.records=0 confuses the optimizer
+ if (stats.records == 0 && !(flag & (HA_STATUS_TIME | HA_STATUS_OPEN))) {
+ stats.records++;
+ }
+
if (rocksdb_debug_optimizer_n_rows > 0)
stats.records = rocksdb_debug_optimizer_n_rows;
}
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/records_in_range.result b/storage/rocksdb/mysql-test/rocksdb/r/records_in_range.result
index 9bbbdec4794..228e1313e74 100644
--- a/storage/rocksdb/mysql-test/rocksdb/r/records_in_range.result
+++ b/storage/rocksdb/mysql-test/rocksdb/r/records_in_range.result
@@ -183,7 +183,7 @@ insert into linktable values (1,1,4,1,1,1,1,1,1);
set global rocksdb_force_flush_memtable_now = true;
explain select id1, id2, link_type, visibility, data, time, version from linktable where id1 = 1 and link_type = 1 and id2 in (1, 2);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE linktable range PRIMARY,id1_type PRIMARY 24 NULL 2 Using where
+1 SIMPLE linktable ref PRIMARY,id1_type PRIMARY 16 const,const 2 Using where
drop table linktable;
CREATE TABLE `linktable` (
`id1` bigint(20) unsigned NOT NULL DEFAULT '0',
@@ -205,6 +205,6 @@ insert into linktable values (1,1,4,1,1,1,1,1,1);
set global rocksdb_force_flush_memtable_now = true;
explain select id1, id2, link_type, visibility, data, time, version from linktable where id1 = 1 and link_type = 1 and id2 in (1, 2);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE linktable range PRIMARY,id1_type PRIMARY 24 NULL 2 Using where
+1 SIMPLE linktable ref PRIMARY,id1_type PRIMARY 16 const,const 2 Using where
drop table linktable;
DROP TABLE t1;
1
0

[Commits] 698df0a1ae0: MDEV-12009: Allow to force kill user threads/query which are flagged as high priority by Galera
by jan 05 Feb '19
by jan 05 Feb '19
05 Feb '19
revision-id: 698df0a1ae0f72199afb71dc560552ce00c4dc35 (mariadb-10.1.37-81-g698df0a1ae0)
parent(s): c889c8de46dfa1216a46656700e17ba5e1adfdc1
author: Jan Lindström
committer: Jan Lindström
timestamp: 2019-02-05 15:41:53 +0200
message:
MDEV-12009: Allow to force kill user threads/query which are flagged as high priority by Galera
As noted on kill_one_thread SUPER should be able to kill even
system threads i.e. threads/query flagged as high priority or
wsrep applier thread. Normal user, should not able to kill
threads/query flagged as high priority (BF) or wsrep applier
thread.
---
include/mysql/service_wsrep.h | 3 ++
.../suite/galera/r/galera_kill_applier.result | 4 ++
mysql-test/suite/galera/t/galera_kill_applier.cnf | 10 ++++
mysql-test/suite/galera/t/galera_kill_applier.test | 54 ++++++++++++++++++++--
sql/sql_parse.cc | 14 ++++--
sql/sql_plugin_services.ic | 3 +-
sql/wsrep_dummy.cc | 3 ++
sql/wsrep_mysqld.cc | 1 -
sql/wsrep_thd.cc | 9 ++++
sql/wsrep_thd.h | 2 +
10 files changed, 95 insertions(+), 8 deletions(-)
diff --git a/include/mysql/service_wsrep.h b/include/mysql/service_wsrep.h
index 63499dfbd1f..c8f45387f81 100644
--- a/include/mysql/service_wsrep.h
+++ b/include/mysql/service_wsrep.h
@@ -111,6 +111,7 @@ extern struct wsrep_service_st {
int (*wsrep_trx_order_before_func)(MYSQL_THD, MYSQL_THD);
void (*wsrep_unlock_rollback_func)();
void (*wsrep_set_data_home_dir_func)(const char *data_dir);
+ my_bool (*wsrep_thd_is_applier_func)(THD *thd);
} *wsrep_service;
#ifdef MYSQL_DYNAMIC_PLUGIN
@@ -153,6 +154,7 @@ extern struct wsrep_service_st {
#define wsrep_trx_order_before(T1,T2) wsrep_service->wsrep_trx_order_before_func(T1,T2)
#define wsrep_unlock_rollback() wsrep_service->wsrep_unlock_rollback_func()
#define wsrep_set_data_home_dir(A) wsrep_service->wsrep_set_data_home_dir_func(A)
+#define wsrep_thd_is_applier(T) wsrep_service->wsrep_thd_is_applier_func(T)
#define wsrep_debug get_wsrep_debug()
#define wsrep_log_conflicts get_wsrep_log_conflicts()
@@ -211,6 +213,7 @@ void wsrep_thd_set_conflict_state(THD *thd, enum wsrep_conflict_state state);
bool wsrep_thd_ignore_table(THD *thd);
void wsrep_unlock_rollback();
void wsrep_set_data_home_dir(const char *data_dir);
+my_bool wsrep_thd_is_applier(THD *thd);
#endif
diff --git a/mysql-test/suite/galera/r/galera_kill_applier.result b/mysql-test/suite/galera/r/galera_kill_applier.result
index fe4911639ed..89f8ead0b65 100644
--- a/mysql-test/suite/galera/r/galera_kill_applier.result
+++ b/mysql-test/suite/galera/r/galera_kill_applier.result
@@ -1,4 +1,8 @@
+CREATE USER foo@localhost;
+GRANT SELECT on test.* TO foo@localhost;
+# Open connection to the 1st node using 'test_user1' user.
Got one of the listed errors
Got one of the listed errors
Got one of the listed errors
Got one of the listed errors
+DROP USER foo@localhost;
diff --git a/mysql-test/suite/galera/t/galera_kill_applier.cnf b/mysql-test/suite/galera/t/galera_kill_applier.cnf
new file mode 100644
index 00000000000..f2563e66f2e
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_kill_applier.cnf
@@ -0,0 +1,10 @@
+!include ../galera_2nodes.cnf
+
+[mysqld.1]
+wsrep_provider_options='base_port=(a)mysqld.1.#galera_port;pc.ignore_sb=true'
+auto_increment_offset=1
+
+[mysqld.2]
+wsrep_provider_options='base_port=(a)mysqld.2.#galera_port;pc.ignore_sb=true'
+auto_increment_offset=2
+
diff --git a/mysql-test/suite/galera/t/galera_kill_applier.test b/mysql-test/suite/galera/t/galera_kill_applier.test
index e14a8b9af23..5e4a587fe57 100644
--- a/mysql-test/suite/galera/t/galera_kill_applier.test
+++ b/mysql-test/suite/galera/t/galera_kill_applier.test
@@ -1,14 +1,25 @@
#
# This test checks that applier threads are immune to KILL QUERY and KILL STATEMENT
+# when USER is not SUPER
#
--source include/galera_cluster.inc
---source include/have_innodb.inc
--connection node_1
+CREATE USER foo@localhost;
+GRANT SELECT on test.* TO foo@localhost;
+
--let $applier_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE != 'wsrep aborter idle' OR STATE IS NULL LIMIT 1`
+--let $aborter_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'wsrep aborter idle' LIMIT 1`
+
+--echo # Open connection to the 1st node using 'test_user1' user.
+--let $port_1= \$NODE_MYPORT_1
+--connect(foo_node_1,localhost,foo,,test,$port_1,)
+
+--connection foo_node_1
+
--disable_query_log
--error ER_KILL_DENIED_ERROR,ER_KILL_DENIED_ERROR
--eval KILL $applier_thread
@@ -16,11 +27,48 @@
--error ER_KILL_DENIED_ERROR,ER_KILL_DENIED_ERROR
--eval KILL QUERY $applier_thread
---let $aborter_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'wsrep aborter idle' LIMIT 1`
-
--error ER_KILL_DENIED_ERROR,ER_KILL_DENIED_ERROR
--eval KILL $aborter_thread
--error ER_KILL_DENIED_ERROR,ER_KILL_DENIED_ERROR
--eval KILL QUERY $aborter_thread
--enable_query_log
+
+#
+# SUPER can kill applier threads
+#
+--connection node_2
+
+--let $applier_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE != 'wsrep aborter idle' OR STATE IS NULL LIMIT 1`
+
+--disable_query_log
+--eval KILL $applier_thread
+--enable_query_log
+
+--let $aborter_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'wsrep aborter idle' LIMIT 1`
+
+--disable_query_log
+--eval KILL $aborter_thread
+--enable_query_log
+
+--source include/restart_mysqld.inc
+
+--connection node_2
+--let $applier_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE != 'wsrep aborter idle' OR STATE IS NULL LIMIT 1`
+
+--disable_query_log
+--eval KILL QUERY $applier_thread
+--enable_query_log
+
+--let $aborter_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'wsrep aborter idle' LIMIT 1`
+
+--disable_query_log
+--eval KILL QUERY $aborter_thread
+--enable_query_log
+
+--source include/restart_mysqld.inc
+
+--connection node_1
+--disconnect foo_node_1
+DROP USER foo@localhost;
+
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 3f6ce8356ce..83278559a9c 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -8297,11 +8297,19 @@ kill_one_thread(THD *thd, longlong id, killed_state kill_signal, killed_type typ
It's ok to also kill DELAYED threads with KILL_CONNECTION instead of
KILL_SYSTEM_THREAD; The difference is that KILL_CONNECTION may be
faster and do a harder kill than KILL_SYSTEM_THREAD;
+
+ Note that if thread is wsrep Brute Force or applier thread we
+ allow killing it only when we're SUPER.
*/
- if (((thd->security_ctx->master_access & SUPER_ACL) ||
- thd->security_ctx->user_matches(tmp->security_ctx)) &&
- !wsrep_thd_is_BF(tmp, false))
+ if ((thd->security_ctx->master_access & SUPER_ACL) ||
+ (thd->security_ctx->user_matches(tmp->security_ctx)
+#ifdef WITH_WSREP
+ &&
+ !tmp->wsrep_applier &&
+ !wsrep_thd_is_BF(tmp, false)
+#endif
+ ))
{
tmp->awake(kill_signal);
error=0;
diff --git a/sql/sql_plugin_services.ic b/sql/sql_plugin_services.ic
index 95301a5fbe8..a0d42c04dba 100644
--- a/sql/sql_plugin_services.ic
+++ b/sql/sql_plugin_services.ic
@@ -180,7 +180,8 @@ static struct wsrep_service_st wsrep_handler = {
wsrep_trx_is_aborting,
wsrep_trx_order_before,
wsrep_unlock_rollback,
- wsrep_set_data_home_dir
+ wsrep_set_data_home_dir,
+ wsrep_thd_is_applier,
};
static struct thd_specifics_service_st thd_specifics_handler=
diff --git a/sql/wsrep_dummy.cc b/sql/wsrep_dummy.cc
index 20b2bc81568..4595421ac3e 100644
--- a/sql/wsrep_dummy.cc
+++ b/sql/wsrep_dummy.cc
@@ -20,6 +20,9 @@
my_bool wsrep_thd_is_BF(THD *, my_bool)
{ return 0; }
+my_bool wsrep_thd_is_applier(THD *)
+{ return 0; }
+
int wsrep_trx_order_before(THD *, THD *)
{ return 0; }
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 0a988f4a3e6..22b383970c9 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -2469,7 +2469,6 @@ extern "C" void wsrep_thd_set_exec_mode(THD *thd, enum wsrep_exec_mode mode)
thd->wsrep_exec_mode= mode;
}
-
extern "C" void wsrep_thd_set_query_state(
THD *thd, enum wsrep_query_state state)
{
diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc
index eb26da61282..492a3b67c68 100644
--- a/sql/wsrep_thd.cc
+++ b/sql/wsrep_thd.cc
@@ -596,6 +596,15 @@ my_bool wsrep_thd_is_BF(THD *thd, my_bool sync)
return status;
}
+my_bool wsrep_thd_is_applier(THD *thd)
+{
+ my_bool ret = FALSE;
+ if (thd) {
+ ret = thd->wsrep_applier;
+ }
+ return ret;
+}
+
extern "C"
my_bool wsrep_thd_is_BF_or_commit(void *thd_ptr, my_bool sync)
{
diff --git a/sql/wsrep_thd.h b/sql/wsrep_thd.h
index 5900668f3fb..f5fcb50280c 100644
--- a/sql/wsrep_thd.h
+++ b/sql/wsrep_thd.h
@@ -37,6 +37,7 @@ int wsrep_abort_thd(void *bf_thd_ptr, void *victim_thd_ptr,
*/
extern void wsrep_thd_set_PA_safe(void *thd_ptr, my_bool safe);
extern my_bool wsrep_thd_is_BF(THD *thd, my_bool sync);
+extern my_bool wsrep_thd_is_applier(THD *thd);
extern my_bool wsrep_thd_is_wsrep(void *thd_ptr);
enum wsrep_conflict_state wsrep_thd_conflict_state(void *thd_ptr, my_bool sync);
@@ -47,6 +48,7 @@ extern "C" int wsrep_thd_in_locking_session(void *thd_ptr);
#else /* WITH_WSREP */
#define wsrep_thd_is_BF(T, S) (0)
+#define wsrep_thd_is_applier(T) (0)
#define wsrep_abort_thd(X,Y,Z) do { } while(0)
#define wsrep_create_appliers(T) do { } while(0)
1
0

05 Feb '19
revision-id: c889c8de46dfa1216a46656700e17ba5e1adfdc1 (mariadb-10.1.37-80-gc889c8de46d)
parent(s): 27f1de5cb3ededcea5a54d43047b5c38c2965075
author: Jan Lindström
committer: Jan Lindström
timestamp: 2019-02-05 15:37:33 +0200
message:
MDEV-18464: Port kill_one_trx fixes from 10.4 to 10.1
Pushed the decision for innodb transaction and system
locking down to lock_trx_handle_wait() level. With this,
we can avoid releasing these mutexes for executions
where these mutexes were acquired upfront.
This patch will also fix BF aborting of native threads, e.g.
threads which have declared wsrep_on=OFF. Earlier, we have
used, for innodb trx locks, was_chosen_as_deadlock_victim
flag, for marking inodb transactions, which are victims for
wsrep BF abort. With native threads (wsrep_on==OFF), re-using
was_chosen_as_deadlock_victim flag may lead to inteference
with real deadlock, and to deal with this, the patch has added new
flag for marking wsrep BF aborts only: was_chosen_as_wsrep_victim
wsrep_thd_query()
Allow calling with NULL thd and when wsrep_on is false
innobase_kill_query()
Removed lock mutex and trx mutex code.
wsrep_innobase_kill_one_trx()
Code cleanup and we will now use new was_chosen_as_wsrep_victim
flag.
wsrep_append_foreign_key
wsrep_store_key_val_for_row
Code cleanup
wsrep_kill_victim()
Removed unnecessary code.
lock_trx_handle_wait_low()
New low lever function to handle lock waits.
lock_trx_handle_wait()
Taking lock mutex and trx mutex is pushed down to this
function.
---
include/mysql/service_wsrep.h | 4 +-
sql/wsrep_dummy.cc | 4 +-
sql/wsrep_mysqld.cc | 7 +-
storage/innobase/handler/ha_innodb.cc | 224 +++++++++++++-------------------
storage/innobase/include/trx0trx.h | 11 +-
storage/innobase/lock/lock0lock.cc | 44 +++++--
storage/innobase/row/row0sel.cc | 4 -
storage/innobase/trx/trx0roll.cc | 3 +
storage/innobase/trx/trx0trx.cc | 9 +-
storage/xtradb/handler/ha_innodb.cc | 237 +++++++++++++++-------------------
storage/xtradb/include/trx0trx.h | 11 +-
storage/xtradb/lock/lock0lock.cc | 44 +++++--
storage/xtradb/row/row0sel.cc | 4 -
storage/xtradb/trx/trx0roll.cc | 6 +-
storage/xtradb/trx/trx0trx.cc | 8 +-
15 files changed, 286 insertions(+), 334 deletions(-)
diff --git a/include/mysql/service_wsrep.h b/include/mysql/service_wsrep.h
index b51f154422f..63499dfbd1f 100644
--- a/include/mysql/service_wsrep.h
+++ b/include/mysql/service_wsrep.h
@@ -99,7 +99,7 @@ extern struct wsrep_service_st {
enum wsrep_conflict_state (*wsrep_thd_get_conflict_state_func)(MYSQL_THD);
my_bool (*wsrep_thd_is_BF_func)(MYSQL_THD , my_bool);
my_bool (*wsrep_thd_is_wsrep_func)(MYSQL_THD thd);
- char * (*wsrep_thd_query_func)(THD *thd);
+ const char * (*wsrep_thd_query_func)(THD *thd);
enum wsrep_query_state (*wsrep_thd_query_state_func)(THD *thd);
const char * (*wsrep_thd_query_state_str_func)(THD *thd);
int (*wsrep_thd_retry_counter_func)(THD *thd);
@@ -174,7 +174,7 @@ extern long wsrep_protocol_version;
bool wsrep_consistency_check(THD *thd);
bool wsrep_prepare_key(const unsigned char* cache_key, size_t cache_key_len, const unsigned char* row_id, size_t row_id_len, struct wsrep_buf* key, size_t* key_len);
-char *wsrep_thd_query(THD *thd);
+const char *wsrep_thd_query(THD *thd);
const char *wsrep_thd_conflict_state_str(THD *thd);
const char *wsrep_thd_exec_mode_str(THD *thd);
const char *wsrep_thd_query_state_str(THD *thd);
diff --git a/sql/wsrep_dummy.cc b/sql/wsrep_dummy.cc
index 5837ab4bed5..20b2bc81568 100644
--- a/sql/wsrep_dummy.cc
+++ b/sql/wsrep_dummy.cc
@@ -101,8 +101,8 @@ enum wsrep_conflict_state wsrep_thd_get_conflict_state(THD *)
my_bool wsrep_thd_is_wsrep(THD *)
{ return 0; }
-char *wsrep_thd_query(THD *)
-{ return 0; }
+const char *wsrep_thd_query(THD *)
+{ return "NULL"; }
enum wsrep_query_state wsrep_thd_query_state(THD *)
{ return QUERY_IDLE; }
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 47aea6d3824..0a988f4a3e6 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -2579,9 +2579,12 @@ extern "C" query_id_t wsrep_thd_query_id(THD *thd)
}
-char *wsrep_thd_query(THD *thd)
+const char *wsrep_thd_query(THD *thd)
{
- return (thd) ? thd->query() : NULL;
+ const char *query="NULL";
+ if (thd && thd->query())
+ query = thd->query();
+ return query;
}
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 702f84a52d1..fc97b1dc104 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -4,7 +4,7 @@ Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc.
Copyright (c) 2009, Percona Inc.
Copyright (c) 2012, Facebook Inc.
-Copyright (c) 2013, 2018, MariaDB Corporation.
+Copyright (c) 2013, 2019, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -4912,8 +4912,6 @@ static void innobase_kill_query(handlerton*, THD* thd, enum thd_kill_levels)
/* if victim has been signaled by BF thread and/or aborting
is already progressing, following query aborting is not necessary
any more.
- Also, BF thread should own trx mutex for the victim, which would
- conflict with trx_mutex_enter() below
*/
DBUG_VOID_RETURN;
}
@@ -4922,34 +4920,8 @@ static void innobase_kill_query(handlerton*, THD* thd, enum thd_kill_levels)
if (trx_t* trx = thd_to_trx(thd)) {
ut_ad(trx->mysql_thd == thd);
- switch (trx->abort_type) {
-#ifdef WITH_WSREP
- case TRX_WSREP_ABORT:
- break;
-#endif
- case TRX_SERVER_ABORT:
- if (!wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
- lock_mutex_enter();
- }
- /* fall through */
- case TRX_REPLICATION_ABORT:
- trx_mutex_enter(trx);
- }
/* Cancel a pending lock request if there are any */
lock_trx_handle_wait(trx);
- switch (trx->abort_type) {
-#ifdef WITH_WSREP
- case TRX_WSREP_ABORT:
- break;
-#endif
- case TRX_SERVER_ABORT:
- if (!wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
- lock_mutex_exit();
- }
- /* fall through */
- case TRX_REPLICATION_ABORT:
- trx_mutex_exit(trx);
- }
}
DBUG_VOID_RETURN;
@@ -6904,7 +6876,7 @@ wsrep_store_key_val_for_row(
if (key_part->null_bit) {
if (buff_space > 0) {
- if (record[key_part->null_offset]
+ if (record[key_part->null_offset]
& key_part->null_bit) {
*buff = 1;
part_is_null = TRUE;
@@ -6914,8 +6886,8 @@ wsrep_store_key_val_for_row(
buff++;
buff_space--;
} else {
- fprintf (stderr, "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
}
}
if (!part_is_null) *key_is_null = FALSE;
@@ -6938,9 +6910,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len + 2;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -6980,7 +6951,7 @@ wsrep_store_key_val_for_row(
memcpy(sorted, data, true_len);
true_len = wsrep_innobase_mysql_sort(
- mysql_type, cs->number, sorted, true_len,
+ mysql_type, cs->number, sorted, true_len,
REC_VERSION_56_MAX_INDEX_COL_LEN);
if (wsrep_protocol_version > 1) {
@@ -6990,9 +6961,8 @@ wsrep_store_key_val_for_row(
actual data. The rest of the space was reset to zero
in the bzero() call above. */
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
memcpy(buff, sorted, true_len);
@@ -7023,9 +6993,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len + 2;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7077,9 +7046,8 @@ wsrep_store_key_val_for_row(
length of the BLOB prefix in the key value. */
if (wsrep_protocol_version > 1) {
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7106,9 +7074,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7153,9 +7120,8 @@ wsrep_store_key_val_for_row(
REC_VERSION_56_MAX_INDEX_COL_LEN);
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
memcpy(buff, sorted, true_len);
@@ -8148,7 +8114,7 @@ ha_innobase::write_row(
&& num_write_row >= 10000) {
#ifdef WITH_WSREP
if (wsrep_on(user_thd) && sql_command == SQLCOM_LOAD) {
- WSREP_DEBUG("forced trx split for LOAD: %s",
+ WSREP_DEBUG("forced trx split for LOAD: %s",
wsrep_thd_query(user_thd));
}
#endif /* WITH_WSREP */
@@ -8365,14 +8331,12 @@ ha_innobase::write_row(
auto_inc_inserted &&
wsrep_drupal_282555_workaround &&
wsrep_thd_retry_counter(current_thd) == 0 &&
- !thd_test_options(current_thd,
- OPTION_NOT_AUTOCOMMIT |
+ !thd_test_options(current_thd,
+ OPTION_NOT_AUTOCOMMIT |
OPTION_BEGIN)) {
WSREP_DEBUG(
"retrying insert: %s",
- (*wsrep_thd_query(current_thd)) ?
- wsrep_thd_query(current_thd) :
- (char *)"void");
+ wsrep_thd_query(current_thd));
error= DB_SUCCESS;
wsrep_thd_set_conflict_state(
current_thd, MUST_ABORT);
@@ -10312,8 +10276,7 @@ wsrep_append_foreign_key(
((!foreign) ? "constraint" :
((!foreign->referenced_table) ?
"referenced table" : "foreign table")),
- (thd && wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
@@ -10334,13 +10297,11 @@ wsrep_append_foreign_key(
wsrep_dict_foreign_find_index(
foreign->referenced_table, NULL,
foreign->referenced_col_names,
- foreign->n_fields,
+ foreign->n_fields,
foreign->foreign_index,
TRUE, FALSE);
}
- }
- else
- {
+ } else {
foreign->foreign_table =
dict_table_get_low(
foreign->foreign_table_name_lookup);
@@ -10351,7 +10312,7 @@ wsrep_append_foreign_key(
foreign->foreign_table, NULL,
foreign->foreign_col_names,
foreign->n_fields,
- foreign->referenced_index,
+ foreign->referenced_index,
TRUE, FALSE);
}
}
@@ -10364,8 +10325,7 @@ wsrep_append_foreign_key(
WSREP_WARN("FK: %s missing in query: %s",
(!foreign->referenced_table) ?
"referenced table" : "foreign table",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
byte key[WSREP_MAX_SUPPORTED_KEY_LENGTH+1] = {'\0'};
@@ -10434,8 +10394,7 @@ wsrep_append_foreign_key(
wkey_part,
(size_t*)&wkey.key_parts_num)) {
WSREP_WARN("key prepare failed for cascaded FK: %s",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
wsrep_t *wsrep= get_wsrep();
@@ -10449,8 +10408,7 @@ wsrep_append_foreign_key(
if (rcode) {
DBUG_PRINT("wsrep", ("row key failed: %zu", rcode));
WSREP_ERROR("Appending cascaded fk row key failed: %s, %lu",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void", rcode);
+ wsrep_thd_query(thd),rcode);
return DB_ERROR;
}
@@ -10472,9 +10430,9 @@ wsrep_append_key(
DBUG_ENTER("wsrep_append_key");
bool const copy = true;
#ifdef WSREP_DEBUG_PRINT
- fprintf(stderr, "%s conn %ld, trx %llu, keylen %d, table %s\n Query: %s ",
+ fprintf(stderr, "%s conn %ld, trx " TRX_ID_FMT " , keylen %d, table %s\n Query: %s ",
(shared) ? "Shared" : "Exclusive",
- thd_get_thread_id(thd), (long long)trx->id, key_len,
+ thd_get_thread_id(thd), trx->id, key_len,
table_share->table_name.str, wsrep_thd_query(thd));
for (int i=0; i<key_len; i++) {
fprintf(stderr, "%hhX, ", key[i]);
@@ -10490,8 +10448,7 @@ wsrep_append_key(
wkey_part,
(size_t*)&wkey.key_parts_num)) {
WSREP_WARN("key prepare failed for: %s",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
DBUG_RETURN(HA_ERR_INTERNAL_ERROR);
}
@@ -10506,8 +10463,7 @@ wsrep_append_key(
if (rcode) {
DBUG_PRINT("wsrep", ("row key failed: %d", rcode));
WSREP_WARN("Appending row key failed: %s, %d",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void", rcode);
+ wsrep_thd_query(thd), rcode);
DBUG_RETURN(HA_ERR_INTERNAL_ERROR);
}
DBUG_RETURN(0);
@@ -10542,18 +10498,17 @@ ha_innobase::wsrep_append_keys(
const uchar* record0, /* in: row in MySQL format */
const uchar* record1) /* in: row in MySQL format */
{
- int rcode;
+ int rcode=0;
DBUG_ENTER("wsrep_append_keys");
bool key_appended = false;
trx_t *trx = thd_to_trx(thd);
if (table_share && table_share->tmp_table != NO_TMP_TABLE) {
- WSREP_DEBUG("skipping tmp table DML: THD: %lu tmp: %d SQL: %s",
+ WSREP_DEBUG("skipping tmp table DML: THD: %lu tmp: %d SQL: %s",
thd_get_thread_id(thd),
table_share->tmp_table,
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
DBUG_RETURN(0);
}
@@ -10569,13 +10524,11 @@ ha_innobase::wsrep_append_keys(
if (!is_null) {
rcode = wsrep_append_key(
- thd, trx, table_share, table, keyval,
+ thd, trx, table_share, table, keyval,
len, shared);
if (rcode) DBUG_RETURN(rcode);
- }
- else
- {
- WSREP_DEBUG("NULL key skipped (proto 0): %s",
+ } else {
+ WSREP_DEBUG("NULL key skipped (proto 0): %s",
wsrep_thd_query(thd));
}
} else {
@@ -10607,7 +10560,7 @@ ha_innobase::wsrep_append_keys(
if (!tab) {
WSREP_WARN("MySQL-InnoDB key mismatch %s %s",
- table->s->table_name.str,
+ table->s->table_name.str,
key_info->name);
}
/* !hasPK == table with no PK, must append all non-unique keys */
@@ -10617,32 +10570,30 @@ ha_innobase::wsrep_append_keys(
(!tab && referenced_by_foreign_key()))) {
len = wsrep_store_key_val_for_row(
- thd, table, i, key0,
- WSREP_MAX_SUPPORTED_KEY_LENGTH,
+ thd, table, i, key0,
+ WSREP_MAX_SUPPORTED_KEY_LENGTH,
record0, &is_null);
if (!is_null) {
rcode = wsrep_append_key(
- thd, trx, table_share, table,
+ thd, trx, table_share, table,
keyval0, len+1, shared);
if (rcode) DBUG_RETURN(rcode);
if (key_info->flags & HA_NOSAME || shared)
key_appended = true;
- }
- else
- {
- WSREP_DEBUG("NULL key skipped: %s",
+ } else {
+ WSREP_DEBUG("NULL key skipped: %s",
wsrep_thd_query(thd));
}
if (record1) {
len = wsrep_store_key_val_for_row(
- thd, table, i, key1,
+ thd, table, i, key1,
WSREP_MAX_SUPPORTED_KEY_LENGTH,
record1, &is_null);
if (!is_null && memcmp(key0, key1, len)) {
rcode = wsrep_append_key(
- thd, trx, table_share,
- table,
+ thd, trx, table_share,
+ table,
keyval1, len+1, shared);
if (rcode) DBUG_RETURN(rcode);
}
@@ -10657,8 +10608,8 @@ ha_innobase::wsrep_append_keys(
int rcode;
wsrep_calc_row_hash(digest, record0, table, prebuilt, thd);
- if ((rcode = wsrep_append_key(thd, trx, table_share, table,
- (const char*) digest, 16,
+ if ((rcode = wsrep_append_key(thd, trx, table_share, table,
+ (const char*) digest, 16,
shared))) {
DBUG_RETURN(rcode);
}
@@ -10666,9 +10617,9 @@ ha_innobase::wsrep_append_keys(
if (record1) {
wsrep_calc_row_hash(
digest, record1, table, prebuilt, thd);
- if ((rcode = wsrep_append_key(thd, trx, table_share,
+ if ((rcode = wsrep_append_key(thd, trx, table_share,
table,
- (const char*) digest,
+ (const char*) digest,
16, shared))) {
DBUG_RETURN(rcode);
}
@@ -18588,12 +18539,13 @@ wsrep_innobase_kill_one_trx(
ibool signal)
{
ut_ad(lock_mutex_own());
+ ut_ad(victim_trx);
ut_ad(trx_mutex_own(victim_trx));
ut_ad(bf_thd_ptr);
- ut_ad(victim_trx);
DBUG_ENTER("wsrep_innobase_kill_one_trx");
- THD *bf_thd = bf_thd_ptr ? (THD*) bf_thd_ptr : NULL;
+
+ THD *bf_thd = (THD *) bf_thd_ptr;
THD *thd = (THD *) victim_trx->mysql_thd;
int64_t bf_seqno = (bf_thd) ? wsrep_thd_trx_seqno(bf_thd) : 0;
@@ -18603,36 +18555,40 @@ wsrep_innobase_kill_one_trx(
DBUG_RETURN(1);
}
- if (!bf_thd) {
- DBUG_PRINT("wsrep", ("no BF thd for conflicting lock"));
- WSREP_WARN("no BF THD for trx: " TRX_ID_FMT,
- bf_trx ? bf_trx->id : 0);
- DBUG_RETURN(1);
- }
-
WSREP_LOG_CONFLICT(bf_thd, thd, TRUE);
- WSREP_DEBUG("BF kill (%lu, seqno: %lld), victim: (%lu) trx: "
- TRX_ID_FMT,
- signal, (long long)bf_seqno,
+ wsrep_thd_LOCK(thd);
+
+ WSREP_DEBUG("BF kill (" ULINTPF ", seqno: " INT64PF
+ "), victim: (%lu) trx: " TRX_ID_FMT,
+ signal, bf_seqno,
thd_get_thread_id(thd),
victim_trx->id);
- WSREP_DEBUG("Aborting query: %s conf %d trx: %" PRId64,
- (thd && wsrep_thd_query(thd)) ? wsrep_thd_query(thd) : "void",
- wsrep_thd_conflict_state(thd, FALSE),
+ WSREP_DEBUG("Aborting query: %s conflict_state %s trx: %" PRId64,
+ wsrep_thd_query(thd),
+ wsrep_thd_conflict_state_str(thd),
wsrep_thd_ws_handle(thd)->trx_id);
- wsrep_thd_LOCK(thd);
- DBUG_EXECUTE_IF("sync.wsrep_after_BF_victim_lock",
- {
- const char act[]=
- "now "
- "wait_for signal.wsrep_after_BF_victim_lock";
- DBUG_ASSERT(!debug_sync_set_action(bf_thd,
- STRING_WITH_LEN(act)));
- };);
+ WSREP_DEBUG("Exec mode %s query_state %s",
+ wsrep_thd_exec_mode_str(thd),
+ wsrep_thd_query_state_str(thd));
+
+ /*
+ * we mark with was_chosen_as_deadlock_victim transaction,
+ * which is already marked as BF victim
+ * lock_sys is held until this vicitm has aborted
+ */
+ victim_trx->lock.was_chosen_as_wsrep_victim = TRUE;
+ DBUG_EXECUTE_IF("sync.wsrep_after_BF_victim_lock",
+ {
+ const char act[]=
+ "now "
+ "wait_for signal.wsrep_after_BF_victim_lock";
+ DBUG_ASSERT(!debug_sync_set_action(bf_thd,
+ STRING_WITH_LEN(act)));
+ };);
if (wsrep_thd_query_state(thd) == QUERY_EXITING) {
WSREP_DEBUG("kill trx EXITING for " TRX_ID_FMT,
@@ -18642,9 +18598,9 @@ wsrep_innobase_kill_one_trx(
}
if(wsrep_thd_exec_mode(thd) != LOCAL_STATE) {
- WSREP_DEBUG("withdraw for BF trx: " TRX_ID_FMT ", state: %d",
+ WSREP_DEBUG("withdraw for BF trx: " TRX_ID_FMT ", state: %s",
victim_trx->id,
- wsrep_thd_get_conflict_state(thd));
+ wsrep_thd_conflict_state_str(thd));
}
switch (wsrep_thd_get_conflict_state(thd)) {
@@ -18661,8 +18617,8 @@ wsrep_innobase_kill_one_trx(
case ABORTED:
case ABORTING: // fall through
default:
- WSREP_DEBUG("victim " TRX_ID_FMT " in state %d",
- victim_trx->id, wsrep_thd_get_conflict_state(thd));
+ WSREP_DEBUG("victim " TRX_ID_FMT " in state %s",
+ victim_trx->id, wsrep_thd_conflict_state_str(thd));
wsrep_thd_UNLOCK(thd);
DBUG_RETURN(0);
break;
@@ -18765,9 +18721,9 @@ wsrep_innobase_kill_one_trx(
wsrep_thd_trx_seqno(thd));
DBUG_RETURN(0);
}
+
/* This will lock thd from proceeding after net_read() */
wsrep_thd_set_conflict_state(thd, ABORTING);
-
wsrep_lock_rollback();
if (wsrep_aborting_thd_contains(thd)) {
@@ -18807,24 +18763,22 @@ wsrep_abort_transaction(
my_bool signal)
{
DBUG_ENTER("wsrep_innobase_abort_thd");
-
+
trx_t* victim_trx = thd_to_trx(victim_thd);
trx_t* bf_trx = (bf_thd) ? thd_to_trx(bf_thd) : NULL;
WSREP_DEBUG("abort transaction: BF: %s victim: %s victim conf: %d",
- wsrep_thd_query(bf_thd),
- wsrep_thd_query(victim_thd),
- wsrep_thd_conflict_state(victim_thd, FALSE));
+ wsrep_thd_query(bf_thd),
+ wsrep_thd_query(victim_thd),
+ wsrep_thd_conflict_state(victim_thd, FALSE));
if (victim_trx) {
lock_mutex_enter();
trx_mutex_enter(victim_trx);
- victim_trx->abort_type = TRX_WSREP_ABORT;
int rcode = wsrep_innobase_kill_one_trx(bf_thd, bf_trx,
victim_trx, signal);
trx_mutex_exit(victim_trx);
lock_mutex_exit();
- victim_trx->abort_type = TRX_SERVER_ABORT;
wsrep_srv_conc_cancel_wait(victim_trx);
DBUG_RETURN(rcode);
} else {
diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h
index fe16b8272b8..9ff0f731b01 100644
--- a/storage/innobase/include/trx0trx.h
+++ b/storage/innobase/include/trx0trx.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2018, MariaDB Corporation.
+Copyright (c) 2015, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -624,6 +624,12 @@ struct trx_lock_t {
only be modified by the thread that is
serving the running transaction. */
+#ifdef WITH_WSREP
+ bool was_chosen_as_wsrep_victim;
+ /*!< high priority wsrep thread has
+ marked this trx to abort */
+#endif /* WITH_WSREP */
+
mem_heap_t* lock_heap; /*!< memory heap for trx_locks;
protected by lock_sys->mutex */
@@ -697,9 +703,6 @@ lock_sys->mutex and sometimes by trx->mutex. */
enum trx_abort_t {
TRX_SERVER_ABORT = 0,
-#ifdef WITH_WSREP
- TRX_WSREP_ABORT,
-#endif
TRX_REPLICATION_ABORT
};
diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc
index 3970a559a4c..1174cc50e1e 100644
--- a/storage/innobase/lock/lock0lock.cc
+++ b/storage/innobase/lock/lock0lock.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2014, 2018, MariaDB Corporation.
+Copyright (c) 2014, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -1793,10 +1793,8 @@ wsrep_kill_victim(
}
}
- lock->trx->abort_type = TRX_WSREP_ABORT;
wsrep_innobase_kill_one_trx(trx->mysql_thd,
(const trx_t*) trx, lock->trx, TRUE);
- lock->trx->abort_type = TRX_SERVER_ABORT;
}
}
}
@@ -7967,16 +7965,7 @@ lock_trx_release_locks(
lock_mutex_exit();
}
-/*********************************************************************//**
-Check whether the transaction has already been rolled back because it
-was selected as a deadlock victim, or if it has to wait then cancel
-the wait lock.
-@return DB_DEADLOCK, DB_LOCK_WAIT or DB_SUCCESS */
-UNIV_INTERN
-dberr_t
-lock_trx_handle_wait(
-/*=================*/
- trx_t* trx) /*!< in/out: trx lock state */
+static inline dberr_t lock_trx_handle_wait_low(trx_t* trx)
{
ut_ad(lock_mutex_own());
ut_ad(trx_mutex_own(trx));
@@ -7993,6 +7982,35 @@ lock_trx_handle_wait(
return DB_LOCK_WAIT;
}
+/*********************************************************************//**
+Check whether the transaction has already been rolled back because it
+was selected as a deadlock victim, or if it has to wait then cancel
+the wait lock.
+@return DB_DEADLOCK, DB_LOCK_WAIT or DB_SUCCESS */
+UNIV_INTERN
+dberr_t
+lock_trx_handle_wait(
+/*=================*/
+ trx_t* trx) /*!< in/out: trx lock state */
+{
+#ifdef WITH_WSREP
+ /* We already own mutexes */
+ if (trx->lock.was_chosen_as_wsrep_victim) {
+ return lock_trx_handle_wait_low(trx);
+ }
+#endif /* WITH_WSREP */
+ if (trx->abort_type != TRX_REPLICATION_ABORT) {
+ lock_mutex_enter();
+ }
+ trx_mutex_enter(trx);
+ dberr_t err = lock_trx_handle_wait_low(trx);
+ if (trx->abort_type != TRX_REPLICATION_ABORT) {
+ lock_mutex_exit();
+ }
+ trx_mutex_exit(trx);
+ return err;
+}
+
/*********************************************************************//**
Get the number of locks on a table.
@return number of locks */
diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc
index 06bf4cc30c0..855266686e6 100644
--- a/storage/innobase/row/row0sel.cc
+++ b/storage/innobase/row/row0sel.cc
@@ -4746,11 +4746,7 @@ row_search_for_mysql(
a deadlock and the transaction had to wait then
release the lock it is waiting on. */
- lock_mutex_enter();
- trx_mutex_enter(trx);
err = lock_trx_handle_wait(trx);
- lock_mutex_exit();
- trx_mutex_exit(trx);
switch (err) {
case DB_SUCCESS:
diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc
index 3fd71aff23a..be8b7d29350 100644
--- a/storage/innobase/trx/trx0roll.cc
+++ b/storage/innobase/trx/trx0roll.cc
@@ -370,6 +370,9 @@ trx_rollback_to_savepoint_for_mysql_low(
trx_mark_sql_stat_end(trx);
trx->op_info = "";
+#ifdef WITH_WSREP
+ trx->lock.was_chosen_as_wsrep_victim = FALSE;
+#endif
return(err);
}
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index f36aabba8b4..5c8a2c3c6f8 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2018, MariaDB Corporation.
+Copyright (c) 2015, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -168,6 +168,7 @@ trx_create(void)
#ifdef WITH_WSREP
trx->wsrep_event = NULL;
#endif /* WITH_WSREP */
+
return(trx);
}
@@ -1339,12 +1340,10 @@ trx_commit_in_memory(
ut_ad(!trx->in_ro_trx_list);
ut_ad(!trx->in_rw_trx_list);
+ trx->dict_operation = TRX_DICT_OP_NONE;
#ifdef WITH_WSREP
- if (trx->mysql_thd && wsrep_on(trx->mysql_thd)) {
- trx->lock.was_chosen_as_deadlock_victim = FALSE;
- }
+ trx->lock.was_chosen_as_wsrep_victim = FALSE;
#endif
- trx->dict_operation = TRX_DICT_OP_NONE;
trx->error_state = DB_SUCCESS;
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index d3be5155d27..f4e0420519e 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -5,7 +5,7 @@ Copyright (c) 2013, 2018, MariaDB Corporation.
Copyright (c) 2008, 2009 Google Inc.
Copyright (c) 2009, Percona Inc.
Copyright (c) 2012, Facebook Inc.
-Copyright (c) 2013, 2018, MariaDB Corporation.
+Copyright (c) 2013, 2019, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -5517,43 +5517,15 @@ static void innobase_kill_query(handlerton*, THD* thd, enum thd_kill_levels)
/* if victim has been signaled by BF thread and/or aborting
is already progressing, following query aborting is not necessary
any more.
- Also, BF thread should own trx mutex for the victim, which would
- conflict with trx_mutex_enter() below
*/
DBUG_VOID_RETURN;
}
#endif /* WITH_WSREP */
+
if (trx_t* trx = thd_to_trx(thd)) {
ut_ad(trx->mysql_thd == thd);
-
- switch (trx->abort_type) {
-#ifdef WITH_WSREP
- case TRX_WSREP_ABORT:
- break;
-#endif
- case TRX_SERVER_ABORT:
- if (!wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
- lock_mutex_enter();
- }
- /* fall through */
- case TRX_REPLICATION_ABORT:
- trx_mutex_enter(trx);
- }
/* Cancel a pending lock request if there are any */
lock_trx_handle_wait(trx);
- switch (trx->abort_type) {
-#ifdef WITH_WSREP
- case TRX_WSREP_ABORT:
- break;
-#endif
- case TRX_SERVER_ABORT:
- if (!wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
- lock_mutex_exit();
- }
- /* fall through */
- case TRX_REPLICATION_ABORT:
- trx_mutex_exit(trx);
- }
}
DBUG_VOID_RETURN;
@@ -7473,7 +7445,7 @@ wsrep_store_key_val_for_row(
if (key_part->null_bit) {
if (buff_space > 0) {
- if (record[key_part->null_offset]
+ if (record[key_part->null_offset]
& key_part->null_bit) {
*buff = 1;
part_is_null = TRUE;
@@ -7483,8 +7455,8 @@ wsrep_store_key_val_for_row(
buff++;
buff_space--;
} else {
- fprintf (stderr, "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
}
}
if (!part_is_null) *key_is_null = FALSE;
@@ -7507,9 +7479,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len + 2;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s\n",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7549,7 +7520,7 @@ wsrep_store_key_val_for_row(
memcpy(sorted, data, true_len);
true_len = wsrep_innobase_mysql_sort(
- mysql_type, cs->number, sorted, true_len,
+ mysql_type, cs->number, sorted, true_len,
REC_VERSION_56_MAX_INDEX_COL_LEN);
if (wsrep_protocol_version > 1) {
@@ -7559,9 +7530,8 @@ wsrep_store_key_val_for_row(
actual data. The rest of the space was reset to zero
in the bzero() call above. */
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s\n",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
memcpy(buff, sorted, true_len);
@@ -7592,9 +7562,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len + 2;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7646,9 +7615,8 @@ wsrep_store_key_val_for_row(
length of the BLOB prefix in the key value. */
if (wsrep_protocol_version > 1) {
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7675,9 +7643,8 @@ wsrep_store_key_val_for_row(
if (part_is_null) {
true_len = key_len;
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
buff += true_len;
@@ -7722,9 +7689,8 @@ wsrep_store_key_val_for_row(
REC_VERSION_56_MAX_INDEX_COL_LEN);
if (true_len > buff_space) {
- fprintf (stderr,
- "WSREP: key truncated: %s\n",
- wsrep_thd_query(thd));
+ WSREP_WARN("key truncated: %s",
+ wsrep_thd_query(thd));
true_len = buff_space;
}
memcpy(buff, sorted, true_len);
@@ -8731,7 +8697,7 @@ ha_innobase::write_row(
&& num_write_row >= 10000) {
#ifdef WITH_WSREP
if (wsrep_on(user_thd) && sql_command == SQLCOM_LOAD) {
- WSREP_DEBUG("forced trx split for LOAD: %s",
+ WSREP_DEBUG("forced trx split for LOAD: %s",
wsrep_thd_query(user_thd));
}
#endif /* WITH_WSREP */
@@ -8951,14 +8917,12 @@ ha_innobase::write_row(
auto_inc_inserted &&
wsrep_drupal_282555_workaround &&
wsrep_thd_retry_counter(current_thd) == 0 &&
- !thd_test_options(current_thd,
- OPTION_NOT_AUTOCOMMIT |
+ !thd_test_options(current_thd,
+ OPTION_NOT_AUTOCOMMIT |
OPTION_BEGIN)) {
WSREP_DEBUG(
"retrying insert: %s",
- (*wsrep_thd_query(current_thd)) ?
- wsrep_thd_query(current_thd) :
- (char *)"void");
+ wsrep_thd_query(current_thd));
error= DB_SUCCESS;
wsrep_thd_set_conflict_state(
current_thd, MUST_ABORT);
@@ -10866,7 +10830,7 @@ wsrep_append_foreign_key(
ulint rcode = DB_SUCCESS;
char cache_key[513] = {'\0'};
int cache_key_len;
- bool const copy = true;
+ bool const copy = true;
if (!wsrep_on(trx->mysql_thd) ||
wsrep_thd_exec_mode(thd) != LOCAL_STATE)
@@ -10880,8 +10844,7 @@ wsrep_append_foreign_key(
((!foreign) ? "constraint" :
((!foreign->referenced_table) ?
"referenced table" : "foreign table")),
- (thd && wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
@@ -10902,7 +10865,7 @@ wsrep_append_foreign_key(
wsrep_dict_foreign_find_index(
foreign->referenced_table, NULL,
foreign->referenced_col_names,
- foreign->n_fields,
+ foreign->n_fields,
foreign->foreign_index,
TRUE, FALSE);
}
@@ -10919,7 +10882,7 @@ wsrep_append_foreign_key(
foreign->foreign_table, NULL,
foreign->foreign_col_names,
foreign->n_fields,
- foreign->referenced_index,
+ foreign->referenced_index,
TRUE, FALSE);
}
}
@@ -10932,8 +10895,7 @@ wsrep_append_foreign_key(
WSREP_WARN("FK: %s missing in query: %s",
(!foreign->referenced_table) ?
"referenced table" : "foreign table",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
byte key[WSREP_MAX_SUPPORTED_KEY_LENGTH+1] = {'\0'};
@@ -11002,8 +10964,7 @@ wsrep_append_foreign_key(
wkey_part,
(size_t*)&wkey.key_parts_num)) {
WSREP_WARN("key prepare failed for cascaded FK: %s",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
return DB_ERROR;
}
wsrep_t *wsrep= get_wsrep();
@@ -11017,8 +10978,7 @@ wsrep_append_foreign_key(
if (rcode) {
DBUG_PRINT("wsrep", ("row key failed: %zu", rcode));
WSREP_ERROR("Appending cascaded fk row key failed: %s, %lu",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void", rcode);
+ wsrep_thd_query(thd), rcode);
return DB_ERROR;
}
@@ -11040,9 +11000,9 @@ wsrep_append_key(
DBUG_ENTER("wsrep_append_key");
bool const copy = true;
#ifdef WSREP_DEBUG_PRINT
- fprintf(stderr, "%s conn %ld, trx %llu, keylen %d, table %s\n Query: %s ",
+ fprintf(stderr, "%s conn %ld, trx " TRX_ID_FMT " , keylen %d, table %s\n Query: %s ",
(shared) ? "Shared" : "Exclusive",
- thd_get_thread_id(thd), (long long)trx->id, key_len,
+ thd_get_thread_id(thd), trx->id, key_len,
table_share->table_name.str, wsrep_thd_query(thd));
for (int i=0; i<key_len; i++) {
fprintf(stderr, "%hhX, ", key[i]);
@@ -11058,8 +11018,7 @@ wsrep_append_key(
wkey_part,
(size_t*)&wkey.key_parts_num)) {
WSREP_WARN("key prepare failed for: %s",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
DBUG_RETURN(HA_ERR_INTERNAL_ERROR);
}
@@ -11074,8 +11033,7 @@ wsrep_append_key(
if (rcode) {
DBUG_PRINT("wsrep", ("row key failed: %d", rcode));
WSREP_WARN("Appending row key failed: %s, %d",
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void", rcode);
+ wsrep_thd_query(thd), rcode);
DBUG_RETURN(HA_ERR_INTERNAL_ERROR);
}
DBUG_RETURN(0);
@@ -11110,18 +11068,17 @@ ha_innobase::wsrep_append_keys(
const uchar* record0, /* in: row in MySQL format */
const uchar* record1) /* in: row in MySQL format */
{
- int rcode;
+ int rcode=0;
DBUG_ENTER("wsrep_append_keys");
bool key_appended = false;
trx_t *trx = thd_to_trx(thd);
if (table_share && table_share->tmp_table != NO_TMP_TABLE) {
- WSREP_DEBUG("skipping tmp table DML: THD: %lu tmp: %d SQL: %s",
+ WSREP_DEBUG("skipping tmp table DML: THD: %lu tmp: %d SQL: %s",
thd_get_thread_id(thd),
table_share->tmp_table,
- (wsrep_thd_query(thd)) ?
- wsrep_thd_query(thd) : "void");
+ wsrep_thd_query(thd));
DBUG_RETURN(0);
}
@@ -11137,13 +11094,11 @@ ha_innobase::wsrep_append_keys(
if (!is_null) {
rcode = wsrep_append_key(
- thd, trx, table_share, table, keyval,
+ thd, trx, table_share, table, keyval,
len, shared);
if (rcode) DBUG_RETURN(rcode);
- }
- else
- {
- WSREP_DEBUG("NULL key skipped (proto 0): %s",
+ } else {
+ WSREP_DEBUG("NULL key skipped (proto 0): %s",
wsrep_thd_query(thd));
}
} else {
@@ -11175,7 +11130,7 @@ ha_innobase::wsrep_append_keys(
if (!tab) {
WSREP_WARN("MySQL-InnoDB key mismatch %s %s",
- table->s->table_name.str,
+ table->s->table_name.str,
key_info->name);
}
/* !hasPK == table with no PK, must append all non-unique keys */
@@ -11185,32 +11140,30 @@ ha_innobase::wsrep_append_keys(
(!tab && referenced_by_foreign_key()))) {
len = wsrep_store_key_val_for_row(
- thd, table, i, key0,
- WSREP_MAX_SUPPORTED_KEY_LENGTH,
+ thd, table, i, key0,
+ WSREP_MAX_SUPPORTED_KEY_LENGTH,
record0, prebuilt, &is_null);
if (!is_null) {
rcode = wsrep_append_key(
- thd, trx, table_share, table,
+ thd, trx, table_share, table,
keyval0, len+1, shared);
if (rcode) DBUG_RETURN(rcode);
if (key_info->flags & HA_NOSAME || shared)
key_appended = true;
- }
- else
- {
- WSREP_DEBUG("NULL key skipped: %s",
+ } else {
+ WSREP_DEBUG("NULL key skipped: %s",
wsrep_thd_query(thd));
}
if (record1) {
len = wsrep_store_key_val_for_row(
- thd, table, i, key1,
+ thd, table, i, key1,
WSREP_MAX_SUPPORTED_KEY_LENGTH,
record1, prebuilt, &is_null);
if (!is_null && memcmp(key0, key1, len)) {
rcode = wsrep_append_key(
- thd, trx, table_share,
- table,
+ thd, trx, table_share,
+ table,
keyval1, len+1, shared);
if (rcode) DBUG_RETURN(rcode);
}
@@ -11225,8 +11178,8 @@ ha_innobase::wsrep_append_keys(
int rcode;
wsrep_calc_row_hash(digest, record0, table, prebuilt, thd);
- if ((rcode = wsrep_append_key(thd, trx, table_share, table,
- (const char*) digest, 16,
+ if ((rcode = wsrep_append_key(thd, trx, table_share, table,
+ (const char*) digest, 16,
shared))) {
DBUG_RETURN(rcode);
}
@@ -11234,9 +11187,9 @@ ha_innobase::wsrep_append_keys(
if (record1) {
wsrep_calc_row_hash(
digest, record1, table, prebuilt, thd);
- if ((rcode = wsrep_append_key(thd, trx, table_share,
+ if ((rcode = wsrep_append_key(thd, trx, table_share,
table,
- (const char*) digest,
+ (const char*) digest,
16, shared))) {
DBUG_RETURN(rcode);
}
@@ -19631,12 +19584,13 @@ wsrep_innobase_kill_one_trx(
ibool signal)
{
ut_ad(lock_mutex_own());
+ ut_ad(victim_trx);
ut_ad(trx_mutex_own(victim_trx));
ut_ad(bf_thd_ptr);
- ut_ad(victim_trx);
DBUG_ENTER("wsrep_innobase_kill_one_trx");
- THD *bf_thd = bf_thd_ptr ? (THD*) bf_thd_ptr : NULL;
+
+ THD *bf_thd = (THD *) bf_thd_ptr;
THD *thd = (THD *) victim_trx->mysql_thd;
int64_t bf_seqno = (bf_thd) ? wsrep_thd_trx_seqno(bf_thd) : 0;
@@ -19646,34 +19600,40 @@ wsrep_innobase_kill_one_trx(
DBUG_RETURN(1);
}
- if (!bf_thd) {
- DBUG_PRINT("wsrep", ("no BF thd for conflicting lock"));
- WSREP_WARN("no BF THD for trx: " TRX_ID_FMT,
- bf_trx ? bf_trx->id : 0);
- DBUG_RETURN(1);
- }
-
WSREP_LOG_CONFLICT(bf_thd, thd, TRUE);
- WSREP_DEBUG("BF kill (%lu, seqno: %lld), victim: (%lu) trx: "
- TRX_ID_FMT,
- signal, (long long)bf_seqno,
+ wsrep_thd_LOCK(thd);
+
+ WSREP_DEBUG("BF kill (" ULINTPF ", seqno: " INT64PF
+ "), victim: (%lu) trx: " TRX_ID_FMT,
+ signal, bf_seqno,
thd_get_thread_id(thd),
victim_trx->id);
- WSREP_DEBUG("Aborting query: %s",
- (thd && wsrep_thd_query(thd)) ? wsrep_thd_query(thd) : "void");
+ WSREP_DEBUG("Aborting query: %s conflict_state %s trx: %" PRId64,
+ wsrep_thd_query(thd),
+ wsrep_thd_conflict_state_str(thd),
+ wsrep_thd_ws_handle(thd)->trx_id);
- wsrep_thd_LOCK(thd);
- DBUG_EXECUTE_IF("sync.wsrep_after_BF_victim_lock",
- {
- const char act[]=
- "now "
- "wait_for signal.wsrep_after_BF_victim_lock";
- DBUG_ASSERT(!debug_sync_set_action(bf_thd,
- STRING_WITH_LEN(act)));
- };);
+ WSREP_DEBUG("Exec mode %s query_state %s",
+ wsrep_thd_exec_mode_str(thd),
+ wsrep_thd_query_state_str(thd));
+ /*
+ * we mark with was_chosen_as_deadlock_victim transaction,
+ * which is already marked as BF victim
+ * lock_sys is held until this vicitm has aborted
+ */
+ victim_trx->lock.was_chosen_as_wsrep_victim = TRUE;
+
+ DBUG_EXECUTE_IF("sync.wsrep_after_BF_victim_lock",
+ {
+ const char act[]=
+ "now "
+ "wait_for signal.wsrep_after_BF_victim_lock";
+ DBUG_ASSERT(!debug_sync_set_action(bf_thd,
+ STRING_WITH_LEN(act)));
+ };);
if (wsrep_thd_query_state(thd) == QUERY_EXITING) {
WSREP_DEBUG("kill trx EXITING for " TRX_ID_FMT,
@@ -19683,9 +19643,9 @@ wsrep_innobase_kill_one_trx(
}
if(wsrep_thd_exec_mode(thd) != LOCAL_STATE) {
- WSREP_DEBUG("withdraw for BF trx: " TRX_ID_FMT ", state: %d",
+ WSREP_DEBUG("withdraw for BF trx: " TRX_ID_FMT ", state: %s",
victim_trx->id,
- wsrep_thd_get_conflict_state(thd));
+ wsrep_thd_conflict_state_str(thd));
}
switch (wsrep_thd_get_conflict_state(thd)) {
@@ -19702,8 +19662,8 @@ wsrep_innobase_kill_one_trx(
case ABORTED:
case ABORTING: // fall through
default:
- WSREP_DEBUG("victim " TRX_ID_FMT " in state %d",
- victim_trx->id, wsrep_thd_get_conflict_state(thd));
+ WSREP_DEBUG("victim " TRX_ID_FMT " in state %s",
+ victim_trx->id, wsrep_thd_conflict_state_str(thd));
wsrep_thd_UNLOCK(thd);
DBUG_RETURN(0);
break;
@@ -19725,7 +19685,7 @@ wsrep_innobase_kill_one_trx(
wsrep_t *wsrep= get_wsrep();
rcode = wsrep->abort_pre_commit(
wsrep, bf_seqno,
- (wsrep_trx_id_t)victim_trx->id
+ (wsrep_trx_id_t)wsrep_thd_ws_handle(thd)->trx_id
);
switch (rcode) {
@@ -19806,9 +19766,9 @@ wsrep_innobase_kill_one_trx(
wsrep_thd_trx_seqno(thd));
DBUG_RETURN(0);
}
+
/* This will lock thd from proceeding after net_read() */
wsrep_thd_set_conflict_state(thd, ABORTING);
-
wsrep_lock_rollback();
if (wsrep_aborting_thd_contains(thd)) {
@@ -19839,26 +19799,31 @@ wsrep_innobase_kill_one_trx(
DBUG_RETURN(0);
}
-static int
-wsrep_abort_transaction(handlerton* hton, THD *bf_thd, THD *victim_thd,
- my_bool signal)
+static
+int
+wsrep_abort_transaction(
+ handlerton* hton,
+ THD *bf_thd,
+ THD *victim_thd,
+ my_bool signal)
{
DBUG_ENTER("wsrep_innobase_abort_thd");
+
trx_t* victim_trx = thd_to_trx(victim_thd);
trx_t* bf_trx = (bf_thd) ? thd_to_trx(bf_thd) : NULL;
- WSREP_DEBUG("abort transaction: BF: %s victim: %s",
- wsrep_thd_query(bf_thd),
- wsrep_thd_query(victim_thd));
+
+ WSREP_DEBUG("abort transaction: BF: %s victim: %s victim conf: %d",
+ wsrep_thd_query(bf_thd),
+ wsrep_thd_query(victim_thd),
+ wsrep_thd_conflict_state(victim_thd, FALSE));
if (victim_trx) {
lock_mutex_enter();
trx_mutex_enter(victim_trx);
- victim_trx->abort_type = TRX_WSREP_ABORT;
int rcode = wsrep_innobase_kill_one_trx(bf_thd, bf_trx,
victim_trx, signal);
trx_mutex_exit(victim_trx);
lock_mutex_exit();
- victim_trx->abort_type = TRX_SERVER_ABORT;
wsrep_srv_conc_cancel_wait(victim_trx);
DBUG_RETURN(rcode);
} else {
diff --git a/storage/xtradb/include/trx0trx.h b/storage/xtradb/include/trx0trx.h
index 77afde4c35c..fb3df1bd81b 100644
--- a/storage/xtradb/include/trx0trx.h
+++ b/storage/xtradb/include/trx0trx.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2018, MariaDB Corporation.
+Copyright (c) 2015, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -673,6 +673,12 @@ struct trx_lock_t {
only be modified by the thread that is
serving the running transaction. */
+#ifdef WITH_WSREP
+ bool was_chosen_as_wsrep_victim;
+ /*!< high priority wsrep thread has
+ marked this trx to abort */
+#endif /* WITH_WSREP */
+
mem_heap_t* lock_heap; /*!< memory heap for trx_locks;
protected by lock_sys->mutex */
@@ -746,9 +752,6 @@ lock_sys->mutex and sometimes by trx->mutex. */
enum trx_abort_t {
TRX_SERVER_ABORT = 0,
-#ifdef WITH_WSREP
- TRX_WSREP_ABORT,
-#endif
TRX_REPLICATION_ABORT
};
diff --git a/storage/xtradb/lock/lock0lock.cc b/storage/xtradb/lock/lock0lock.cc
index 2183d281b78..4c32295f103 100644
--- a/storage/xtradb/lock/lock0lock.cc
+++ b/storage/xtradb/lock/lock0lock.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2014, 2018, MariaDB Corporation.
+Copyright (c) 2014, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -1804,10 +1804,8 @@ wsrep_kill_victim(
}
}
- lock->trx->abort_type = TRX_WSREP_ABORT;
wsrep_innobase_kill_one_trx(trx->mysql_thd,
(const trx_t*) trx, lock->trx, TRUE);
- lock->trx->abort_type = TRX_SERVER_ABORT;
}
}
}
@@ -8077,16 +8075,7 @@ lock_trx_release_locks(
lock_mutex_exit();
}
-/*********************************************************************//**
-Check whether the transaction has already been rolled back because it
-was selected as a deadlock victim, or if it has to wait then cancel
-the wait lock.
-@return DB_DEADLOCK, DB_LOCK_WAIT or DB_SUCCESS */
-UNIV_INTERN
-dberr_t
-lock_trx_handle_wait(
-/*=================*/
- trx_t* trx) /*!< in/out: trx lock state */
+static inline dberr_t lock_trx_handle_wait_low(trx_t* trx)
{
ut_ad(lock_mutex_own());
ut_ad(trx_mutex_own(trx));
@@ -8103,6 +8092,35 @@ lock_trx_handle_wait(
return DB_LOCK_WAIT;
}
+/*********************************************************************//**
+Check whether the transaction has already been rolled back because it
+was selected as a deadlock victim, or if it has to wait then cancel
+the wait lock.
+@return DB_DEADLOCK, DB_LOCK_WAIT or DB_SUCCESS */
+UNIV_INTERN
+dberr_t
+lock_trx_handle_wait(
+/*=================*/
+ trx_t* trx) /*!< in/out: trx lock state */
+{
+#ifdef WITH_WSREP
+ /* We already own mutexes */
+ if (trx->lock.was_chosen_as_wsrep_victim) {
+ return lock_trx_handle_wait_low(trx);
+ }
+#endif /* WITH_WSREP */
+ if (trx->abort_type != TRX_REPLICATION_ABORT) {
+ lock_mutex_enter();
+ }
+ trx_mutex_enter(trx);
+ dberr_t err = lock_trx_handle_wait_low(trx);
+ if (trx->abort_type != TRX_REPLICATION_ABORT) {
+ lock_mutex_exit();
+ }
+ trx_mutex_exit(trx);
+ return err;
+}
+
/*********************************************************************//**
Get the number of locks on a table.
@return number of locks */
diff --git a/storage/xtradb/row/row0sel.cc b/storage/xtradb/row/row0sel.cc
index b6b5d107885..87bc2aa2875 100644
--- a/storage/xtradb/row/row0sel.cc
+++ b/storage/xtradb/row/row0sel.cc
@@ -4755,11 +4755,7 @@ row_search_for_mysql(
a deadlock and the transaction had to wait then
release the lock it is waiting on. */
- lock_mutex_enter();
- trx_mutex_enter(trx);
err = lock_trx_handle_wait(trx);
- lock_mutex_exit();
- trx_mutex_exit(trx);
switch (err) {
case DB_SUCCESS:
diff --git a/storage/xtradb/trx/trx0roll.cc b/storage/xtradb/trx/trx0roll.cc
index 56b7120fa34..5e60725b9be 100644
--- a/storage/xtradb/trx/trx0roll.cc
+++ b/storage/xtradb/trx/trx0roll.cc
@@ -375,12 +375,8 @@ trx_rollback_to_savepoint_for_mysql_low(
trx_mark_sql_stat_end(trx);
trx->op_info = "";
-
#ifdef WITH_WSREP
- if (wsrep_on(trx->mysql_thd) &&
- trx->lock.was_chosen_as_deadlock_victim) {
- trx->lock.was_chosen_as_deadlock_victim = FALSE;
- }
+ trx->lock.was_chosen_as_wsrep_victim = FALSE;
#endif
return(err);
diff --git a/storage/xtradb/trx/trx0trx.cc b/storage/xtradb/trx/trx0trx.cc
index 17cba81daf3..a3df14aeab0 100644
--- a/storage/xtradb/trx/trx0trx.cc
+++ b/storage/xtradb/trx/trx0trx.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2015, 2018, MariaDB Corporation.
+Copyright (c) 2015, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -1563,12 +1563,10 @@ trx_commit_in_memory(
ut_ad(!trx->in_ro_trx_list);
ut_ad(!trx->in_rw_trx_list);
+ trx->dict_operation = TRX_DICT_OP_NONE;
#ifdef WITH_WSREP
- if (trx->mysql_thd && wsrep_on(trx->mysql_thd)) {
- trx->lock.was_chosen_as_deadlock_victim = FALSE;
- }
+ trx->lock.was_chosen_as_wsrep_victim = FALSE;
#endif
- trx->dict_operation = TRX_DICT_OP_NONE;
trx->error_state = DB_SUCCESS;
1
0