lists.mariadb.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

commits

Thread Start a new thread
Threads by month
  • ----- 2025 -----
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
commits@lists.mariadb.org

  • 14605 discussions
[Commits] 8ffee1bf328: Merge remote-tracking branch 'origin/10.4' into bb-10.4-galera4
by jan 28 Nov '18

28 Nov '18
revision-id: 8ffee1bf32818c1b1ec77bf1ea0811c8cea8c383 (mariadb-10.3.6-203-g8ffee1bf328) parent(s): 577f4dc06d3b0b3e4d873be5b836cd4bcae222da 555921a9c3ddcd638e7f08ea117738640e300875 author: Jan Lindström committer: Jan Lindström timestamp: 2018-11-28 09:36:04 +0200 message: Merge remote-tracking branch 'origin/10.4' into bb-10.4-galera4 .travis.compiler.sh | 2 +- .travis.yml | 2 +- client/mysqlbinlog.cc | 2 +- extra/yassl/src/ssl.cpp | 16 +- include/my_time.h | 55 +- libmariadb | 2 +- libmysqld/libmysql.c | 7 +- .../include/have_aria_used_for_temp_tables.inc | 4 + .../include/innodb_encrypt_tables.combinations | 14 + mysql-test/include/innodb_encrypt_tables.inc | 4 + mysql-test/main/bigint.result | 11 + mysql-test/main/bigint.test | 9 + mysql-test/main/derived_cond_pushdown.result | 93 ++ mysql-test/main/derived_cond_pushdown.test | 27 + mysql-test/main/distinct.result | 20 + mysql-test/main/distinct.test | 18 + 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_json.result | 20 + mysql-test/main/func_json.test | 18 + mysql-test/main/func_time.result | 66 +- mysql-test/main/func_time.test | 31 +- mysql-test/main/func_time_round.result | 1374 ++++++++++++++++++++ mysql-test/main/func_time_round.test | 461 +++++++ mysql-test/main/group_by.result | 10 + mysql-test/main/group_by.test | 13 + mysql-test/main/information_schema.result | 2 +- mysql-test/main/information_schema.test | 4 + mysql-test/main/invisible_field_debug.result | 2 + mysql-test/main/invisible_field_debug.test | 2 + mysql-test/main/mysqld--help.result | 3 +- mysql-test/main/parser.result | 65 + mysql-test/main/parser.test | 74 ++ mysql-test/main/partition_innodb.result | 40 + mysql-test/main/partition_innodb.test | 42 + mysql-test/main/session_tracker_last_gtid.result | 6 - mysql-test/main/sp-code.result | 12 +- mysql-test/main/sp-cursor.result | 24 + mysql-test/main/sp-cursor.test | 21 + mysql-test/main/sp-for-loop.result | 2 +- mysql-test/main/sp-for-loop.test | 2 +- mysql-test/main/sql_mode.result | 8 +- mysql-test/main/sql_mode.test | 4 +- mysql-test/main/str_to_datetime_457.result | 5 +- mysql-test/main/system_mysql_db.result | 4 +- mysql-test/main/system_mysql_db_fix40123.result | 4 +- mysql-test/main/system_mysql_db_fix50030.result | 4 +- mysql-test/main/system_mysql_db_fix50117.result | 4 +- mysql-test/main/type_date_round.result | 174 +++ mysql-test/main/type_date_round.test | 113 ++ mysql-test/main/type_datetime_round.result | 205 +++ mysql-test/main/type_datetime_round.test | 147 +++ mysql-test/main/type_interval.result | 83 ++ mysql-test/main/type_interval.test | 54 + mysql-test/main/type_time_round.result | 260 ++++ mysql-test/main/type_time_round.test | 184 +++ mysql-test/main/type_timestamp_round.result | 164 +++ mysql-test/main/type_timestamp_round.test | 138 ++ mysql-test/main/udf.result | 105 ++ mysql-test/main/udf.test | 66 + mysql-test/main/win.result | 96 ++ mysql-test/main/win.test | 97 ++ mysql-test/suite/archive/rnd_pos.result | 56 + mysql-test/suite/archive/rnd_pos.test | 27 + 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 | 28 + mysql-test/suite/compat/oracle/r/sp-package.result | 48 + mysql-test/suite/compat/oracle/r/sp.result | 60 +- 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 + mysql-test/suite/compat/oracle/t/sp-package.test | 57 + mysql-test/suite/compat/oracle/t/sp.test | 45 +- .../suite/engines/iuds/r/insert_number.result | 100 ++ .../engines/iuds/r/update_delete_number.result | 17 + mysql-test/suite/funcs_1/r/is_columns_mysql.result | 8 +- .../funcs_1/r/is_columns_mysql_embedded.result | 8 +- mysql-test/suite/galera/disabled.def | 10 +- .../suite/galera/include/have_xtrabackup.inc | 4 - .../galera/r/galera_autoinc_sst_mariabackup.result | 47 + .../galera/r/galera_ist_mariabackup,debug.rdiff | 114 ++ .../suite/galera/r/galera_ist_mariabackup.result | 287 ++++ ...a_ist_mariabackup_innodb_flush_logs,debug.rdiff | 114 ++ ...galera_ist_mariabackup_innodb_flush_logs.result | 96 ++ .../galera/r/galera_ist_mysqldump,debug.rdiff | 19 +- .../galera/r/galera_sst_mariabackup,debug.rdiff | 4 +- .../galera_sst_mariabackup_encrypt_with_key.result | 3 + .../r/galera_sst_mariabackup_table_options.result | 997 ++++++++++++++ .../r/galera_sst_mysqldump_with_key,debug.rdiff | 106 ++ .../galera/r/galera_sst_mysqldump_with_key.result | 97 -- .../galera_sst_xtrabackup-v2_data_dir,debug.rdiff | 103 ++ mysql-test/suite/galera/r/partition.result | 18 +- mysql-test/suite/galera/suite.pm | 4 - .../galera/t/galera_autoinc_sst_mariabackup.cnf | 12 + .../galera/t/galera_autoinc_sst_mariabackup.test | 96 ++ .../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 | 12 + .../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 | 228 ++++ .../suite/galera/t/galera_var_reject_queries.test | 2 +- mysql-test/suite/galera/t/partition.test | 14 +- mysql-test/suite/galera_3nodes/disabled.def | 3 +- mysql-test/suite/innodb/include/alter_instant.inc | 33 - .../suite/innodb/r/innodb-wl5522-debug.result | 6 - .../innodb/r/innodb_skip_innodb_is_tables.result | 1 - mysql-test/suite/innodb/r/instant_alter.result | 107 +- .../innodb/r/instant_alter_purge,release.rdiff | 18 + .../suite/innodb/r/instant_alter_purge.result | 46 + mysql-test/suite/innodb/r/instant_drop.result | 13 +- mysql-test/suite/innodb/r/monitor.result | 1 - mysql-test/suite/innodb/r/truncate.result | 21 + mysql-test/suite/innodb/t/innodb-index.test | 5 + mysql-test/suite/innodb/t/innodb-wl5522-debug.test | 14 - mysql-test/suite/innodb/t/instant_alter.test | 40 + mysql-test/suite/innodb/t/instant_alter_purge.test | 75 ++ mysql-test/suite/innodb/t/instant_drop.test | 3 +- mysql-test/suite/innodb/t/log_file_name_debug.test | 4 +- mysql-test/suite/innodb/t/truncate.test | 21 + .../suite/innodb_zip/r/wl5522_debug_zip.result | 6 - .../suite/innodb_zip/t/wl5522_debug_zip.test | 14 - .../suite/mariabackup/xb_aws_key_management.result | 2 - mysql-test/suite/rpl/r/rpl_temporal_round.result | 50 + mysql-test/suite/rpl/t/rpl_temporal_round.test | 35 + mysql-test/suite/sys_vars/r/sql_mode_basic.result | 10 +- .../sys_vars/r/sysvars_server_embedded.result | 2 +- .../sys_vars/r/sysvars_server_notembedded.result | 2 +- .../t/aria_used_for_temp_tables_basic.test | 1 + mysql-test/suite/sys_vars/t/sql_mode_basic.test | 8 +- mysql-test/suite/sys_vars/t/sysvars_aria.test | 1 + .../suite/sys_vars/t/tmp_disk_table_size_func.test | 2 + mysql-test/suite/versioning/r/sysvars.result | 11 + mysql-test/suite/versioning/t/sysvars.test | 10 + scripts/galera_new_cluster.sh | 2 +- scripts/mysql_system_tables.sql | 4 +- scripts/mysql_system_tables_fix.sql | 6 +- sql-common/my_time.c | 515 +++++--- sql/CMakeLists.txt | 4 +- sql/event_data_objects.cc | 22 +- sql/event_parse_data.cc | 14 +- sql/field.cc | 304 +++-- sql/field.h | 35 +- sql/field_conv.cc | 33 +- sql/filesort.cc | 84 +- sql/filesort.h | 3 + sql/gen_lex_token.cc | 8 +- sql/ha_partition.cc | 5 +- sql/ha_partition.h | 4 - sql/handler.h | 20 +- sql/item.cc | 72 +- sql/item.h | 30 +- sql/item_cmpfunc.cc | 28 +- sql/item_cmpfunc.h | 2 +- sql/item_func.cc | 4 +- sql/item_jsonfunc.cc | 1 + sql/item_strfunc.cc | 2 +- sql/item_subselect.cc | 4 +- sql/item_sum.cc | 19 + sql/item_sum.h | 14 +- sql/item_timefunc.cc | 176 +-- sql/item_timefunc.h | 54 +- sql/item_vers.cc | 4 +- sql/lex.h | 40 +- sql/my_decimal.cc | 4 +- sql/my_decimal.h | 3 +- sql/mysql_upgrade_service.cc | 189 ++- sql/semisync_master_ack_receiver.cc | 58 +- sql/semisync_master_ack_receiver.h | 147 ++- sql/sp.cc | 3 +- sql/sp_head.cc | 28 +- sql/sp_pcontext.cc | 13 + sql/sp_pcontext.h | 8 +- sql/sp_rcontext.cc | 27 - sql/sql_basic_types.h | 265 +++- sql/sql_class.h | 48 +- sql/sql_cursor.cc | 5 + sql/sql_lex.cc | 83 +- sql/sql_lex.h | 18 +- sql/sql_parse.cc | 8 +- sql/sql_partition.cc | 2 + sql/sql_prepare.cc | 12 + sql/sql_select.cc | 36 +- sql/sql_show.cc | 18 +- sql/sql_sort.h | 1 - sql/sql_table.cc | 6 +- sql/sql_time.cc | 47 +- sql/sql_time.h | 15 +- sql/sql_type.cc | 327 ++++- sql/sql_type.h | 870 +++++++++++-- sql/sql_type_int.h | 28 + sql/sql_udf.cc | 3 + sql/sql_udf.h | 15 + sql/sql_update.cc | 2 +- sql/sql_yacc.yy | 580 +++++++-- sql/sql_yacc_ora.yy | 583 +++++---- sql/structs.h | 34 +- sql/sys_vars.cc | 1 + sql/sys_vars.ic | 7 +- sql/table.cc | 1 + sql/udf_example.c | 139 ++ sql/udf_example.def | 7 + sql/upgrade_conf_file.cc | 177 +++ sql/wsrep_mysqld.cc | 4 +- storage/archive/ha_archive.h | 2 +- storage/connect/mysql-test/connect/r/jdbc.result | 13 + .../mysql-test/connect/r/jdbc_postgresql.result | 8 + storage/csv/ha_tina.h | 2 +- storage/innobase/btr/btr0btr.cc | 59 +- storage/innobase/btr/btr0bulk.cc | 6 +- storage/innobase/btr/btr0cur.cc | 78 +- storage/innobase/btr/btr0defragment.cc | 10 +- storage/innobase/btr/btr0scrub.cc | 8 +- storage/innobase/btr/btr0sea.cc | 8 +- storage/innobase/buf/buf0buf.cc | 4 - storage/innobase/buf/buf0dblwr.cc | 1 - storage/innobase/buf/buf0flu.cc | 4 +- storage/innobase/buf/buf0lru.cc | 1 - storage/innobase/buf/buf0rea.cc | 2 +- storage/innobase/data/data0data.cc | 2 - storage/innobase/data/data0type.cc | 2 - storage/innobase/dict/dict0boot.cc | 44 +- storage/innobase/dict/dict0crea.cc | 28 +- storage/innobase/dict/dict0defrag_bg.cc | 5 +- storage/innobase/dict/dict0dict.cc | 89 +- storage/innobase/dict/dict0load.cc | 5 +- storage/innobase/dict/dict0mem.cc | 16 +- storage/innobase/dict/dict0stats.cc | 5 +- storage/innobase/dict/dict0stats_bg.cc | 1 - storage/innobase/fil/fil0crypt.cc | 1 - storage/innobase/fil/fil0fil.cc | 10 +- storage/innobase/fil/fil0pagecompress.cc | 1 - storage/innobase/fsp/fsp0file.cc | 5 - storage/innobase/fsp/fsp0fsp.cc | 3 - storage/innobase/fsp/fsp0space.cc | 3 - storage/innobase/fsp/fsp0sysspace.cc | 3 - storage/innobase/fts/fts0ast.cc | 2 - storage/innobase/fts/fts0fts.cc | 83 +- storage/innobase/fts/fts0opt.cc | 2 - storage/innobase/fts/fts0que.cc | 3 - storage/innobase/gis/gis0rtree.cc | 6 +- storage/innobase/gis/gis0sea.cc | 8 +- storage/innobase/ha/ha0storage.cc | 1 - storage/innobase/handler/ha_innodb.cc | 78 +- storage/innobase/handler/handler0alter.cc | 148 ++- storage/innobase/handler/i_s.cc | 5 +- storage/innobase/ibuf/ibuf0ibuf.cc | 5 +- storage/innobase/include/btr0bulk.h | 1 - storage/innobase/include/buf0buf.ic | 2 - storage/innobase/include/dict0boot.h | 16 +- storage/innobase/include/dict0crea.h | 9 - storage/innobase/include/dict0dict.h | 136 +- storage/innobase/include/dict0dict.ic | 114 +- storage/innobase/include/dict0load.h | 2 - storage/innobase/include/dict0mem.h | 68 +- storage/innobase/include/dict0priv.h | 12 - storage/innobase/include/dict0priv.ic | 35 - storage/innobase/include/fsp0file.h | 5 +- storage/innobase/include/fsp0fsp.h | 1 - storage/innobase/include/fsp0space.h | 2 - storage/innobase/include/fsp0sysspace.h | 1 - storage/innobase/include/fts0ast.h | 1 - storage/innobase/include/fts0fts.h | 16 +- storage/innobase/include/fts0plugin.h | 2 +- storage/innobase/include/fts0types.ic | 3 - storage/innobase/include/gis0type.h | 3 - storage/innobase/include/log0recv.h | 2 - storage/innobase/include/mem0mem.ic | 2 - storage/innobase/include/page0types.h | 1 - storage/innobase/include/rem0cmp.h | 7 +- storage/innobase/include/rem0cmp.ic | 1 + storage/innobase/include/rem0rec.ic | 1 + storage/innobase/include/row0mysql.h | 21 +- storage/innobase/include/row0row.h | 2 +- storage/innobase/include/row0row.ic | 8 +- storage/innobase/include/row0undo.h | 15 +- storage/innobase/include/row0upd.h | 25 - storage/innobase/include/row0upd.ic | 8 +- storage/innobase/include/srv0mon.h | 1 - storage/innobase/include/srv0srv.h | 4 +- storage/innobase/include/trx0purge.h | 2 + storage/innobase/include/trx0roll.h | 10 - storage/innobase/include/trx0trx.h | 8 +- storage/innobase/include/trx0types.h | 2 - storage/innobase/include/trx0undo.h | 39 +- storage/innobase/include/trx0undo.ic | 31 - storage/innobase/include/ut0counter.h | 6 +- storage/innobase/include/ut0mutex.h | 4 - storage/innobase/include/ut0new.h | 4 +- storage/innobase/include/ut0vec.ic | 2 - storage/innobase/lock/lock0lock.cc | 98 +- storage/innobase/lock/lock0prdt.cc | 9 - storage/innobase/lock/lock0wait.cc | 2 +- storage/innobase/log/log0log.cc | 2 +- storage/innobase/log/log0recv.cc | 31 +- storage/innobase/mem/mem0mem.cc | 2 - storage/innobase/os/os0event.cc | 2 - storage/innobase/os/os0file.cc | 25 +- storage/innobase/os/os0proc.cc | 7 +- storage/innobase/os/os0thread.cc | 8 +- storage/innobase/page/page0cur.cc | 14 +- storage/innobase/page/page0page.cc | 2 +- storage/innobase/page/page0zip.cc | 23 +- storage/innobase/pars/pars0opt.cc | 1 - storage/innobase/pars/pars0pars.cc | 3 - storage/innobase/que/que0que.cc | 5 - storage/innobase/rem/rem0cmp.cc | 11 +- storage/innobase/rem/rem0rec.cc | 20 +- storage/innobase/row/row0ftsort.cc | 15 +- storage/innobase/row/row0import.cc | 71 +- storage/innobase/row/row0ins.cc | 45 +- storage/innobase/row/row0log.cc | 16 +- storage/innobase/row/row0merge.cc | 18 +- storage/innobase/row/row0mysql.cc | 47 +- storage/innobase/row/row0purge.cc | 33 +- storage/innobase/row/row0quiesce.cc | 11 +- storage/innobase/row/row0row.cc | 6 +- storage/innobase/row/row0sel.cc | 62 +- storage/innobase/row/row0uins.cc | 173 +-- storage/innobase/row/row0umod.cc | 68 +- storage/innobase/row/row0undo.cc | 189 ++- storage/innobase/row/row0upd.cc | 90 +- storage/innobase/row/row0vers.cc | 2 - storage/innobase/srv/srv0conc.cc | 4 +- storage/innobase/srv/srv0mon.cc | 5 - storage/innobase/srv/srv0srv.cc | 3 - storage/innobase/srv/srv0start.cc | 4 - storage/innobase/sync/sync0arr.cc | 6 - storage/innobase/sync/sync0debug.cc | 3 - storage/innobase/sync/sync0rw.cc | 9 - storage/innobase/trx/trx0i_s.cc | 7 +- storage/innobase/trx/trx0purge.cc | 5 +- storage/innobase/trx/trx0rec.cc | 17 +- storage/innobase/trx/trx0roll.cc | 179 +-- storage/innobase/trx/trx0rseg.cc | 1 - storage/innobase/trx/trx0sys.cc | 7 +- storage/innobase/trx/trx0trx.cc | 4 - storage/innobase/trx/trx0undo.cc | 56 +- storage/innobase/ut/ut0dbg.cc | 3 +- storage/innobase/ut/ut0new.cc | 2 - storage/innobase/ut/ut0rbt.cc | 3 - storage/maria/ha_maria.cc | 3 +- storage/maria/ma_init.c | 2 + storage/maria/ma_recovery.c | 8 +- storage/maria/unittest/ma_test_recovery.pl | 23 +- storage/mroonga/ha_mroonga.cpp | 22 +- storage/mroonga/lib/mrn_condition_converter.cpp | 11 +- storage/spider/ha_spider.cc | 4 +- storage/spider/spd_db_mysql.cc | 9 + storage/tokudb/tokudb_sysvars.cc | 4 +- strings/json_lib.c | 2 +- win/upgrade_wizard/upgradeDlg.cpp | 27 +- 359 files changed, 14191 insertions(+), 3337 deletions(-) diff --cc mysql-test/suite/galera/r/partition.result index 774d5ce8f83,bdf6df25589..e34028ab04f --- a/mysql-test/suite/galera/r/partition.result +++ b/mysql-test/suite/galera/r/partition.result @@@ -121,11 -119,11 +121,11 @@@ SET GLOBAL wsrep_load_data_splitting = CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; connection node_2; - SELECT COUNT(*) = 20002 FROM t1; - COUNT(*) = 20002 - 1 + SELECT COUNT(*) FROM t1; + COUNT(*) + 20002 wsrep_last_committed_diff -1 +AS_EXPECTED_3_or_5 DROP TABLE t1; # Case 2: wsrep_load_data_splitting = ON & LOAD DATA with 101 entries. connection node_1; @@@ -146,11 -144,11 +146,11 @@@ SET GLOBAL wsrep_load_data_splitting = CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; connection node_2; - SELECT COUNT(*) = 20002 FROM t1; - COUNT(*) = 20002 - 1 + SELECT COUNT(*) FROM t1; + COUNT(*) + 20002 wsrep_last_committed_diff -1 +AS_EXPECTED_1_or_2 DROP TABLE t1; connection node_1; SET GLOBAL wsrep_load_data_splitting = 1;; diff --cc mysql-test/suite/galera/t/partition.test index 7fa6b9e800c,0159ef8f607..13e09a4e3e6 --- a/mysql-test/suite/galera/t/partition.test +++ b/mysql-test/suite/galera/t/partition.test @@@ -129,14 -129,14 +129,17 @@@ CREATE TABLE t1 (pk INT PRIMARY KEY --let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` --connection node_2 - SELECT COUNT(*) = 20002 FROM t1; + --let $wait_condition = SELECT COUNT(*) = 20002 FROM t1; + --source include/wait_condition.inc + + SELECT COUNT(*) FROM t1; -# LOAD-ing 20002 rows causes 3 commits to be registered +# LOAD-ing 20002 rows causes +# 3 commits to be registered when the Galera library does not support streaming replication and +# 5 commits to be registered when the Galera library supports streaming replication --disable_query_log ---eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before + 3 AS wsrep_last_committed_diff; +--replace_result 3 AS_EXPECTED_3_or_5 5 AS_EXPECTED_3_or_5 +--eval SELECT $wsrep_last_committed_after - $wsrep_last_committed_before AS wsrep_last_committed_diff; --enable_query_log DROP TABLE t1; @@@ -189,14 -192,13 +195,16 @@@ CREATE TABLE t1 (pk INT PRIMARY KEY --let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` --connection node_2 - SELECT COUNT(*) = 20002 FROM t1; + --let $wait_condition = SELECT COUNT(*) = 20002 FROM t1; + --source include/wait_condition.inc + SELECT COUNT(*) FROM t1; -# LOAD-ing 20002 rows causes 1 commit to be registered +# LOAD-ing 20002 rows causes +# 1 commit to be registered when the Galera library does not support streaming replication and +# 2 commits to be registered when the Galera library supports streaming replication --disable_query_log ---eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before + 1 AS wsrep_last_committed_diff; +--replace_result 1 AS_EXPECTED_1_or_2 2 AS_EXPECTED_1_or_2 +--eval SELECT $wsrep_last_committed_after - $wsrep_last_committed_before AS wsrep_last_committed_diff; --enable_query_log DROP TABLE t1; diff --cc sql/sql_parse.cc index 0567cec72b4,3b2e57abcf5..57bdacc96ba --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@@ -2404,12 -2384,9 +2404,10 @@@ com_multi_end || thd->get_stmt_da()->is_disabled()); /* wsrep BF abort in query exec phase */ mysql_mutex_lock(&thd->LOCK_thd_data); - do_end_of_statement= thd->wsrep_conflict_state != REPLAYING && - thd->wsrep_conflict_state != RETRY_AUTOCOMMIT && - !thd->killed; + do_end_of_statement= - thd->wsrep_trx().state() != wsrep::transaction::s_replaying; - #ifdef TODO - thd->wsrep_conflict_state != REPLAYING && - thd->wsrep_conflict_state != RETRY_AUTOCOMMIT; - #endif ++ thd->wsrep_trx().state() != wsrep::transaction::s_replaying ++ && !thd->killed; ++ mysql_mutex_unlock(&thd->LOCK_thd_data); } else diff --cc storage/innobase/row/row0ins.cc index 69a73e8284c,27df0a9249d..340d158222e --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@@ -48,12 -44,6 +44,10 @@@ Created 4/20/1996 Heikki Tuur #include "buf0lru.h" #include "fts0fts.h" #include "fts0types.h" - #include "m_string.h" - #include "gis0geo.h" +#include "wsrep_api.h" +#include "mysql/service_wsrep.h" +#include "wsrep_mysqld.h" +#include "mysql/service_wsrep.h" /************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there diff --cc storage/innobase/row/row0sel.cc index 83ee7cb53ee,5e7894d3ca7..c88912dc94f --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@@ -53,16 -53,7 +53,14 @@@ Created 12/19/1997 Heikki Tuur #include "row0mysql.h" #include "buf0lru.h" #include "srv0srv.h" - #include "ha_prototypes.h" #include "srv0mon.h" - #include "ut0new.h" +#include "m_string.h" /* for my_sys.h */ +#include "my_sys.h" /* DEBUG_SYNC_C */ + +#include "my_compare.h" /* enum icp_result */ +#include "thr_lock.h" +#include "handler.h" +#include "ha_innodb.h" /* Maximum number of rows to prefetch; MySQL interface has another parameter */ #define SEL_MAX_N_PREFETCH 16
1 0
0 0
[Commits] 4b88d5ee516: MDEV-17771: Add Galera ist and sst tests using mariabackup
by jan 27 Nov '18

27 Nov '18
revision-id: 4b88d5ee516fc7d2e51f55409623c63a1bde25f3 (mariadb-10.3.10-94-g4b88d5ee516) parent(s): 36359157cf2af0161f9ff856ed49c5a147c541f3 author: Jan Lindström committer: Jan Lindström timestamp: 2018-11-27 15:26:18 +0200 message: MDEV-17771: Add Galera ist and sst tests using mariabackup Add check that file key management plugin is found. --- mysql-test/suite/galera/disabled.def | 1 - mysql-test/suite/galera/include/have_filekeymanagement.inc | 3 +++ mysql-test/suite/galera/suite.pm | 2 ++ mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 8be4f7e4748..bfceb370682 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -56,4 +56,3 @@ galera_sst_xtrabackup-v2-options : xtrabackup is deprecated galera_ist_innodb_flush_logs : xtrabackup is deprecated galera_sst_xtrabackup-v2 : xtrabackup is deprecated -galera_sst_mariabackup_table_options : refuses to start due to encryption diff --git a/mysql-test/suite/galera/include/have_filekeymanagement.inc b/mysql-test/suite/galera/include/have_filekeymanagement.inc new file mode 100644 index 00000000000..f5507ca4548 --- /dev/null +++ b/mysql-test/suite/galera/include/have_filekeymanagement.inc @@ -0,0 +1,3 @@ +# +# Used in galera/suite.pm to check file key management plugin +# diff --git a/mysql-test/suite/galera/suite.pm b/mysql-test/suite/galera/suite.pm index c3ae4d358f2..1aabc697db1 100644 --- a/mysql-test/suite/galera/suite.pm +++ b/mysql-test/suite/galera/suite.pm @@ -98,6 +98,8 @@ if (which(socat)) { sub skip_combinations { my %skip = (); + $skip{'include/have_filekeymanagement.inc'} = 'needs file_key_management plugin' + unless $ENV{FILE_KEY_MANAGEMENT_SO}; $skip{'include/have_mariabackup.inc'} = 'Need mariabackup' unless which(mariabackup); $skip{'include/have_mariabackup.inc'} = 'Need ss' diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test index 267ec9ce681..9d4f50f66ee 100644 --- a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test @@ -1,5 +1,6 @@ --source include/big_test.inc --source include/galera_cluster.inc +--source include/have_filekeymanagement.inc --source include/innodb_encrypt_tables.inc --source include/innodb_page_size_small.inc --source include/have_mariabackup.inc
1 0
0 0
[Commits] 2fef5d8d8e5: MDEV-11419: Report all INSERT ID for bulk operation INSERT
by Oleksandr Byelkin 27 Nov '18

27 Nov '18
revision-id: 2fef5d8d8e5b5781a71ff6305c0eb7a3de555509 (mariadb-10.4.0-38-g2fef5d8d8e5) parent(s): 2c4844c9e76427525e8c39a2d72686085efe89c3 author: Oleksandr Byelkin committer: Oleksandr Byelkin timestamp: 2018-11-27 14:02:49 +0100 message: MDEV-11419: Report all INSERT ID for bulk operation INSERT Send all Insert IDs of the buld operation to client (JDBC need it) # Conflicts: # sql/sql_class.cc # sql/sql_class.h # sql/sql_insert.cc # sql/sql_prepare.cc --- include/mysql.h.pp | 9 +++- include/mysql_com.h | 10 ++++- sql/protocol.cc | 22 +++++++--- sql/protocol.h | 6 +++ sql/sql_class.cc | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sql/sql_class.h | 8 ++++ sql/sql_insert.cc | 11 ++++- sql/sql_prepare.cc | 23 +++++++++-- 8 files changed, 193 insertions(+), 13 deletions(-) diff --git a/include/mysql.h.pp b/include/mysql.h.pp index e36131b93d2..4da8a5be491 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -92,7 +92,14 @@ enum enum_cursor_type CURSOR_TYPE_NO_CURSOR= 0, CURSOR_TYPE_READ_ONLY= 1, CURSOR_TYPE_FOR_UPDATE= 2, - CURSOR_TYPE_SCROLLABLE= 4 + CURSOR_TYPE_SCROLLABLE= 4, +}; +enum stmt_flags_type +{ + STMTFLG_CURSOR_TYPE_READ_ONLY= CURSOR_TYPE_READ_ONLY, + STMTFLG_CURSOR_TYPE_FOR_UPDATE= CURSOR_TYPE_FOR_UPDATE, + STMTFLG_CURSOR_TYPE_SCROLLABLE= CURSOR_TYPE_FOR_UPDATE, + STMTFLG_INSERT_ID_REQUEST= 128 }; enum enum_mysql_set_option { diff --git a/include/mysql_com.h b/include/mysql_com.h index 902c0ff2706..4217d6ca0e5 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -578,7 +578,15 @@ enum enum_cursor_type CURSOR_TYPE_NO_CURSOR= 0, CURSOR_TYPE_READ_ONLY= 1, CURSOR_TYPE_FOR_UPDATE= 2, - CURSOR_TYPE_SCROLLABLE= 4 + CURSOR_TYPE_SCROLLABLE= 4, +}; +/* first values should be the same as enum_cursor_type */ +enum stmt_flags_type +{ + STMTFLG_CURSOR_TYPE_READ_ONLY= CURSOR_TYPE_READ_ONLY, + STMTFLG_CURSOR_TYPE_FOR_UPDATE= CURSOR_TYPE_FOR_UPDATE, + STMTFLG_CURSOR_TYPE_SCROLLABLE= CURSOR_TYPE_FOR_UPDATE, + STMTFLG_INSERT_ID_REQUEST= 128 }; diff --git a/sql/protocol.cc b/sql/protocol.cc index 7eee9283989..a68159a20cd 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -563,6 +563,7 @@ void Protocol::end_statement() switch (thd->get_stmt_da()->status()) { case Diagnostics_area::DA_ERROR: + thd->stop_collecting_insert_id(); /* The query failed, send error to log and abort bootstrap. */ error= send_error(thd->get_stmt_da()->sql_errno(), thd->get_stmt_da()->message(), @@ -574,12 +575,21 @@ void Protocol::end_statement() break; case Diagnostics_area::DA_OK: case Diagnostics_area::DA_OK_BULK: - error= send_ok(thd->server_status, - thd->get_stmt_da()->statement_warn_count(), - thd->get_stmt_da()->affected_rows(), - thd->get_stmt_da()->last_insert_id(), - thd->get_stmt_da()->message(), - thd->get_stmt_da()->skip_flush()); + if (thd->report_collected_insert_id()) + if (thd->is_error()) + error= send_error(thd->get_stmt_da()->sql_errno(), + thd->get_stmt_da()->message(), + thd->get_stmt_da()->get_sqlstate()); + else + error= send_eof(thd->server_status, + thd->get_stmt_da()->statement_warn_count()); + else + error= send_ok(thd->server_status, + thd->get_stmt_da()->statement_warn_count(), + thd->get_stmt_da()->affected_rows(), + thd->get_stmt_da()->last_insert_id(), + thd->get_stmt_da()->message(), + thd->get_stmt_da()->skip_flush()); break; case Diagnostics_area::DA_DISABLED: break; diff --git a/sql/protocol.h b/sql/protocol.h index 6397e3dd5e6..bf74f52fa98 100644 --- a/sql/protocol.h +++ b/sql/protocol.h @@ -30,6 +30,12 @@ class Item_param; typedef struct st_mysql_field MYSQL_FIELD; typedef struct st_mysql_rows MYSQL_ROWS; +struct insert_id_desc +{ + ulonglong first_id; + ulonglong sequence; +}; + class Protocol { protected: diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 52ebc186b1a..87b83e60bd9 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1261,6 +1261,7 @@ void THD::init(bool skip_lock) #endif //EMBEDDED_LIBRARY apc_target.init(&LOCK_thd_kill); + insert_ids= NULL; DBUG_VOID_RETURN; } @@ -7692,6 +7693,122 @@ bool Qualified_column_ident::append_to(THD *thd, String *str) const } +bool THD::init_collecting_insert_id() +{ + if (!insert_ids) + { + void *buff; + if (!(my_multi_malloc(MYF(MY_WME), &insert_ids, sizeof(DYNAMIC_ARRAY), + &buff, sizeof(insert_id_desc) * 10, + NullS)) || + my_init_dynamic_array2(insert_ids, sizeof(insert_id_desc), + buff, 10, 100, MYF(MY_WME))) + { + if (insert_ids) + my_free(insert_ids); + insert_ids= NULL; + return TRUE; + } + collect_auto_increment_increment= variables.auto_increment_increment; + } + return FALSE; +} + +void THD::stop_collecting_insert_id() +{ + if (insert_ids) + { + delete_dynamic(insert_ids); + my_free(insert_ids); + insert_ids= NULL; + } +} + +bool THD::collect_insert_id(ulonglong id) +{ + if (insert_ids) + { + if (insert_ids->elements) + { + insert_id_desc *last= + (insert_id_desc *)dynamic_array_ptr(insert_ids, + insert_ids->elements - 1); + if (id == last->first_id) + { + return FALSE; // no new insert id + } + if (id == last->first_id + (last->sequence * + collect_auto_increment_increment)) + { + last->sequence++; + return FALSE; + } + } + insert_id_desc el; + el.first_id= id; + el.sequence= 1; + if (insert_dynamic(insert_ids, &el)) + { + return TRUE; + } + } + return FALSE; +} + + +bool THD::report_collected_insert_id() +{ + if (insert_ids) + { + List<Item> field_list; + MEM_ROOT tmp_mem_root; + Query_arena arena(&tmp_mem_root, Query_arena::STMT_INITIALIZED), backup; + + init_alloc_root(arena.mem_root, " THD::report_collected_insert_i", + 2048, 4096, MYF(MY_THREAD_SPECIFIC)); + set_n_backup_active_arena(&arena, &backup); + DBUG_ASSERT(mem_root == &tmp_mem_root); + + field_list.push_back(new (mem_root) + Item_int(this, "Id", 0, MY_INT64_NUM_DECIMAL_DIGITS), + mem_root); + field_list.push_back(new (mem_root) + Item_int(this, "Len", 0, MY_INT64_NUM_DECIMAL_DIGITS), + mem_root); + field_list.push_back(new (mem_root) + Item_return_int(this, "Inc", 0, MYSQL_TYPE_LONG), + mem_root); + + if (protocol_binary.send_result_set_metadata(&field_list, + Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) + goto error; + + for (ulonglong i= 0; i < insert_ids->elements; i++) + { + insert_id_desc *last= + (insert_id_desc *)dynamic_array_ptr(insert_ids, i); + if (insert_ids->elements == 1 && last->first_id == 0 && + get_stmt_da()->affected_rows() != 1) + continue; // No insert IDs + protocol_binary.prepare_for_resend(); + protocol_binary.store_longlong(last->first_id, TRUE); + protocol_binary.store_longlong(last->sequence, TRUE); + protocol_binary.store_long(collect_auto_increment_increment); + if (protocol_binary.write()) + goto error; + } +error: + restore_active_arena(&arena, &backup); + DBUG_ASSERT(arena.mem_root == &tmp_mem_root); + // no need free Items because they was only constants + free_root(arena.mem_root, MYF(0)); + stop_collecting_insert_id(); + return TRUE; + } + return FALSE; + +} + #endif /* !defined(MYSQL_CLIENT) */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 8174a8b313b..5fb6a6c575e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -4901,6 +4901,14 @@ class THD :public Statement, LOG_SLOW_DISABLE_ADMIN); query_plan_flags|= QPLAN_ADMIN; } + + /* Data and methods for buld INSERT IDs reporting */ + DYNAMIC_ARRAY *insert_ids; + ulong collect_auto_increment_increment; + bool init_collecting_insert_id(); + bool collect_insert_id(ulonglong id); + bool report_collected_insert_id(); + void stop_collecting_insert_id(); }; inline void add_to_active_threads(THD *thd) diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 127b4b10eb4..349ac2646fe 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1067,6 +1067,12 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, } its.rewind(); iteration++; + + if (!error && thd->bulk_param) + { + thd->collect_insert_id(table->file->insert_id_for_cur_row); + } + } while (bulk_parameters_iterations(thd)); values_loop_end: @@ -1217,8 +1223,9 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, retval= thd->lex->explain->send_explain(thd); goto abort; } - if ((iteration * values_list.elements) == 1 && (!(thd->variables.option_bits & OPTION_WARNINGS) || - !thd->cuted_fields)) + if ((iteration * values_list.elements) == 1 && + (!(thd->variables.option_bits & OPTION_WARNINGS) || + !thd->cuted_fields)) { my_ok(thd, info.copied + info.deleted + ((thd->client_capabilities & CLIENT_FOUND_ROWS) ? diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index cb822fc2e98..5346af194ef 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -200,7 +200,8 @@ class Prepared_statement: public Statement uchar *packet_arg, uchar *packet_end_arg); bool execute_bulk_loop(String *expanded_query, bool open_cursor, - uchar *packet_arg, uchar *packet_end_arg); + uchar *packet_arg, uchar *packet_end_arg, + bool insert_id_request); bool execute_server_runnable(Server_runnable *server_runnable); my_bool set_bulk_parameters(bool reset); bool bulk_iterations() { return iterations; }; @@ -3214,10 +3215,19 @@ static void mysql_stmt_execute_common(THD *thd, open_cursor= MY_TEST(cursor_flags & (ulong) CURSOR_TYPE_READ_ONLY); thd->protocol= &thd->protocol_binary; + + if (!(thd->client_capabilities & MARIADB_CLIENT_STMT_BULK_OPERATIONS)) + { + DBUG_PRINT("info", + ("There is no bulk capability so reset iteration counter")); + bulk_op= FALSE; + } if (!bulk_op) stmt->execute_loop(&expanded_query, open_cursor, packet, packet_end); else - stmt->execute_bulk_loop(&expanded_query, open_cursor, packet, packet_end); + stmt->execute_bulk_loop(&expanded_query, open_cursor, packet, packet_end, + MY_TEST((cursor_flags & + (ulong) STMTFLG_INSERT_ID_REQUEST))); thd->protocol= save_protocol; sp_cache_enforce_limit(thd->sp_proc_cache, stored_program_cache_size); @@ -4310,7 +4320,8 @@ bool Prepared_statement::execute_bulk_loop(String *expanded_query, bool open_cursor, uchar *packet_arg, - uchar *packet_end_arg) + uchar *packet_end_arg, + bool insert_id_request) { Reprepare_observer reprepare_observer; bool error= 0; @@ -4345,6 +4356,12 @@ Prepared_statement::execute_bulk_loop(String *expanded_query, thd->set_bulk_execution(0); return TRUE; } + if (lex->sql_command == SQLCOM_INSERT && insert_id_request && + thd->init_collecting_insert_id()) + { + thd->set_bulk_execution(0); + return TRUE; + } #ifndef EMBEDDED_LIBRARY if (read_types &&
1 0
0 0
[Commits] ab398a3b8ab: MDEV-17810: Improve error printout when decryption fails or we identify page as both encrypted and unencrypted
by jan 27 Nov '18

27 Nov '18
revision-id: ab398a3b8aba965bf22517eb9cd7d12383d080f4 (mariadb-10.2.19-24-gab398a3b8ab) parent(s): d0bf132a6ace31c29813b4004fab2a8af780deaa author: Jan Lindström committer: Jan Lindström timestamp: 2018-11-27 13:16:19 +0200 message: MDEV-17810: Improve error printout when decryption fails or we identify page as both encrypted and unencrypted fil_space_verify_crypt_checksum Print out both stored checksum and calculated checksums for encrypted page and unencrypted page asumptions. --- storage/innobase/fil/fil0crypt.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc index 77760d7159a..d3a7c531d4f 100644 --- a/storage/innobase/fil/fil0crypt.cc +++ b/storage/innobase/fil/fil0crypt.cc @@ -2569,7 +2569,7 @@ fil_space_verify_crypt_checksum( return (true); } - uint32 cchecksum1, cchecksum2; + uint32_t cchecksum1, cchecksum2; /* Calculate checksums */ if (page_size.is_compressed()) { @@ -2652,10 +2652,19 @@ fil_space_verify_crypt_checksum( #else /* UNIV_INNOCHECKSUM */ ib::error() << " Page " << space << ":" << offset - << " may be corrupted." - " Post encryption checksum " << checksum - << " stored [" << checksum1 << ":" << checksum2 + << " may be corrupted."; + ib::info() + << "If encrypted: stored checksum" << checksum + << " calculated checksum [" << cchecksum1 << ":" << cchecksum2 << "] key_version " << key_version; + ib::info() + << "If unencrypted: stored checksum [" << checksum1 + << ":" << checksum2 << "] calculated crc32 [" + << buf_calc_page_crc32(page, false) << ":" + << buf_calc_page_crc32(page, true) << "] innodb [" + << buf_calc_page_old_checksum(page) << ":" + << buf_calc_page_new_checksum(page) << "] LSN " + << mach_read_from_4(page + FIL_PAGE_LSN); #endif encrypted = false; }
1 0
0 0
[Commits] d0bf132a6ac: Fix xtrabackup SST tests by using innodb-safe-truncate=OFF.
by jan 27 Nov '18

27 Nov '18
revision-id: d0bf132a6ace31c29813b4004fab2a8af780deaa (mariadb-10.2.19-23-gd0bf132a6ac) parent(s): 9669536c2355efb6f71babc9d2e615e9125c816b author: Jan Lindström committer: Jan Lindström timestamp: 2018-11-27 10:52:53 +0200 message: Fix xtrabackup SST tests by using innodb-safe-truncate=OFF. Disable tests that do not yet pass. --- mysql-test/suite/galera/disabled.def | 13 +++++------ .../galera/r/galera_ist_innodb_flush_logs.result | 8 +++++++ .../galera/r/galera_ist_xtrabackup-v2,debug.rdiff | 17 +++++++++++--- .../suite/galera/r/galera_ist_xtrabackup-v2.result | 26 ++++++++++++++++++++++ .../galera/t/galera_autoinc_sst_xtrabackup.cnf | 1 + .../galera/t/galera_ist_innodb_flush_logs.cnf | 1 + .../suite/galera/t/galera_ist_xtrabackup-v2.cnf | 2 ++ .../galera/t/galera_sst_xtrabackup-v2-options.cnf | 1 + .../suite/galera/t/galera_sst_xtrabackup-v2.cnf | 1 + .../galera/t/galera_sst_xtrabackup-v2_data_dir.cnf | 1 + .../galera_sst_xtrabackup-v2_encrypt_with_key.cnf | 1 + 11 files changed, 62 insertions(+), 10 deletions(-) diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 8c67ab3f3d8..9eead53c82b 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -42,10 +42,9 @@ galera_as_slave_replication_budle : MDEV-15785 Test case galera_as_slave_replica galera_wan : MDEV-17259: Test failure on galera.galera_wan galera_pc_ignore_sb : MDEV-17357 Test failure on galera.galera_pc_ignore_sb galera_drop_database : test -galera_autoinc_sst_xtrabackup : xtrabackup is deprecated -galera_ist_xtrabackup-v2 : xtrabackup is deprecated -galera_sst_xtrabackup-v2_data_dir : xtrabackup is deprecated -galera_sst_xtrabackup-v2_encrypt_with_key : xtrabackup is deprecated -galera_sst_xtrabackup-v2-options : xtrabackup is deprecated -galera_ist_innodb_flush_logs : xtrabackup is deprecated -galera_sst_xtrabackup-v2 : xtrabackup is deprecated +galera_ist_innodb_flush_logs +galera.MW-328A : MDEV-17847 Galera test failure on MW-328[A|B|C] +galera.MW-328B : MDEV-17847 Galera test failure on MW-328[A|B|C] +galera.MW-328C : MDEV-17847 Galera test failure on MW-328[A|B|C] +galera.galera_sst_xtrabackup-v2 : MDEV-17848 Galera test failure on galera_sst_xtrabackup-v2[_data_dir] +galera.galera_sst_xtrabackup-v2_data_dir : MDEV-17848 Galera test failure on galera_sst_xtrabackup-v2[_data_dir] diff --git a/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs.result b/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs.result index e3bf407ddaa..7813b5a58fc 100644 --- a/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs.result +++ b/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs.result @@ -1,4 +1,5 @@ Performing State Transfer on a server that has been killed and restarted +connection node_1; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -8,6 +9,7 @@ INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); COMMIT; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); @@ -17,6 +19,7 @@ INSERT INTO t1 VALUES ('node2_committed_before'); INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; Killing server ... +connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); @@ -31,6 +34,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -38,6 +42,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; Performing --wsrep-recover ... Starting server ... Using --wsrep-start-position when starting mysqld ... @@ -49,6 +54,7 @@ INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; +connection node_1; INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); @@ -63,6 +69,7 @@ INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); COMMIT; +connection node_1a_galera_st_kill_slave; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -77,6 +84,7 @@ COUNT(*) = 0 1 COMMIT; SET AUTOCOMMIT=ON; +connection node_1; SELECT COUNT(*) = 35 FROM t1; COUNT(*) = 35 1 diff --git a/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2,debug.rdiff index 95310b3ffeb..56bc1fac08c 100644 --- a/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2,debug.rdiff @@ -1,11 +1,12 @@ ---- r/galera_ist_xtrabackup-v2.result 2018-09-05 10:34:36.192439933 +0300 -+++ r/galera_ist_xtrabackup-v2.reject 2018-09-17 11:13:33.395264800 +0300 -@@ -259,3 +259,100 @@ +--- r/galera_ist_xtrabackup-v2.result 2018-11-26 17:10:55.580909234 +0200 ++++ r/galera_ist_xtrabackup-v2.reject 2018-11-27 10:20:41.213063054 +0200 +@@ -285,3 +285,111 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been killed and restarted +while a DDL was in progress on it ++connection node_1; +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; @@ -14,6 +15,7 @@ +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); ++connection node_2; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); @@ -22,9 +24,12 @@ +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++connection node_1; +ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++connection node_2; +SET wsrep_sync_wait = 0; +Killing server ... ++connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (f1) VALUES ('node1_committed_during'); @@ -39,6 +44,7 @@ +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); @@ -46,7 +52,9 @@ +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++connection node_2; +Performing --wsrep-recover ... ++connection node_2; +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; @@ -57,6 +65,7 @@ +INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +COMMIT; ++connection node_1; +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); @@ -71,6 +80,7 @@ +INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +COMMIT; ++connection node_1a_galera_st_kill_slave_ddl; +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); @@ -88,6 +98,7 @@ +1 +COMMIT; +SET AUTOCOMMIT=ON; ++connection node_1; +SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +COUNT(*) = 2 +1 diff --git a/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2.result b/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2.result index 099d944d491..8a7c02ab1b6 100644 --- a/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2.result +++ b/mysql-test/suite/galera/r/galera_ist_xtrabackup-v2.result @@ -1,4 +1,7 @@ +connection node_1; +connection node_2; Performing State Transfer on a server that has been temporarily disconnected +connection node_1; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -8,6 +11,7 @@ INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); COMMIT; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); @@ -18,6 +22,7 @@ INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; Unloading wsrep provider ... SET GLOBAL wsrep_provider = 'none'; +connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); @@ -32,6 +37,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -39,6 +45,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; Loading wsrep provider ... SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -48,6 +55,7 @@ INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; +connection node_1; INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); @@ -62,6 +70,7 @@ INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); COMMIT; +connection node_1a_galera_st_disconnect_slave; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -76,6 +85,7 @@ COUNT(*) = 0 1 COMMIT; SET AUTOCOMMIT=ON; +connection node_1; SELECT COUNT(*) = 35 FROM t1; COUNT(*) = 35 1 @@ -86,6 +96,7 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; Performing State Transfer on a server that has been shut down cleanly and restarted +connection node_1; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -95,6 +106,7 @@ INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); COMMIT; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); @@ -104,6 +116,7 @@ INSERT INTO t1 VALUES ('node2_committed_before'); INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; Shutting down server ... +connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); @@ -118,6 +131,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -125,6 +139,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; Starting server ... SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -134,6 +149,7 @@ INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; +connection node_1; INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); @@ -148,6 +164,7 @@ INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); COMMIT; +connection node_1a_galera_st_shutdown_slave; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -162,6 +179,7 @@ COUNT(*) = 0 1 COMMIT; SET AUTOCOMMIT=ON; +connection node_1; SELECT COUNT(*) = 35 FROM t1; COUNT(*) = 35 1 @@ -172,6 +190,7 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; Performing State Transfer on a server that has been killed and restarted +connection node_1; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -181,6 +200,7 @@ INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); COMMIT; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); @@ -190,6 +210,7 @@ INSERT INTO t1 VALUES ('node2_committed_before'); INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; Killing server ... +connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); @@ -204,6 +225,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -211,6 +233,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; Performing --wsrep-recover ... Starting server ... Using --wsrep-start-position when starting mysqld ... @@ -222,6 +245,7 @@ INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; +connection node_1; INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); INSERT INTO t1 VALUES ('node1_to_be_committed_after'); @@ -236,6 +260,7 @@ INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); INSERT INTO t1 VALUES ('node1_committed_after'); COMMIT; +connection node_1a_galera_st_kill_slave; INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); @@ -250,6 +275,7 @@ COUNT(*) = 0 1 COMMIT; SET AUTOCOMMIT=ON; +connection node_1; SELECT COUNT(*) = 35 FROM t1; COUNT(*) = 35 1 diff --git a/mysql-test/suite/galera/t/galera_autoinc_sst_xtrabackup.cnf b/mysql-test/suite/galera/t/galera_autoinc_sst_xtrabackup.cnf index b4bf5f02171..7da7dd4e73b 100644 --- a/mysql-test/suite/galera/t/galera_autoinc_sst_xtrabackup.cnf +++ b/mysql-test/suite/galera/t/galera_autoinc_sst_xtrabackup.cnf @@ -3,6 +3,7 @@ [mysqld] wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" +innodb_safe_truncate=OFF [mysqld.1] wsrep_provider_options='base_port=(a)mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_ist_innodb_flush_logs.cnf b/mysql-test/suite/galera/t/galera_ist_innodb_flush_logs.cnf index 41a1aab382b..b91c897e66e 100644 --- a/mysql-test/suite/galera/t/galera_ist_innodb_flush_logs.cnf +++ b/mysql-test/suite/galera/t/galera_ist_innodb_flush_logs.cnf @@ -3,6 +3,7 @@ [mysqld] wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=root: +innodb_safe_truncate=OFF innodb_flush_log_at_trx_commit=0 diff --git a/mysql-test/suite/galera/t/galera_ist_xtrabackup-v2.cnf b/mysql-test/suite/galera/t/galera_ist_xtrabackup-v2.cnf index a762b939f69..52df3814129 100644 --- a/mysql-test/suite/galera/t/galera_ist_xtrabackup-v2.cnf +++ b/mysql-test/suite/galera/t/galera_ist_xtrabackup-v2.cnf @@ -3,6 +3,8 @@ [mysqld] wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=root: +innodb_safe_truncate=OFF + [mysqld.1] wsrep_provider_options='base_port=(a)mysqld.1.#galera_port;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2-options.cnf b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2-options.cnf index 3abf2549aae..af3a7aecec4 100644 --- a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2-options.cnf +++ b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2-options.cnf @@ -4,6 +4,7 @@ wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" wsrep_debug=ON +innodb_safe_truncate=OFF [xtrabackup] backup-locks diff --git a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2.cnf b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2.cnf index 0025b259ec5..e347e259897 100644 --- a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2.cnf +++ b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2.cnf @@ -4,6 +4,7 @@ wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" wsrep_debug=ON +innodb_safe_truncate=OFF [mysqld.1] wsrep_provider_options='base_port=(a)mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_data_dir.cnf b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_data_dir.cnf index 89f23d24d87..43180173425 100644 --- a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_data_dir.cnf +++ b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_data_dir.cnf @@ -4,6 +4,7 @@ wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" wsrep_debug=ON +innodb_safe_truncate=OFF [mysqld.1] wsrep_provider_options='base_port=(a)mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_encrypt_with_key.cnf b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_encrypt_with_key.cnf index 63d05104a37..792b0d15ac4 100644 --- a/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_encrypt_with_key.cnf +++ b/mysql-test/suite/galera/t/galera_sst_xtrabackup-v2_encrypt_with_key.cnf @@ -4,6 +4,7 @@ wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" wsrep_debug=ON +innodb_safe_truncate=OFF [SST] tkey=(a)ENV.MYSQL_TEST_DIR/std_data/galera-key.pem
1 0
0 0
[Commits] fc2597b6082: Disable rocksdb.rocksdb_locks and rocksdb.lock_info in range locking mode
by Sergei Petrunia 27 Nov '18

27 Nov '18
revision-id: fc2597b6082d85d6f88a66bb08d619dcdf51a74e (fb-prod201801-169-gfc2597b6082) parent(s): 9447f482b2d086ee644f02caba9ce0d225bdd514 author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2018-11-27 00:31:49 +0300 message: Disable rocksdb.rocksdb_locks and rocksdb.lock_info in range locking mode --- mysql-test/suite/rocksdb/t/lock_info.test | 2 +- mysql-test/suite/rocksdb/t/rocksdb_locks.test | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/rocksdb/t/lock_info.test b/mysql-test/suite/rocksdb/t/lock_info.test index cd7359c8547..a277c1b8d8d 100644 --- a/mysql-test/suite/rocksdb/t/lock_info.test +++ b/mysql-test/suite/rocksdb/t/lock_info.test @@ -1,7 +1,7 @@ --source include/have_rocksdb.inc # Range Locking supports I_S.lock_info but its printout is different (see range_locking.test) -#--source suite/rocksdb/include/not_range_locking.inc +--source suite/rocksdb/include/not_range_locking.inc --disable_warnings DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/rocksdb/t/rocksdb_locks.test b/mysql-test/suite/rocksdb/t/rocksdb_locks.test index 9a25f39a8e3..37e5e105542 100644 --- a/mysql-test/suite/rocksdb/t/rocksdb_locks.test +++ b/mysql-test/suite/rocksdb/t/rocksdb_locks.test @@ -5,6 +5,9 @@ # --source include/have_debug.inc +# Range locking requests locks before doing snapshot checking. +--source suite/rocksdb/include/not_range_locking.inc + --enable_connect_log create table t1 (pk int not null primary key) engine=rocksdb;
1 0
0 0
[Commits] 9447f482b2d: Add support for printing range locks to information_schema.rocksdb_locks
by Sergei Petrunia 26 Nov '18

26 Nov '18
revision-id: 9447f482b2d086ee644f02caba9ce0d225bdd514 (fb-prod201801-168-g9447f482b2d) parent(s): 77b5ff58f83734a6925b76ec498f60fd85390035 author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2018-11-26 18:08:31 +0300 message: Add support for printing range locks to information_schema.rocksdb_locks Also disable rocksdb.lock_info with range locking as the output is different in range locking mode. --- mysql-test/suite/rocksdb/r/range_locking.result | 30 ++++++++++++++++++++++ mysql-test/suite/rocksdb/t/lock_info.test | 3 +++ mysql-test/suite/rocksdb/t/range_locking.test | 28 ++++++++++++++++++++ rocksdb | 2 +- storage/rocksdb/range_locking/locktree/locktree.cc | 28 ++++++++++++++++++++ storage/rocksdb/range_locking/locktree/locktree.h | 4 ++- storage/rocksdb/rdb_i_s.cc | 12 +++++++-- 7 files changed, 103 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/rocksdb/r/range_locking.result b/mysql-test/suite/rocksdb/r/range_locking.result index 621a1c6a93a..964458b783f 100644 --- a/mysql-test/suite/rocksdb/r/range_locking.result +++ b/mysql-test/suite/rocksdb/r/range_locking.result @@ -75,3 +75,33 @@ connection default; disconnect con1; disconnect con2; drop table t1; +# +# Test INFORMATION_SCHEMA.lock_info in range-locking mode +# +create table t1 ( +pk int primary key, +a int +) engine=rocksdb; +insert into t1 values +(10,10),(20,20),(30,30); +begin; +select * from t1 where pk=10 for update; +pk a +10 10 +select * from information_schema.rocksdb_locks; +COLUMN_FAMILY_ID TRANSACTION_ID KEY MODE +0 15 000001078000000a X +delete from t1 where pk between 25 and 40; +select * from information_schema.rocksdb_locks; +COLUMN_FAMILY_ID TRANSACTION_ID KEY MODE +0 15 0000010780000019 - 0000010780000028 X +0 15 000001078000000a X +rollback; +begin; +select * from t1 where pk between 2 and 9 for update; +pk a +select * from information_schema.rocksdb_locks; +COLUMN_FAMILY_ID TRANSACTION_ID KEY MODE +0 16 0000010780000002 - 0000010780000009 X +rollback; +drop table t1; diff --git a/mysql-test/suite/rocksdb/t/lock_info.test b/mysql-test/suite/rocksdb/t/lock_info.test index 1b624cf38c0..cd7359c8547 100644 --- a/mysql-test/suite/rocksdb/t/lock_info.test +++ b/mysql-test/suite/rocksdb/t/lock_info.test @@ -1,5 +1,8 @@ --source include/have_rocksdb.inc +# Range Locking supports I_S.lock_info but its printout is different (see range_locking.test) +#--source suite/rocksdb/include/not_range_locking.inc + --disable_warnings DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2; diff --git a/mysql-test/suite/rocksdb/t/range_locking.test b/mysql-test/suite/rocksdb/t/range_locking.test index e3a88b18210..4cf6f079ebe 100644 --- a/mysql-test/suite/rocksdb/t/range_locking.test +++ b/mysql-test/suite/rocksdb/t/range_locking.test @@ -93,3 +93,31 @@ disconnect con1; disconnect con2; drop table t1; +--echo # +--echo # Test INFORMATION_SCHEMA.lock_info in range-locking mode +--echo # +create table t1 ( + pk int primary key, + a int +) engine=rocksdb; + +insert into t1 values +(10,10),(20,20),(30,30); + +begin; +select * from t1 where pk=10 for update; + +select * from information_schema.rocksdb_locks; + +delete from t1 where pk between 25 and 40; +select * from information_schema.rocksdb_locks; + +rollback; +begin; +select * from t1 where pk between 2 and 9 for update; +select * from information_schema.rocksdb_locks; +rollback; + +drop table t1; + + diff --git a/rocksdb b/rocksdb index 2a1882e24b5..0320154e8fa 160000 --- a/rocksdb +++ b/rocksdb @@ -1 +1 @@ -Subproject commit 2a1882e24b51074ead248ad445bedbe336e0ecd3 +Subproject commit 0320154e8fa4a3a24f1a65fec2487e490dfb8507 diff --git a/storage/rocksdb/range_locking/locktree/locktree.cc b/storage/rocksdb/range_locking/locktree/locktree.cc index 75f78305214..625535a8e18 100644 --- a/storage/rocksdb/range_locking/locktree/locktree.cc +++ b/storage/rocksdb/range_locking/locktree/locktree.cc @@ -412,6 +412,34 @@ int locktree::acquire_write_lock(TXNID txnid, const DBT *left_key, const DBT *ri return try_acquire_lock(true, txnid, left_key, right_key, conflicts, big_txn); } +// typedef void (*dump_callback)(void *cdata, const DBT *left, const DBT *right, TXNID txnid); +void locktree::dump_locks(void *cdata, dump_callback cb) +{ + concurrent_tree::locked_keyrange lkr; + keyrange range; + range.create(toku_dbt_negative_infinity(), + toku_dbt_positive_infinity()); + + lkr.prepare(m_rangetree); + lkr.acquire(range); + + GrowableArray<row_lock> all_locks; + all_locks.init(); + iterate_and_get_overlapping_row_locks(&lkr, &all_locks); + + const size_t n_locks = all_locks.get_size(); + for (size_t i = 0; i < n_locks; i++) { + const row_lock lock = all_locks.fetch_unchecked(i); + (*cb)(cdata, + lock.range.get_left_key(), + lock.range.get_right_key(), + lock.txnid); + } + lkr.release(); + all_locks.deinit(); + range.destroy(); +} + void locktree::get_conflicts(bool is_write_request, TXNID txnid, const DBT *left_key, const DBT *right_key, txnid_set *conflicts) { diff --git a/storage/rocksdb/range_locking/locktree/locktree.h b/storage/rocksdb/range_locking/locktree/locktree.h index 0e6b5d6ee9d..28fe8cc99ab 100644 --- a/storage/rocksdb/range_locking/locktree/locktree.h +++ b/storage/rocksdb/range_locking/locktree/locktree.h @@ -320,7 +320,9 @@ namespace toku { // abstraction and code complexity. It is still fairly abstract // since the lock_request object is opaque struct lt_lock_request_info *get_lock_request_info(void); - + + typedef void (*dump_callback)(void *cdata, const DBT *left, const DBT *right, TXNID txnid); + void dump_locks(void *cdata, dump_callback cb); private: locktree_manager *m_mgr; DICTIONARY_ID m_dict_id; diff --git a/storage/rocksdb/rdb_i_s.cc b/storage/rocksdb/rdb_i_s.cc index 147ad7f1b76..7972f79a06d 100644 --- a/storage/rocksdb/rdb_i_s.cc +++ b/storage/rocksdb/rdb_i_s.cc @@ -1448,8 +1448,16 @@ static int rdb_i_s_lock_info_fill_table( for (const auto &lock : lock_info) { const uint32_t cf_id = lock.first; const auto &key_lock_info = lock.second; - const auto key_hexstr = rdb_hexdump(key_lock_info.key.c_str(), - key_lock_info.key.length(), FN_REFLEN); + auto key_hexstr = rdb_hexdump(key_lock_info.key.c_str(), + key_lock_info.key.length(), FN_REFLEN); + if (key_lock_info.has_key2) + { + const auto key2_hexstr = rdb_hexdump(key_lock_info.key2.c_str(), + key_lock_info.key2.length(), + FN_REFLEN - key_hexstr.size() - 3); + key_hexstr.append(" - "); + key_hexstr.append(key2_hexstr); + } for (const auto &id : key_lock_info.ids) { tables->table->field[RDB_LOCKS_FIELD::COLUMN_FAMILY_ID]->store(cf_id,
1 0
0 0
[Commits] 0320154e8: Support PessimisticTransactionDB::GetLockStatusData() in RangeLockMgr, too
by Sergei Petrunia 26 Nov '18

26 Nov '18
revision-id: 0320154e8fa4a3a24f1a65fec2487e490dfb8507 (v5.8-1017-g0320154e8) parent(s): 2a1882e24b51074ead248ad445bedbe336e0ecd3 author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2018-11-26 18:04:29 +0300 message: Support PessimisticTransactionDB::GetLockStatusData() in RangeLockMgr, too --- include/rocksdb/utilities/transaction_db.h | 2 + .../transactions/pessimistic_transaction_db.cc | 11 +- utilities/transactions/transaction_lock_mgr.cc | 37 ++++++ utilities/transactions/transaction_lock_mgr.h | 142 +++++++++++---------- 4 files changed, 121 insertions(+), 71 deletions(-) diff --git a/include/rocksdb/utilities/transaction_db.h b/include/rocksdb/utilities/transaction_db.h index 57b5d2767..16fa8a4a7 100644 --- a/include/rocksdb/utilities/transaction_db.h +++ b/include/rocksdb/utilities/transaction_db.h @@ -164,8 +164,10 @@ struct TransactionDBWriteOptimizations { struct KeyLockInfo { std::string key; + std::string key2; // Used when range locking is used std::vector<TransactionID> ids; bool exclusive; + bool has_key2 = false; // TRUE <=> key2 has a value }; struct DeadlockInfo { diff --git a/utilities/transactions/pessimistic_transaction_db.cc b/utilities/transactions/pessimistic_transaction_db.cc index a74bf3e6b..c5635cf05 100644 --- a/utilities/transactions/pessimistic_transaction_db.cc +++ b/utilities/transactions/pessimistic_transaction_db.cc @@ -40,7 +40,8 @@ PessimisticTransactionDB::PessimisticTransactionDB( txn_db_options_.custom_mutex_factory ? txn_db_options_.custom_mutex_factory : std::shared_ptr<TransactionDBMutexFactory>( - new TransactionDBMutexFactoryImpl())) { + new TransactionDBMutexFactoryImpl())), + range_lock_mgr_(this) { assert(db_impl_ != nullptr); info_log_ = db_impl_->GetDBOptions().info_log; } @@ -71,7 +72,8 @@ PessimisticTransactionDB::PessimisticTransactionDB( txn_db_options_.custom_mutex_factory ? txn_db_options_.custom_mutex_factory : std::shared_ptr<TransactionDBMutexFactory>( - new TransactionDBMutexFactoryImpl())) { + new TransactionDBMutexFactoryImpl())), + range_lock_mgr_(this) { assert(db_impl_ != nullptr); } @@ -619,7 +621,10 @@ void PessimisticTransactionDB::GetAllPreparedTransactions( TransactionLockMgr::LockStatusData PessimisticTransactionDB::GetLockStatusData() { - return lock_mgr_.GetLockStatusData(); + if (use_range_locking) + return range_lock_mgr_.GetLockStatusData(); + else + return lock_mgr_.GetLockStatusData(); } std::vector<DeadlockPath> PessimisticTransactionDB::GetDeadlockInfoBuffer() { diff --git a/utilities/transactions/transaction_lock_mgr.cc b/utilities/transactions/transaction_lock_mgr.cc index 4b2a66235..ae317742e 100644 --- a/utilities/transactions/transaction_lock_mgr.cc +++ b/utilities/transactions/transaction_lock_mgr.cc @@ -848,6 +848,43 @@ void TransactionLockMgr::UnLock(const PessimisticTransaction* txn, } } +struct LOCK_PRINT_CONTEXT { + TransactionLockMgr::LockStatusData *data; + // this will not be needed when locks are per-column-family: + uint32_t cfh_id; +}; + +static +void push_into_lock_status_data(void* param, const DBT *left, + const DBT *right, TXNID txnid) +{ + struct LOCK_PRINT_CONTEXT *ctx= (LOCK_PRINT_CONTEXT*)param; + struct KeyLockInfo info; + + info.key.append((const char*)left->data, (size_t)left->size); + info.exclusive= true; + + if (!(left->size == right->size && + !memcmp(left->data, right->data, left->size))) + { + // not a single-point lock + info.has_key2= true; + info.key2.append((const char*)right->data, right->size); + } + + info.ids.push_back(txnid); + ctx->data->insert({ctx->cfh_id, info}); +} + + +TransactionLockMgr::LockStatusData RangeLockMgr::GetLockStatusData() { + TransactionLockMgr::LockStatusData data; + LOCK_PRINT_CONTEXT ctx = {&data, GetColumnFamilyID(my_txn_db->DefaultColumnFamily()) }; + lt->dump_locks((void*)&ctx, push_into_lock_status_data); + return data; +} + + TransactionLockMgr::LockStatusData TransactionLockMgr::GetLockStatusData() { LockStatusData data; // Lock order here is important. The correct order is lock_map_mutex_, then diff --git a/utilities/transactions/transaction_lock_mgr.h b/utilities/transactions/transaction_lock_mgr.h index cbbb12579..9f7f61db7 100644 --- a/utilities/transactions/transaction_lock_mgr.h +++ b/utilities/transactions/transaction_lock_mgr.h @@ -76,74 +76,6 @@ class BaseLockMgr { virtual ~BaseLockMgr(){} }; -using namespace toku; - - -/* - A lock manager that supports Range-based locking. -*/ -class RangeLockMgr : - public BaseLockMgr, - public RangeLockMgrControl -{ - public: - void AddColumnFamily(uint32_t column_family_id) override { /* do nothing */ } - void RemoveColumnFamily(uint32_t column_family_id) override { /* do nothing */ } - - Status TryLock(PessimisticTransaction* txn, uint32_t column_family_id, - const std::string& key, Env* env, bool exclusive) override ; - - // Get a lock on a range - // (TODO: this allows to acquire exclusive range locks although they are not - // used ATM) - Status TryRangeLock(PessimisticTransaction* txn, - uint32_t column_family_id, - const rocksdb::Slice &start_key, - const rocksdb::Slice &end_key, - bool exclusive); - - void UnLock(const PessimisticTransaction* txn, const TransactionKeyMap* keys, - Env* env) override ; - /* - Same as above, but *keys is guaranteed to hold all the locks obtained by - the transaction. - */ - void UnLockAll(const PessimisticTransaction* txn, const TransactionKeyMap* keys, - Env* env); - void UnLock(PessimisticTransaction* txn, uint32_t column_family_id, - const std::string& key, Env* env) override ; - - RangeLockMgr() - { - ltm.create(on_create, on_destroy, on_escalate, NULL); - toku::comparator cmp; - cmp.create(toku_builtin_compare_fun, NULL); - DICTIONARY_ID dict_id = { .dictid = 1 }; - lt= ltm.get_lt(dict_id, cmp , /* on_create_extra*/nullptr); - - } - - void KillLockWait(void *cdata); - - int set_max_lock_memory(size_t max_lock_memory) override - { - return ltm.set_max_lock_memory(max_lock_memory); - } - - uint64_t get_escalation_count() override; - - private: - toku::locktree_manager ltm; - toku::locktree *lt; // only one tree for now - - // Callbacks - static int on_create(locktree *lt, void *extra) { return 0; /* no error */ } - static void on_destroy(locktree *lt) {} - static void on_escalate(TXNID txnid, const locktree *lt, - const range_buffer &buffer, void *extra) {} - -}; - class TransactionLockMgr { public: @@ -248,5 +180,79 @@ class TransactionLockMgr { void operator=(const TransactionLockMgr&); }; + +using namespace toku; + +/* + A lock manager that supports Range-based locking. +*/ +class RangeLockMgr : + public BaseLockMgr, + public RangeLockMgrControl +{ + public: + void AddColumnFamily(uint32_t column_family_id) override { /* do nothing */ } + void RemoveColumnFamily(uint32_t column_family_id) override { /* do nothing */ } + + Status TryLock(PessimisticTransaction* txn, uint32_t column_family_id, + const std::string& key, Env* env, bool exclusive) override ; + + // Get a lock on a range + // (TODO: this allows to acquire exclusive range locks although they are not + // used ATM) + Status TryRangeLock(PessimisticTransaction* txn, + uint32_t column_family_id, + const rocksdb::Slice &start_key, + const rocksdb::Slice &end_key, + bool exclusive); + + void UnLock(const PessimisticTransaction* txn, const TransactionKeyMap* keys, + Env* env) override ; + /* + Same as above, but *keys is guaranteed to hold all the locks obtained by + the transaction. + */ + void UnLockAll(const PessimisticTransaction* txn, const TransactionKeyMap* keys, + Env* env); + void UnLock(PessimisticTransaction* txn, uint32_t column_family_id, + const std::string& key, Env* env) override ; + + RangeLockMgr(TransactionDB* txn_db) : my_txn_db(txn_db) + { + ltm.create(on_create, on_destroy, on_escalate, NULL); + toku::comparator cmp; + cmp.create(toku_builtin_compare_fun, NULL); + DICTIONARY_ID dict_id = { .dictid = 1 }; + lt= ltm.get_lt(dict_id, cmp , /* on_create_extra*/nullptr); + + } + + void KillLockWait(void *cdata); + + int set_max_lock_memory(size_t max_lock_memory) override + { + return ltm.set_max_lock_memory(max_lock_memory); + } + + uint64_t get_escalation_count() override; + + TransactionLockMgr::LockStatusData GetLockStatusData(); + + private: + toku::locktree_manager ltm; + toku::locktree *lt; // only one tree for now + + TransactionDB* my_txn_db; + + // Callbacks + static int on_create(locktree *lt, void *extra) { return 0; /* no error */ } + static void on_destroy(locktree *lt) {} + static void on_escalate(TXNID txnid, const locktree *lt, + const range_buffer &buffer, void *extra) {} + +}; + + + } // namespace rocksdb #endif // ROCKSDB_LITE
1 0
0 0
[Commits] 06a7e79c396: MDEV-17811: Add deprecation information for xtrabackup
by jan 26 Nov '18

26 Nov '18
revision-id: 06a7e79c396e21271d4cc015a7d449f4f13ec45c (mariadb-10.2.19-20-g06a7e79c396) parent(s): 3728b11f879634a7ddab39cb951aedceadba80b1 author: Jan Lindström committer: Jan Lindström timestamp: 2018-11-26 12:57:35 +0200 message: MDEV-17811: Add deprecation information for xtrabackup --- storage/innobase/handler/ha_innodb.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index e6c57b015a0..80e79b4b90f 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -154,6 +154,7 @@ innodb_check_deprecated(void); #include "dict0priv.h" #include "ut0byte.h" #include <mysql/service_md5.h> +#include "wsrep_sst.h" extern MYSQL_PLUGIN_IMPORT MYSQL_BIN_LOG mysql_bin_log; @@ -3860,6 +3861,23 @@ innobase_init( ib::info() << "For Galera, using innodb_lock_schedule_algorithm=fcfs"; innodb_lock_schedule_algorithm = INNODB_LOCK_SCHEDULE_ALGORITHM_FCFS; } + + /* Print deprecation info if xtrabackup is used for SST method */ + if (global_system_variables.wsrep_on + && wsrep_sst_method + && (!strcmp(wsrep_sst_method, "xtrabackup") + || !strcmp(wsrep_sst_method, "xtrabackup-v2"))) { + ib::info() << "Galera SST method xtrabackup is deprecated and the " + " support for it may be removed in future releases."; + + /* We can't blindly turn on this as it will cause a + modification of the redo log format identifier. See + MDEV-13564 for more information. */ + if (!srv_safe_truncate) { + ib::info() << "Requested xtrabackup based SST for Galera but" + << "innodb_safe_truncate is disabled."; + } + } #endif /* WITH_WSREP */ #ifndef HAVE_LZ4
1 0
0 0
[Commits] 77b5ff58f83: Don't run rocksdb.select_lock_in_share_mode with range locking
by Sergei Petrunia 26 Nov '18

26 Nov '18
revision-id: 77b5ff58f83734a6925b76ec498f60fd85390035 (fb-prod201801-167-g77b5ff58f83) parent(s): 01688fb01660a363d8ee3f594d9d97455db8c5ae author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2018-11-26 11:52:52 +0300 message: Don't run rocksdb.select_lock_in_share_mode with range locking --- mysql-test/suite/rocksdb/t/select_lock_in_share_mode.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysql-test/suite/rocksdb/t/select_lock_in_share_mode.test b/mysql-test/suite/rocksdb/t/select_lock_in_share_mode.test index 23ce6d45234..cf9d53ff88a 100644 --- a/mysql-test/suite/rocksdb/t/select_lock_in_share_mode.test +++ b/mysql-test/suite/rocksdb/t/select_lock_in_share_mode.test @@ -1,5 +1,8 @@ --source include/have_rocksdb.inc +# Range locking only supports exclusive locks currently. +--source suite/rocksdb/include/not_range_locking.inc + # # SELECT .. LOCK IN SHARE MODE #
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • ...
  • 1461
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.