MDEV-14769 Temporary table can be altered into system versioning + system_versioning_alter_history has no effect
This commit is contained in:
parent
7069071d7d
commit
157150cfcf
@ -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);
|
|||||||
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;
|
|||||||
|
|
||||||
--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,
|
|||||||
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
|
|||||||
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:
|
|||||||
{
|
{
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user