Commit ec0002e9 authored by kevg's avatar kevg Committed by Aleksey Midenkov

Parser: useful attributes for AS ROW fields

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