Commit 157150cf authored by Eugene Kosov's avatar Eugene Kosov Committed by Aleksey Midenkov

MDEV-14769 Temporary table can be altered into system versioning +...

MDEV-14769 Temporary table can be altered into system versioning + system_versioning_alter_history has no effect
parent 7069071d
...@@ -429,9 +429,11 @@ alter table t1 engine=myisam; ...@@ -429,9 +429,11 @@ alter table t1 engine=myisam;
# MDEV-14692 crash in MDL_context::upgrade_shared_lock() # MDEV-14692 crash in MDL_context::upgrade_shared_lock()
create or replace temporary table t (a int); create or replace temporary table t (a int);
alter table t change column if exists b c bigint unsigned generated always as row start; alter table t change column if exists b c bigint unsigned generated always as row start;
ERROR HY000: This is not yet supported for generated columns ERROR HY000: System versioning prohibited for TEMPORARY tables
alter table t change column if exists b c bigint unsigned generated always as row end; alter table t change column if exists b c bigint unsigned generated always as row end;
ERROR HY000: This is not yet supported for generated columns ERROR HY000: System versioning prohibited for TEMPORARY tables
alter table t add system versioning;
ERROR HY000: System versioning prohibited for TEMPORARY tables
drop table t; drop table t;
# MDEV-14744 trx_id-based and transaction-based mixup in assertion # MDEV-14744 trx_id-based and transaction-based mixup in assertion
create or replace table t (c text) engine=innodb with system versioning; create or replace table t (c text) engine=innodb with system versioning;
......
...@@ -348,7 +348,7 @@ create or replace table t (sys_trx_end int); ...@@ -348,7 +348,7 @@ create or replace table t (sys_trx_end int);
alter table t with system versioning; alter table t with system versioning;
ERROR 42S21: Duplicate column name 'sys_trx_end' ERROR 42S21: Duplicate column name 'sys_trx_end'
create or replace temporary table t (x28 int) with system versioning; create or replace temporary table t (x28 int) with system versioning;
ERROR HY000: WITH SYSTEM VERSIONING prohibited for TEMPORARY tables ERROR HY000: System versioning prohibited for TEMPORARY tables
create or replace table t1 ( create or replace table t1 (
x29 int unsigned, x29 int unsigned,
Sys_start0 timestamp(6) as row start invisible, Sys_start0 timestamp(6) as row start invisible,
......
...@@ -364,10 +364,12 @@ alter table t1 engine=myisam; ...@@ -364,10 +364,12 @@ alter table t1 engine=myisam;
--echo # MDEV-14692 crash in MDL_context::upgrade_shared_lock() --echo # MDEV-14692 crash in MDL_context::upgrade_shared_lock()
create or replace temporary table t (a int); create or replace temporary table t (a int);
--error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN --error ER_VERS_TEMPORARY
alter table t change column if exists b c bigint unsigned generated always as row start; alter table t change column if exists b c bigint unsigned generated always as row start;
--error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN --error ER_VERS_TEMPORARY
alter table t change column if exists b c bigint unsigned generated always as row end; alter table t change column if exists b c bigint unsigned generated always as row end;
--error ER_VERS_TEMPORARY
alter table t add system versioning;
drop table t; drop table t;
--echo # MDEV-14744 trx_id-based and transaction-based mixup in assertion --echo # MDEV-14744 trx_id-based and transaction-based mixup in assertion
......
...@@ -7177,6 +7177,12 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info, ...@@ -7177,6 +7177,12 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info,
if (!need_check(alter_info) && !share->versioned) if (!need_check(alter_info) && !share->versioned)
return false; return false;
if (!thd->variables.vers_force && share->tmp_table && share->tmp_table != INTERNAL_TMP_TABLE)
{
my_error(ER_VERS_TEMPORARY, MYF(0));
return true;
}
if (alter_info->flags & Alter_info::ALTER_ADD_SYSTEM_VERSIONING && table->versioned()) if (alter_info->flags & Alter_info::ALTER_ADD_SYSTEM_VERSIONING && table->versioned())
{ {
my_error(ER_VERS_ALREADY_VERSIONED, MYF(0), table_name); my_error(ER_VERS_ALREADY_VERSIONED, MYF(0), table_name);
......
...@@ -7931,7 +7931,7 @@ ER_VERS_TRUNCATE_VIEW ...@@ -7931,7 +7931,7 @@ ER_VERS_TRUNCATE_VIEW
eng "DELETE HISTORY from VIEW is prohibited" eng "DELETE HISTORY from VIEW is prohibited"
ER_VERS_TEMPORARY ER_VERS_TEMPORARY
eng "%s prohibited for TEMPORARY tables" eng "System versioning prohibited for TEMPORARY tables"
ER_VERS_INPLACE_NOT_IMPLEMENTED ER_VERS_INPLACE_NOT_IMPLEMENTED
eng "Not implemented for system-versioned tables" eng "Not implemented for system-versioned tables"
...@@ -6235,7 +6235,7 @@ versioning_option: ...@@ -6235,7 +6235,7 @@ versioning_option:
{ {
if (!thd->variables.vers_force) if (!thd->variables.vers_force)
{ {
my_error(ER_VERS_TEMPORARY, MYF(0), "WITH SYSTEM VERSIONING"); my_error(ER_VERS_TEMPORARY, MYF(0));
MYSQL_YYABORT; MYSQL_YYABORT;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment