diff options
-rw-r--r-- | mysql-test/r/mysqld--help.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/mariabackup/system_versioning.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/mariabackup/system_versioning.test | 2 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/r/sysvars_server_embedded.result | 14 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result | 14 | ||||
-rw-r--r-- | mysql-test/suite/versioning/common.opt | 1 | ||||
-rw-r--r-- | mysql-test/suite/versioning/r/insert.result | 6 | ||||
-rw-r--r-- | mysql-test/suite/versioning/r/online.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/versioning/r/trx_id.result | 24 | ||||
-rw-r--r-- | mysql-test/suite/versioning/t/insert.test | 4 | ||||
-rw-r--r-- | mysql-test/suite/versioning/t/online.test | 3 | ||||
-rw-r--r-- | mysql-test/suite/versioning/t/trx_id.test | 22 | ||||
-rw-r--r-- | sql/handler.cc | 4 | ||||
-rw-r--r-- | sql/mysqld.cc | 32 | ||||
-rw-r--r-- | sql/mysqld.h | 2 | ||||
-rw-r--r-- | sql/share/errmsg-utf8.txt | 5 | ||||
-rw-r--r-- | sql/sql_table.cc | 2 | ||||
-rw-r--r-- | sql/sys_vars.cc | 18 | ||||
-rw-r--r-- | sql/table.cc | 23 | ||||
-rw-r--r-- | sql/table.h | 6 | ||||
-rw-r--r-- | sql/vtmd.cc | 2 |
21 files changed, 22 insertions, 174 deletions
diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index 2ca655939a9..f980018b86b 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -1227,9 +1227,6 @@ The following options may be given as the first argument: Use simple algorithm of timestamp handling in InnoDB instead of TRX_SEES (Defaults to on; use --skip-system-versioning-innodb-algorithm-simple to disable.) - --system-versioning-transaction-registry - Enable or disable update of - `mysql`.`transaction_registry` --table-cache=# Deprecated; use --table-open-cache instead. --table-definition-cache=# The number of cached table definitions @@ -1660,7 +1657,6 @@ sync-relay-log-info 10000 sysdate-is-now FALSE system-versioning-alter-history ERROR system-versioning-innodb-algorithm-simple TRUE -system-versioning-transaction-registry FALSE table-cache 431 table-definition-cache 400 table-open-cache 431 diff --git a/mysql-test/suite/mariabackup/system_versioning.result b/mysql-test/suite/mariabackup/system_versioning.result index 3b3cd8f938c..0e1e9253dd0 100644 --- a/mysql-test/suite/mariabackup/system_versioning.result +++ b/mysql-test/suite/mariabackup/system_versioning.result @@ -18,9 +18,6 @@ select a from t for system_time all; a 2 1 -set global system_versioning_transaction_registry=on; -Warnings: -Warning 4143 Transaction-based system versioning is EXPERIMENTAL and is subject to change in future. create or replace table t ( a int, s bigint unsigned as row start invisible, @@ -50,4 +47,3 @@ a 2 1 drop table t; -set global system_versioning_transaction_registry=off; diff --git a/mysql-test/suite/mariabackup/system_versioning.test b/mysql-test/suite/mariabackup/system_versioning.test index 99392c3fc5b..1ced00b4588 100644 --- a/mysql-test/suite/mariabackup/system_versioning.test +++ b/mysql-test/suite/mariabackup/system_versioning.test @@ -22,7 +22,6 @@ select a from t for system_time all; rmdir $targetdir; -set global system_versioning_transaction_registry=on; create or replace table t ( a int, s bigint unsigned as row start invisible, @@ -48,5 +47,4 @@ select * from t; select a from t for system_time all; drop table t; -set global system_versioning_transaction_registry=off; rmdir $targetdir; diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index c8073332276..49c384164c9 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -4100,20 +4100,6 @@ NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST OFF,ON READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL -VARIABLE_NAME SYSTEM_VERSIONING_TRANSACTION_REGISTRY -SESSION_VALUE NULL -GLOBAL_VALUE OFF -GLOBAL_VALUE_ORIGIN COMPILE-TIME -DEFAULT_VALUE OFF -VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BOOLEAN -VARIABLE_COMMENT Enable or disable update of `mysql`.`transaction_registry` -NUMERIC_MIN_VALUE NULL -NUMERIC_MAX_VALUE NULL -NUMERIC_BLOCK_SIZE NULL -ENUM_VALUE_LIST OFF,ON -READ_ONLY NO -COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME TABLE_DEFINITION_CACHE SESSION_VALUE NULL GLOBAL_VALUE 400 diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 0ebf5d71f4e..9ee1d72d406 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -5052,20 +5052,6 @@ NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST OFF,ON READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL -VARIABLE_NAME SYSTEM_VERSIONING_TRANSACTION_REGISTRY -SESSION_VALUE NULL -GLOBAL_VALUE OFF -GLOBAL_VALUE_ORIGIN COMPILE-TIME -DEFAULT_VALUE OFF -VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BOOLEAN -VARIABLE_COMMENT Enable or disable update of `mysql`.`transaction_registry` -NUMERIC_MIN_VALUE NULL -NUMERIC_MAX_VALUE NULL -NUMERIC_BLOCK_SIZE NULL -ENUM_VALUE_LIST OFF,ON -READ_ONLY NO -COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME TABLE_DEFINITION_CACHE SESSION_VALUE NULL GLOBAL_VALUE 400 diff --git a/mysql-test/suite/versioning/common.opt b/mysql-test/suite/versioning/common.opt index 391f1a5cba9..412290a7585 100644 --- a/mysql-test/suite/versioning/common.opt +++ b/mysql-test/suite/versioning/common.opt @@ -1,2 +1 @@ ---system-versioning-transaction-registry=1 --plugin-load-add=test_versioning diff --git a/mysql-test/suite/versioning/r/insert.result b/mysql-test/suite/versioning/r/insert.result index 943175de6c5..493f34a97f3 100644 --- a/mysql-test/suite/versioning/r/insert.result +++ b/mysql-test/suite/versioning/r/insert.result @@ -284,13 +284,7 @@ rollback to a; commit; call verify_vtq; No A B C D -set global system_versioning_transaction_registry= off; insert into t2(x) values (1); -insert into t1(x) values (1); -ERROR HY000: Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry). -set global system_versioning_transaction_registry= on; -Warnings: -Warning 4134 Transaction-based system versioning is EXPERIMENTAL and is subject to change in future. create or replace table t1 ( x int, y int as (x) virtual, diff --git a/mysql-test/suite/versioning/r/online.result b/mysql-test/suite/versioning/r/online.result index 267da5db8fa..b2a34481d63 100644 --- a/mysql-test/suite/versioning/r/online.result +++ b/mysql-test/suite/versioning/r/online.result @@ -12,9 +12,6 @@ alter table t drop system versioning, lock=none; ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED alter table t drop system versioning, algorithm=inplace; ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Not implemented for system-versioned tables. Try ALGORITHM=COPY -set global system_versioning_transaction_registry=on; -Warnings: -Warning 4134 Transaction-based system versioning is EXPERIMENTAL and is subject to change in future. create or replace table t (a int, b int) engine=innodb; alter table t add s bigint unsigned as row start, @@ -34,5 +31,4 @@ alter table t add index idx(a), lock=none; alter table t drop column s, drop column e; alter table t drop system versioning, lock=none; ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED -set global system_versioning_transaction_registry=off; drop table t; diff --git a/mysql-test/suite/versioning/r/trx_id.result b/mysql-test/suite/versioning/r/trx_id.result index 800d61beba7..a88ba7eec2b 100644 --- a/mysql-test/suite/versioning/r/trx_id.result +++ b/mysql-test/suite/versioning/r/trx_id.result @@ -1,16 +1,3 @@ -select @@system_versioning_transaction_registry; -@@system_versioning_transaction_registry -0 -create or replace table t1 ( -x int, -sys_trx_start bigint(20) unsigned as row start invisible, -sys_trx_end bigint(20) unsigned as row end invisible, -period for system_time (sys_trx_start, sys_trx_end) -) with system versioning engine innodb; -ERROR HY000: Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry). -set global system_versioning_transaction_registry= 1; -Warnings: -Warning 4134 Transaction-based system versioning is EXPERIMENTAL and is subject to change in future. create or replace table t1 ( x int, sys_trx_start bigint(20) unsigned as row start invisible, @@ -18,21 +5,11 @@ sys_trx_end bigint(20) unsigned as row end invisible, period for system_time (sys_trx_start, sys_trx_end) ) with system versioning engine innodb; insert into t1 (x) values (1); -set global system_versioning_transaction_registry= 0; -insert into t1 (x) values (2); -ERROR HY000: Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry). -delete from t1; -ERROR HY000: Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry). -update t1 set x= 3; -ERROR HY000: Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry). # ALTER ADD SYSTEM VERSIONING should write to mysql.transaction_registry create function check_result (cond boolean) returns char(50) deterministic return if(cond = 1, '[CORRECT]', '[INCORRECT]'); set @@system_versioning_alter_history=keep; -set global system_versioning_transaction_registry=on; -Warnings: -Warning 4134 Transaction-based system versioning is EXPERIMENTAL and is subject to change in future. create or replace table t1 (x int) engine innodb; insert into t1 values (1); alter table t1 @@ -92,5 +69,4 @@ select sys_end = 18446744073709551615 as transaction_based from t1 for system_ti transaction_based 1 drop table t1; -set global system_versioning_transaction_registry=off; drop function check_result; diff --git a/mysql-test/suite/versioning/t/insert.test b/mysql-test/suite/versioning/t/insert.test index c7c0e0a7c0b..f2fbe31e1d0 100644 --- a/mysql-test/suite/versioning/t/insert.test +++ b/mysql-test/suite/versioning/t/insert.test @@ -188,11 +188,7 @@ rollback to a; commit; call verify_vtq; -set global system_versioning_transaction_registry= off; insert into t2(x) values (1); ---error ER_VERS_TRT_IS_DISABLED -insert into t1(x) values (1); -set global system_versioning_transaction_registry= on; # virtual columns create or replace table t1 ( diff --git a/mysql-test/suite/versioning/t/online.test b/mysql-test/suite/versioning/t/online.test index 3b1c20792d2..4fbd5d85100 100644 --- a/mysql-test/suite/versioning/t/online.test +++ b/mysql-test/suite/versioning/t/online.test @@ -18,7 +18,6 @@ alter table t drop system versioning, lock=none; alter table t drop system versioning, algorithm=inplace; -set global system_versioning_transaction_registry=on; create or replace table t (a int, b int) engine=innodb; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON @@ -40,6 +39,4 @@ alter table t drop column s, drop column e; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON alter table t drop system versioning, lock=none; -set global system_versioning_transaction_registry=off; - drop table t; diff --git a/mysql-test/suite/versioning/t/trx_id.test b/mysql-test/suite/versioning/t/trx_id.test index d42333d56d9..ee4e927b506 100644 --- a/mysql-test/suite/versioning/t/trx_id.test +++ b/mysql-test/suite/versioning/t/trx_id.test @@ -1,18 +1,6 @@ -- source include/have_innodb.inc -- source include/not_embedded.inc -select @@system_versioning_transaction_registry; - ---error ER_VERS_TRT_IS_DISABLED -create or replace table t1 ( - x int, - sys_trx_start bigint(20) unsigned as row start invisible, - sys_trx_end bigint(20) unsigned as row end invisible, - period for system_time (sys_trx_start, sys_trx_end) -) with system versioning engine innodb; - -set global system_versioning_transaction_registry= 1; - create or replace table t1 ( x int, sys_trx_start bigint(20) unsigned as row start invisible, @@ -22,21 +10,12 @@ create or replace table t1 ( insert into t1 (x) values (1); -set global system_versioning_transaction_registry= 0; ---error ER_VERS_TRT_IS_DISABLED -insert into t1 (x) values (2); ---error ER_VERS_TRT_IS_DISABLED -delete from t1; ---error ER_VERS_TRT_IS_DISABLED -update t1 set x= 3; - --echo # ALTER ADD SYSTEM VERSIONING should write to mysql.transaction_registry create function check_result (cond boolean) returns char(50) deterministic return if(cond = 1, '[CORRECT]', '[INCORRECT]'); set @@system_versioning_alter_history=keep; -set global system_versioning_transaction_registry=on; create or replace table t1 (x int) engine innodb; insert into t1 values (1); @@ -93,5 +72,4 @@ alter table t1 drop column sys_start, drop column sys_end; select sys_end = 18446744073709551615 as transaction_based from t1 for system_time all; drop table t1; -set global system_versioning_transaction_registry=off; drop function check_result; diff --git a/sql/handler.cc b/sql/handler.cc index 36d4879e242..5a008f0dbee 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1432,7 +1432,7 @@ int ha_commit_trans(THD *thd, bool all) if (trx_end_id) { - if (!use_transaction_registry) + if (!TR_table::use_transaction_registry) { my_error(ER_VERS_TRT_IS_DISABLED, MYF(0)); goto err; @@ -7517,7 +7517,7 @@ bool Vers_parse_info::check_sys_fields(const char *table_name, { if (found == check_unit) { - if (found == VERS_TRX_ID && !use_transaction_registry) + if (found == VERS_TRX_ID && !TR_table::use_transaction_registry) { my_error(ER_VERS_TRT_IS_DISABLED, MYF(0)); return true; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c0d55306871..321264e8d7b 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -536,8 +536,6 @@ ulonglong slave_skipped_errors; ulong feature_files_opened_with_delayed_keys= 0, feature_check_constraint= 0; ulonglong denied_connections; my_decimal decimal_zero; -my_bool opt_transaction_registry= 1; -my_bool use_transaction_registry= 1; /* Maximum length of parameter value which can be set through @@ -6023,36 +6021,6 @@ int mysqld_main(int argc, char **argv) if (Events::init((THD*) 0, opt_noacl || opt_bootstrap)) unireg_abort(1); - if (opt_transaction_registry) - { - use_transaction_registry= true; - if (opt_bootstrap) - { - use_transaction_registry= false; - } - else - { - THD *thd = new THD(0); - thd->thread_stack= (char*) &thd; - thd->store_globals(); - { - TR_table trt(thd); - if (trt.check()) - { - use_transaction_registry= false; - } - } - - trans_commit_stmt(thd); - delete thd; - } - } - else - use_transaction_registry= false; - - if (opt_transaction_registry && !use_transaction_registry) - sql_print_information("Disabled transaction registry."); - if (WSREP_ON) { if (opt_bootstrap) diff --git a/sql/mysqld.h b/sql/mysqld.h index 3175a1a385c..88a0fa00071 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -315,8 +315,6 @@ extern my_bool encrypt_tmp_disk_tables, encrypt_tmp_files; extern ulong encryption_algorithm; extern const char *encryption_algorithm_names[]; extern const char *quoted_string; -extern my_bool opt_transaction_registry; -extern my_bool use_transaction_registry; #ifdef HAVE_PSI_INTERFACE #ifdef HAVE_MMAP diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 5a404997a56..a6b399810ea 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -7889,7 +7889,7 @@ ER_NOT_LOG_TABLE eng "Table %`s.%`s is not a log table" ER_VERS_TRT_IS_DISABLED - eng "Temporal operation requires `mysql.transaction_registry` (@@system_versioning_transaction_registry)." + eng "Transaction registry is disabled" ER_VERS_DUPLICATE_ROW_START_END eng "Duplicate ROW %s column %`s" @@ -7897,9 +7897,6 @@ ER_VERS_DUPLICATE_ROW_START_END ER_VERS_ALREADY_VERSIONED eng "Table %`s is already system-versioned" -WARN_VERS_TRT_EXPERIMENTAL - eng "Transaction-based system versioning is EXPERIMENTAL and is subject to change in future." - ER_VERS_TRUNCATE_VIEW eng "DELETE HISTORY from VIEW is prohibited" diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 58e29ad9b18..d1bb661c3b4 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7609,7 +7609,7 @@ static bool mysql_inplace_alter_table(THD *thd, ulonglong trx_end_id= table->file->ht->prepare_commit_versioned(thd, &trx_start_id); if (trx_end_id) { - if (!use_transaction_registry) + if (!TR_table::use_transaction_registry) { my_error(ER_VERS_TRT_IS_DISABLED, MYF(0)); goto rollback; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 3b37fac5c39..d00f35e2028 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -427,24 +427,6 @@ static Sys_var_enum Sys_vers_alter_history( SESSION_VAR(vers_alter_history), CMD_LINE(REQUIRED_ARG), vers_alter_history_keywords, DEFAULT(VERS_ALTER_HISTORY_ERROR)); -static bool update_transaction_registry(sys_var *self, THD *thd, enum_var_type type) -{ - use_transaction_registry= opt_transaction_registry; - if (use_transaction_registry) - { - push_warning(thd, Sql_condition::WARN_LEVEL_WARN, WARN_VERS_TRT_EXPERIMENTAL, - ER_THD(thd, WARN_VERS_TRT_EXPERIMENTAL)); - } - return false; -} - -static Sys_var_mybool Sys_vers_transaction_registry( - "system_versioning_transaction_registry", - "Enable or disable update of `mysql`.`transaction_registry`", - GLOBAL_VAR(opt_transaction_registry), CMD_LINE(OPT_ARG), - DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, - 0, ON_UPDATE(update_transaction_registry)); - static Sys_var_ulonglong Sys_binlog_cache_size( "binlog_cache_size", "The size of the transactional cache for " "updates to transactional engines for the binary log. " diff --git a/sql/table.cc b/sql/table.cc index d7e7e3f0a89..5a87acd4ed4 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -8579,6 +8579,8 @@ void TABLE_SHARE::vers_destroy() } } +enum TR_table::enabled TR_table::use_transaction_registry= TR_table::MAYBE; + TR_table::TR_table(THD* _thd, bool rw) : thd(_thd), open_tables_backup(NULL) { @@ -8601,6 +8603,11 @@ bool TR_table::open() bool error= !open_log_table(thd, this, open_tables_backup); thd->temporary_tables= temporary_tables; + if (use_transaction_registry == MAYBE) + error= check(error); + + use_transaction_registry= error ? NO : YES; + return error; } @@ -8787,27 +8794,21 @@ void TR_table::warn_schema_incorrect(const char *reason) { if (MYSQL_VERSION_ID == table->s->mysql_version) { - sql_print_error("`%s.%s` schema is incorrect: %s.", db, table_name, reason); + sql_print_error("%`s.%`s schema is incorrect: %s.", db, table_name, reason); } else { - sql_print_error("`%s.%s` schema is incorrect: %s. Created with MariaDB %d, " + sql_print_error("%`s.%`s schema is incorrect: %s. Created with MariaDB %d, " "now running %d.", db, table_name, reason, MYSQL_VERSION_ID, static_cast<int>(table->s->mysql_version)); } } -bool TR_table::check() +bool TR_table::check(bool error) { - if (!ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)) - { - sql_print_information("`%s.%s` requires InnoDB storage engine.", db, table_name); - return true; - } - - if (open()) + if (error) { - sql_print_warning("`%s.%s` does not exist (open failed).", db, table_name); + sql_print_warning("%`s.%`s does not exist (open failed).", db, table_name); return true; } diff --git a/sql/table.h b/sql/table.h index 6899b65eb57..71858be6229 100644 --- a/sql/table.h +++ b/sql/table.h @@ -2992,6 +2992,10 @@ public: FLD_ISO_LEVEL, FIELD_COUNT }; + + enum enabled {NO, MAYBE, YES}; + static enum enabled use_transaction_registry; + /** @param[in,out] Thread handle @param[in] Current transaction is read-write. @@ -3084,7 +3088,7 @@ public: @retval true if schema is incorrect and false otherwise */ - bool check(); + bool check(bool error); TABLE * operator-> () const { diff --git a/sql/vtmd.cc b/sql/vtmd.cc index 566638bbc46..a78fdd75a2a 100644 --- a/sql/vtmd.cc +++ b/sql/vtmd.cc @@ -257,7 +257,7 @@ err: quit: if (!result && vtmd.table->file->ht->prepare_commit_versioned) { - DBUG_ASSERT(use_transaction_registry); // FIXME: disable survival mode while TRT is disabled + DBUG_ASSERT(TR_table::use_transaction_registry); // FIXME: disable survival mode while TRT is disabled TR_table trt(thd, true); ulonglong trx_start_id= 0; ulonglong trx_end_id= vtmd.table->file->ht->prepare_commit_versioned(thd, &trx_start_id); |