Parser: useful attributes for AS ROW fields
This commit is contained in:
parent
fe71bdf568
commit
ec0002e908
@ -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;
|
|||||||
--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:
|
|||||||
| 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:
|
|||||||
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:
|
|||||||
| 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:
|
|||||||
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user