summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/mysqld--help.result4
-rw-r--r--mysql-test/suite/mariabackup/system_versioning.result4
-rw-r--r--mysql-test/suite/mariabackup/system_versioning.test2
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result14
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result14
-rw-r--r--mysql-test/suite/versioning/common.opt1
-rw-r--r--mysql-test/suite/versioning/r/insert.result6
-rw-r--r--mysql-test/suite/versioning/r/online.result4
-rw-r--r--mysql-test/suite/versioning/r/trx_id.result24
-rw-r--r--mysql-test/suite/versioning/t/insert.test4
-rw-r--r--mysql-test/suite/versioning/t/online.test3
-rw-r--r--mysql-test/suite/versioning/t/trx_id.test22
-rw-r--r--sql/handler.cc4
-rw-r--r--sql/mysqld.cc32
-rw-r--r--sql/mysqld.h2
-rw-r--r--sql/share/errmsg-utf8.txt5
-rw-r--r--sql/sql_table.cc2
-rw-r--r--sql/sys_vars.cc18
-rw-r--r--sql/table.cc23
-rw-r--r--sql/table.h6
-rw-r--r--sql/vtmd.cc2
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);