From fc21529f14e219befc370bf9b2c52008895c7cb1 Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Tue, 19 Dec 2017 21:54:07 +0300 Subject: [PATCH] MDEV-14683 Possible redundancy in error codes ER_VERS_GENERATED_ALWAYS_NOT_EMPTY vs ER_VERS_ALTER_SYSTEM_FIELD Related to #310 (91ba4f04be93b9ff927f2bd099a85c2c355e45e9). --- mysql-test/suite/versioning/r/alter.result | 13 ++++--------- mysql-test/suite/versioning/t/alter.test | 14 ++++---------- sql/handler.cc | 1 + 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/mysql-test/suite/versioning/r/alter.result b/mysql-test/suite/versioning/r/alter.result index 6250b0ec33d..a3ddb63fad9 100644 --- a/mysql-test/suite/versioning/r/alter.result +++ b/mysql-test/suite/versioning/r/alter.result @@ -375,20 +375,15 @@ a b 4 2 create or replace table t ( a 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; -alter table t change column sys_trx_start asdf bigint unsigned; -ERROR HY000: Can not change system versioning field `sys_trx_start` -create or replace table t ( -a int, sys_trx_start timestamp(6) as row start invisible, sys_trx_end timestamp(6) as row end invisible, period for system_time(sys_trx_start, sys_trx_end) -) with system versioning engine myisam; +) with system versioning; alter table t change column sys_trx_start asdf timestamp(6); ERROR HY000: Can not change system versioning field `sys_trx_start` +insert into t values (1); +alter table t modify column sys_trx_start bigint unsigned; +ERROR HY000: Can not change system versioning field `sys_trx_start` create or replace table t ( a int, sys_trx_start timestamp(6) as row start invisible, diff --git a/mysql-test/suite/versioning/t/alter.test b/mysql-test/suite/versioning/t/alter.test index c8a2f9014cd..46027b21b0f 100644 --- a/mysql-test/suite/versioning/t/alter.test +++ b/mysql-test/suite/versioning/t/alter.test @@ -260,23 +260,17 @@ select * from t for system_time all; insert into t values (4, 0); select * from t for system_time all; -create or replace table t ( - a 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 ER_VERS_ALTER_SYSTEM_FIELD -alter table t change column sys_trx_start asdf bigint unsigned; - create or replace table t ( a int, sys_trx_start timestamp(6) as row start invisible, sys_trx_end timestamp(6) as row end invisible, period for system_time(sys_trx_start, sys_trx_end) -) with system versioning engine myisam; +) with system versioning; --error ER_VERS_ALTER_SYSTEM_FIELD alter table t change column sys_trx_start asdf timestamp(6); +insert into t values (1); +--error ER_VERS_ALTER_SYSTEM_FIELD +alter table t modify column sys_trx_start bigint unsigned; create or replace table t ( a int, diff --git a/sql/handler.cc b/sql/handler.cc index d462e1a279a..68831d499c4 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -7177,6 +7177,7 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info, return false; } + if (!share->versioned) { List_iterator_fast it(alter_info->create_list); while (Create_field *f= it++)