diff --git a/mysql-test/suite/versioning/r/create.result b/mysql-test/suite/versioning/r/create.result index 74bf5beb710..4e76063a52a 100644 --- a/mysql-test/suite/versioning/r/create.result +++ b/mysql-test/suite/versioning/r/create.result @@ -63,16 +63,16 @@ end~~ drop table if exists t1; create table t1 ( x1 int unsigned, -Sys_start SYS_TRX_TYPE generated always as row start, -Sys_end SYS_TRX_TYPE generated always as row end, +Sys_start SYS_TRX_TYPE generated always as row start comment 'start', +Sys_end SYS_TRX_TYPE generated always as row end comment 'end', period for system_time (Sys_start, Sys_end) ) with system versioning; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `x1` int(10) unsigned DEFAULT NULL, - `Sys_start` SYS_TRX_TYPE GENERATED ALWAYS AS ROW START, - `Sys_end` SYS_TRX_TYPE GENERATED ALWAYS AS ROW END, + `Sys_start` SYS_TRX_TYPE GENERATED ALWAYS AS ROW START COMMENT 'start', + `Sys_end` SYS_TRX_TYPE GENERATED ALWAYS AS ROW END COMMENT 'end', PERIOD FOR SYSTEM_TIME (`Sys_start`, `Sys_end`) ) ENGINE=INNODB_OR_MYISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING # Implicit fields test diff --git a/mysql-test/suite/versioning/t/create.test b/mysql-test/suite/versioning/t/create.test index ba860365dc1..a51e50f5deb 100644 --- a/mysql-test/suite/versioning/t/create.test +++ b/mysql-test/suite/versioning/t/create.test @@ -9,8 +9,8 @@ drop table if exists t1; --replace_result "bigint unsigned" SYS_TRX_TYPE timestamp(6) SYS_TRX_TYPE eval create table t1 ( x1 int unsigned, - Sys_start $sys_datatype generated always as row start, - Sys_end $sys_datatype generated always as row end, + Sys_start $sys_datatype generated always as row start comment 'start', + Sys_end $sys_datatype generated always as row end comment 'end', period for system_time (Sys_start, Sys_end) ) with system versioning; --replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM "bigint(20) unsigned" SYS_TRX_TYPE timestamp(6) SYS_TRX_TYPE diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 4abe1dbc24a..8f02a033210 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -6262,6 +6262,15 @@ opt_serial_attribute_list: | serial_attribute ; +opt_asrow_attribute: + /* empty */ {} + | opt_asrow_attribute_list {} + ; + +opt_asrow_attribute_list: + opt_asrow_attribute_list asrow_attribute {} + | asrow_attribute + ; field_def: opt_attribute @@ -6271,7 +6280,7 @@ field_def: Lex->last_field->flags&= ~NOT_NULL_FLAG; // undo automatic NOT NULL for timestamps } vcol_opt_specifier vcol_opt_attribute - | opt_generated_always AS ROW_SYM start_or_end + | opt_generated_always AS ROW_SYM start_or_end opt_asrow_attribute { LEX *lex= Lex; Vers_parse_info &info= lex->vers_get_info(); @@ -6743,7 +6752,7 @@ attribute: | serial_attribute ; -serial_attribute: +asrow_attribute: not NULL_SYM { Lex->last_field->flags|= NOT_NULL_FLAG; @@ -6768,6 +6777,10 @@ serial_attribute: lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } | COMMENT_SYM TEXT_STRING_sys { Lex->last_field->comment= $2; } + ; + +serial_attribute: + asrow_attribute | IDENT_sys equal TEXT_STRING_sys { if ($3.length > ENGINE_OPTION_MAX_LENGTH)