diff --git a/ast/ast.go b/ast/ast.go index 5f8f08ed..97d8a2a2 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -2350,7 +2350,7 @@ type DropProtoBundle struct { // {{.TableConstraints | sqlJoin ","}}{{if and .TableConstraints .Synonym}},{{end}} // {{.Synonym | sqlJoin ","}} // ) -// PRIMARY KEY ({{.PrimaryKeys | sqlJoin ","}}) +// {{if .PrimaryKeys}}PRIMARY KEY ({{.PrimaryKeys | sqlJoin ","}}){{end}} // {{.Cluster | sqlOpt}} // {{.CreateRowDeletionPolicy | sqlOpt}} // @@ -2368,7 +2368,7 @@ type CreateTable struct { Name *Path Columns []*ColumnDef TableConstraints []*TableConstraint - PrimaryKeys []*IndexKey + PrimaryKeys []*IndexKey // when omitted, len(PrimaryKeys) = 0 Synonyms []*Synonym Cluster *Cluster // optional RowDeletionPolicy *CreateRowDeletionPolicy // optional @@ -2438,22 +2438,26 @@ type BitReversedPositive struct { BitReversedPositive token.Pos // position of "BIT_REVERSED_POSITIVE" keyword } -// ColumnDef is column definition in CREATE TABLE. +// ColumnDef is column definition in CREATE TABLE and ALTER TABLE ADD COLUMN. +// Note: Some fields are not valid in ADD COLUMN. // // {{.Name | sql}} // {{.Type | sql}} {{if .NotNull}}NOT NULL{{end}} // {{.DefaultSemantics | sqlOpt}} // {{if .Hidden.Invalid | not)}}HIDDEN{{end}} +// {{if .PrimaryKey}}PRIMARY KEY{{end}} // {{.Options | sqlOpt}} type ColumnDef struct { // pos = Name.pos - // end = Options.end || Hidden + 6 || DefaultSemantics.end || Null + 4 || Type.end + // end = Options.end || Key + 3 || Hidden + 6 || DefaultSemantics.end || Null + 4 || Type.end Null token.Pos // position of "NULL" + Key token.Pos // position of "KEY" of PRIMARY KEY - Name *Ident - Type SchemaType - NotNull bool + Name *Ident + Type SchemaType + NotNull bool + PrimaryKey bool DefaultSemantics ColumnDefaultSemantics // optional diff --git a/ast/pos.go b/ast/pos.go index 7ae4f66a..9805d963 100644 --- a/ast/pos.go +++ b/ast/pos.go @@ -1131,7 +1131,7 @@ func (c *ColumnDef) Pos() token.Pos { } func (c *ColumnDef) End() token.Pos { - return posChoice(nodeEnd(wrapNode(c.Options)), posAdd(c.Hidden, 6), nodeEnd(wrapNode(c.DefaultSemantics)), posAdd(c.Null, 4), nodeEnd(wrapNode(c.Type))) + return posChoice(nodeEnd(wrapNode(c.Options)), posAdd(c.Key, 3), posAdd(c.Hidden, 6), nodeEnd(wrapNode(c.DefaultSemantics)), posAdd(c.Null, 4), nodeEnd(wrapNode(c.Type))) } func (c *ColumnDefaultExpr) Pos() token.Pos { diff --git a/ast/sql.go b/ast/sql.go index 48455e5c..e63880d7 100644 --- a/ast/sql.go +++ b/ast/sql.go @@ -789,7 +789,8 @@ func (c *CreateTable) SQL() string { indent + sqlJoin(c.Columns, ",\n"+indent) + strOpt(len(c.Columns) > 0 && (len(c.TableConstraints) > 0 || len(c.Synonyms) > 0), ",\n") + strOpt(len(c.TableConstraints) > 0, indent) + sqlJoin(c.TableConstraints, ",\n"+indent) + strOpt(len(c.TableConstraints) > 0 && len(c.Synonyms) > 0, ",\n") + strOpt(len(c.Synonyms) > 0, indent) + sqlJoin(c.Synonyms, ",\n") + - "\n) PRIMARY KEY (" + sqlJoin(c.PrimaryKeys, ", ") + ")" + + "\n)" + + strOpt(len(c.PrimaryKeys) > 0, " PRIMARY KEY ("+sqlJoin(c.PrimaryKeys, ", ")+")") + sqlOpt("", c.Cluster, "") + sqlOpt("", c.RowDeletionPolicy, "") } @@ -836,6 +837,7 @@ func (c *ColumnDef) SQL() string { strOpt(c.NotNull, " NOT NULL") + sqlOpt(" ", c.DefaultSemantics, "") + strOpt(!c.Hidden.Invalid(), " HIDDEN") + + strOpt(c.PrimaryKey, " PRIMARY KEY") + sqlOpt(" ", c.Options, "") } diff --git a/parser.go b/parser.go index 16be4e2a..0e58c3dc 100644 --- a/parser.go +++ b/parser.go @@ -3072,22 +3072,26 @@ func (p *Parser) parseCreateTable(pos token.Pos) *ast.CreateTable { } p.expect(")") - p.expectKeywordLike("PRIMARY") - p.expectKeywordLike("KEY") - - p.expect("(") + // PRIMARY KEY clause is now optional var keys []*ast.IndexKey - for p.Token.Kind != token.TokenEOF { - if p.Token.Kind == ")" { - break - } - keys = append(keys, p.parseIndexKey()) - if p.Token.Kind != "," { - break - } + rparen := token.InvalidPos + if p.Token.IsKeywordLike("PRIMARY") { p.nextToken() + p.expectKeywordLike("KEY") + + p.expect("(") + for p.Token.Kind != token.TokenEOF { + if p.Token.Kind == ")" { + break + } + keys = append(keys, p.parseIndexKey()) + if p.Token.Kind != "," { + break + } + p.nextToken() + } + rparen = p.expect(")").Pos } - rparen := p.expect(")").Pos cluster := p.tryParseCluster() rdp := p.tryParseCreateRowDeletionPolicy() @@ -3223,13 +3227,21 @@ func (p *Parser) parseColumnDef() *ast.ColumnDef { hiddenPos = p.expectKeywordLike("HIDDEN").Pos } + key := token.InvalidPos + if p.Token.IsKeywordLike("PRIMARY") { + p.nextToken() + key = p.expectKeywordLike("KEY").Pos + } + options := p.tryParseOptions() return &ast.ColumnDef{ Null: null, + Key: key, Name: name, Type: t, NotNull: notNull, + PrimaryKey: !key.Invalid(), DefaultSemantics: defaultSemantics, Hidden: hiddenPos, Options: options, diff --git a/testdata/input/ddl/create_table_with_identity_columns.sql b/testdata/input/ddl/create_table_with_identity_columns.sql index 491a840a..e1b4901c 100644 --- a/testdata/input/ddl/create_table_with_identity_columns.sql +++ b/testdata/input/ddl/create_table_with_identity_columns.sql @@ -1,9 +1,10 @@ create table foo ( id int64 generated by default as identity ( - bit_reversed_positive start counter with 1000 skip range 1, 12345), + bit_reversed_positive start counter with 1000 skip range 1, 12345) + primary key, startCount int64 generated by default as identity ( bit_reversed_positive start counter with 1000), skipRange int64 generated by default as identity ( bit_reversed_positive skip range 1000, 2000), simple int64 generated by default as identity ( bit_reversed_positive), -) primary key (id) +) diff --git a/testdata/result/ddl/!bad_alter_table_add_column.sql.txt b/testdata/result/ddl/!bad_alter_table_add_column.sql.txt index ce6c29ac..5efcd26a 100644 --- a/testdata/result/ddl/!bad_alter_table_add_column.sql.txt +++ b/testdata/result/ddl/!bad_alter_table_add_column.sql.txt @@ -21,6 +21,7 @@ syntax error: testdata/input/ddl/!bad_alter_table_add_column.sql:1:44: expected Add: 16, Column: &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/ddl/alter_table_add_column.sql.txt b/testdata/result/ddl/alter_table_add_column.sql.txt index a2e5b008..cf04f748 100644 --- a/testdata/result/ddl/alter_table_add_column.sql.txt +++ b/testdata/result/ddl/alter_table_add_column.sql.txt @@ -15,6 +15,7 @@ alter table foo add column baz string(max) not null Add: 16, Column: &ast.ColumnDef{ Null: 47, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/ddl/alter_table_add_column_identity.sql.txt b/testdata/result/ddl/alter_table_add_column_identity.sql.txt index 4415c8b7..8a02548c 100644 --- a/testdata/result/ddl/alter_table_add_column_identity.sql.txt +++ b/testdata/result/ddl/alter_table_add_column_identity.sql.txt @@ -15,6 +15,7 @@ alter table foo add column baz int64 not null generated by default as identity ( Add: 16, Column: &ast.ColumnDef{ Null: 41, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/ddl/alter_table_add_column_if_not_exists.sql.txt b/testdata/result/ddl/alter_table_add_column_if_not_exists.sql.txt index 635672e2..fa03de72 100644 --- a/testdata/result/ddl/alter_table_add_column_if_not_exists.sql.txt +++ b/testdata/result/ddl/alter_table_add_column_if_not_exists.sql.txt @@ -17,6 +17,7 @@ alter table foo add column if not exists baz string(max) not null IfNotExists: true, Column: &ast.ColumnDef{ Null: 61, + Key: -1, Name: &ast.Ident{ NamePos: 41, NameEnd: 44, diff --git a/testdata/result/ddl/alter_table_add_column_with_if_expression.sql.txt b/testdata/result/ddl/alter_table_add_column_with_if_expression.sql.txt index b38b882c..d1abf5b4 100644 --- a/testdata/result/ddl/alter_table_add_column_with_if_expression.sql.txt +++ b/testdata/result/ddl/alter_table_add_column_with_if_expression.sql.txt @@ -15,6 +15,7 @@ ALTER TABLE foo ADD COLUMN expired_at TIMESTAMP AS (IF (status != "OPEN" AND sta Add: 16, Column: &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 37, diff --git a/testdata/result/ddl/create_table.sql.txt b/testdata/result/ddl/create_table.sql.txt index 1e3f66bf..47df64b5 100644 --- a/testdata/result/ddl/create_table.sql.txt +++ b/testdata/result/ddl/create_table.sql.txt @@ -29,6 +29,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -42,6 +43,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 50, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -56,6 +58,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 78, + Key: -1, Name: &ast.Ident{ NamePos: 58, NameEnd: 61, @@ -93,6 +96,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 145, + Key: -1, Name: &ast.Ident{ NamePos: 125, NameEnd: 128, @@ -147,6 +151,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 482, NameEnd: 486, @@ -160,6 +165,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 515, + Key: -1, Name: &ast.Ident{ NamePos: 495, NameEnd: 500, diff --git a/testdata/result/ddl/create_table_cluster.sql.txt b/testdata/result/ddl/create_table_cluster.sql.txt index 8dc51870..de344c18 100644 --- a/testdata/result/ddl/create_table_cluster.sql.txt +++ b/testdata/result/ddl/create_table_cluster.sql.txt @@ -20,6 +20,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -33,6 +34,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -64,5 +66,5 @@ create table foo ( CREATE TABLE foo ( foo INT64, bar INT64 -) PRIMARY KEY (), +), INTERLEAVE IN PARENT foobar diff --git a/testdata/result/ddl/create_table_cluster_and_row_deletion_policy.sql.txt b/testdata/result/ddl/create_table_cluster_and_row_deletion_policy.sql.txt index 93391680..6f01e0b7 100644 --- a/testdata/result/ddl/create_table_cluster_and_row_deletion_policy.sql.txt +++ b/testdata/result/ddl/create_table_cluster_and_row_deletion_policy.sql.txt @@ -22,6 +22,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -35,6 +36,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -48,6 +50,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 47, NameEnd: 50, @@ -98,5 +101,5 @@ CREATE TABLE foo ( foo INT64, bar INT64, baz TIMESTAMP -) PRIMARY KEY (), +), INTERLEAVE IN PARENT foobar, ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) diff --git a/testdata/result/ddl/create_table_cluster_on_delete_no_action.sql.txt b/testdata/result/ddl/create_table_cluster_on_delete_no_action.sql.txt index 45ff2fe6..5bbfd8b6 100644 --- a/testdata/result/ddl/create_table_cluster_on_delete_no_action.sql.txt +++ b/testdata/result/ddl/create_table_cluster_on_delete_no_action.sql.txt @@ -19,6 +19,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, diff --git a/testdata/result/ddl/create_table_cluster_set_on_delete.sql.txt b/testdata/result/ddl/create_table_cluster_set_on_delete.sql.txt index e3eeec64..38a950da 100644 --- a/testdata/result/ddl/create_table_cluster_set_on_delete.sql.txt +++ b/testdata/result/ddl/create_table_cluster_set_on_delete.sql.txt @@ -19,6 +19,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, diff --git a/testdata/result/ddl/create_table_for_format_test.sql.txt b/testdata/result/ddl/create_table_for_format_test.sql.txt index e5c4f5f0..49f89708 100644 --- a/testdata/result/ddl/create_table_for_format_test.sql.txt +++ b/testdata/result/ddl/create_table_for_format_test.sql.txt @@ -29,6 +29,7 @@ create table if not exists foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 37, NameEnd: 40, @@ -42,6 +43,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 68, + Key: -1, Name: &ast.Ident{ NamePos: 52, NameEnd: 55, @@ -56,6 +58,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 98, + Key: -1, Name: &ast.Ident{ NamePos: 78, NameEnd: 81, @@ -93,6 +96,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 167, + Key: -1, Name: &ast.Ident{ NamePos: 147, NameEnd: 150, @@ -147,6 +151,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 408, + Key: -1, Name: &ast.Ident{ NamePos: 388, NameEnd: 393, diff --git a/testdata/result/ddl/create_table_fulltext_albums.sql.txt b/testdata/result/ddl/create_table_fulltext_albums.sql.txt index d3bf3aad..fe0d66bf 100644 --- a/testdata/result/ddl/create_table_fulltext_albums.sql.txt +++ b/testdata/result/ddl/create_table_fulltext_albums.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE Albums ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 175, + Key: -1, Name: &ast.Ident{ NamePos: 151, NameEnd: 158, @@ -41,6 +42,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: 224, + Key: -1, Name: &ast.Ident{ NamePos: 205, NameEnd: 213, @@ -55,6 +57,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: 281, + Key: -1, Name: &ast.Ident{ NamePos: 254, NameEnd: 270, @@ -69,6 +72,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 311, NameEnd: 321, @@ -84,6 +88,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 359, NameEnd: 365, @@ -97,6 +102,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 399, NameEnd: 416, @@ -136,6 +142,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 494, NameEnd: 507, diff --git a/testdata/result/ddl/create_table_if_not_exists.sql.txt b/testdata/result/ddl/create_table_if_not_exists.sql.txt index 9afc1dd4..ad4b82a5 100644 --- a/testdata/result/ddl/create_table_if_not_exists.sql.txt +++ b/testdata/result/ddl/create_table_if_not_exists.sql.txt @@ -20,6 +20,7 @@ create table if not exists foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 35, NameEnd: 38, @@ -33,6 +34,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 64, + Key: -1, Name: &ast.Ident{ NamePos: 48, NameEnd: 51, diff --git a/testdata/result/ddl/create_table_row_deletion_policy.sql.txt b/testdata/result/ddl/create_table_row_deletion_policy.sql.txt index 69b53283..41636dff 100644 --- a/testdata/result/ddl/create_table_row_deletion_policy.sql.txt +++ b/testdata/result/ddl/create_table_row_deletion_policy.sql.txt @@ -21,6 +21,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -34,6 +35,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -47,6 +49,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 47, NameEnd: 50, @@ -84,4 +87,4 @@ CREATE TABLE foo ( foo INT64, bar INT64, baz TIMESTAMP -) PRIMARY KEY (), ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) +), ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) diff --git a/testdata/result/ddl/create_table_synonyms.sql.txt b/testdata/result/ddl/create_table_synonyms.sql.txt index e47d2fbb..c241363c 100644 --- a/testdata/result/ddl/create_table_synonyms.sql.txt +++ b/testdata/result/ddl/create_table_synonyms.sql.txt @@ -19,6 +19,7 @@ CREATE TABLE Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 46, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 35, @@ -33,6 +34,7 @@ CREATE TABLE Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 56, NameEnd: 66, diff --git a/testdata/result/ddl/create_table_synonyms_abnormal.sql.txt b/testdata/result/ddl/create_table_synonyms_abnormal.sql.txt index 56a2bb28..05111cf3 100644 --- a/testdata/result/ddl/create_table_synonyms_abnormal.sql.txt +++ b/testdata/result/ddl/create_table_synonyms_abnormal.sql.txt @@ -22,6 +22,7 @@ CREATE TABLE Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 114, + Key: -1, Name: &ast.Ident{ NamePos: 95, NameEnd: 103, @@ -36,6 +37,7 @@ CREATE TABLE Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 124, NameEnd: 134, diff --git a/testdata/result/ddl/create_table_trailing_comma.sql.txt b/testdata/result/ddl/create_table_trailing_comma.sql.txt index 296e88a6..f8af47cd 100644 --- a/testdata/result/ddl/create_table_trailing_comma.sql.txt +++ b/testdata/result/ddl/create_table_trailing_comma.sql.txt @@ -22,6 +22,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -35,6 +36,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, diff --git a/testdata/result/ddl/create_table_types.sql.txt b/testdata/result/ddl/create_table_types.sql.txt index e34eea33..c5baf99c 100644 --- a/testdata/result/ddl/create_table_types.sql.txt +++ b/testdata/result/ddl/create_table_types.sql.txt @@ -45,6 +45,7 @@ create table types ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 123, NameEnd: 124, @@ -58,6 +59,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 133, NameEnd: 134, @@ -71,6 +73,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 144, NameEnd: 147, @@ -84,6 +87,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 159, NameEnd: 160, @@ -97,6 +101,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 172, NameEnd: 173, @@ -117,6 +122,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 189, NameEnd: 191, @@ -137,6 +143,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 209, NameEnd: 213, @@ -152,6 +159,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 229, NameEnd: 231, @@ -172,6 +180,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 246, NameEnd: 248, @@ -192,6 +201,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 265, NameEnd: 270, @@ -207,6 +217,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 285, NameEnd: 286, @@ -220,6 +231,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 295, NameEnd: 296, @@ -233,6 +245,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 305, NameEnd: 306, @@ -246,6 +259,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 320, NameEnd: 322, @@ -264,6 +278,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 338, NameEnd: 341, @@ -284,6 +299,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 363, NameEnd: 369, @@ -317,6 +333,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 408, NameEnd: 409, @@ -335,6 +352,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 423, NameEnd: 431, @@ -353,6 +371,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 447, NameEnd: 453, @@ -376,6 +395,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 476, NameEnd: 496, @@ -404,6 +424,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 526, NameEnd: 545, @@ -422,6 +443,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 575, NameEnd: 577, @@ -445,6 +467,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 598, NameEnd: 607, @@ -468,6 +491,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 630, NameEnd: 637, @@ -496,6 +520,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 667, NameEnd: 688, @@ -529,6 +554,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 725, NameEnd: 745, diff --git a/testdata/result/ddl/create_table_with_identity_columns.sql.txt b/testdata/result/ddl/create_table_with_identity_columns.sql.txt index 41dbf3eb..689d2640 100644 --- a/testdata/result/ddl/create_table_with_identity_columns.sql.txt +++ b/testdata/result/ddl/create_table_with_identity_columns.sql.txt @@ -1,17 +1,18 @@ --- create_table_with_identity_columns.sql create table foo ( id int64 generated by default as identity ( - bit_reversed_positive start counter with 1000 skip range 1, 12345), + bit_reversed_positive start counter with 1000 skip range 1, 12345) + primary key, startCount int64 generated by default as identity ( bit_reversed_positive start counter with 1000), skipRange int64 generated by default as identity ( bit_reversed_positive skip range 1000, 2000), simple int64 generated by default as identity ( bit_reversed_positive), -) primary key (id) +) --- AST &ast.CreateTable{ - Rparen: 457, + Rparen: -1, Name: &ast.Path{ Idents: []*ast.Ident{ &ast.Ident{ @@ -24,6 +25,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: 158, Name: &ast.Ident{ NamePos: 23, NameEnd: 25, @@ -33,6 +35,7 @@ create table foo ( NamePos: 26, Name: "INT64", }, + PrimaryKey: true, DefaultSemantics: &ast.IdentityColumn{ Generated: 32, Identity: 56, @@ -71,28 +74,29 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 147, - NameEnd: 157, + NamePos: 167, + NameEnd: 177, Name: "startCount", }, Type: &ast.ScalarSchemaType{ - NamePos: 158, + NamePos: 178, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 164, - Identity: 188, - Rparen: 252, + Generated: 184, + Identity: 208, + Rparen: 272, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 207, + BitReversedPositive: 227, }, &ast.StartCounterWith{ - Start: 229, + Start: 249, Counter: &ast.IntLiteral{ - ValuePos: 248, - ValueEnd: 252, + ValuePos: 268, + ValueEnd: 272, Base: 10, Value: "1000", }, @@ -103,34 +107,35 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 259, - NameEnd: 268, + NamePos: 279, + NameEnd: 288, Name: "skipRange", }, Type: &ast.ScalarSchemaType{ - NamePos: 269, + NamePos: 289, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 275, - Identity: 299, - Rparen: 361, + Generated: 295, + Identity: 319, + Rparen: 381, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 318, + BitReversedPositive: 338, }, &ast.SkipRange{ - Skip: 340, + Skip: 360, Min: &ast.IntLiteral{ - ValuePos: 351, - ValueEnd: 355, + ValuePos: 371, + ValueEnd: 375, Base: 10, Value: "1000", }, Max: &ast.IntLiteral{ - ValuePos: 357, - ValueEnd: 361, + ValuePos: 377, + ValueEnd: 381, Base: 10, Value: "2000", }, @@ -141,44 +146,35 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 368, - NameEnd: 374, + NamePos: 388, + NameEnd: 394, Name: "simple", }, Type: &ast.ScalarSchemaType{ - NamePos: 375, + NamePos: 395, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 381, - Identity: 405, - Rparen: 437, + Generated: 401, + Identity: 425, + Rparen: 457, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 416, + BitReversedPositive: 436, }, }, }, Hidden: -1, }, }, - PrimaryKeys: []*ast.IndexKey{ - &ast.IndexKey{ - DirPos: -1, - Name: &ast.Ident{ - NamePos: 455, - NameEnd: 457, - Name: "id", - }, - }, - }, } --- SQL CREATE TABLE foo ( - id INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000 SKIP RANGE 1, 12345), + id INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000 SKIP RANGE 1, 12345) PRIMARY KEY, startCount INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000), skipRange INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE SKIP RANGE 1000, 2000), simple INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE) -) PRIMARY KEY (id) +) diff --git a/testdata/result/ddl/create_table_with_sequence_function.sql.txt b/testdata/result/ddl/create_table_with_sequence_function.sql.txt index 90b45eb5..44635803 100644 --- a/testdata/result/ddl/create_table_with_sequence_function.sql.txt +++ b/testdata/result/ddl/create_table_with_sequence_function.sql.txt @@ -21,6 +21,7 @@ CREATE TABLE foo Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 23, NameEnd: 26, @@ -60,6 +61,7 @@ CREATE TABLE foo }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 95, NameEnd: 98, @@ -75,6 +77,7 @@ CREATE TABLE foo }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 117, NameEnd: 119, diff --git a/testdata/result/ddl/named_schema_create_table_backquoted.sql.txt b/testdata/result/ddl/named_schema_create_table_backquoted.sql.txt index 9b2fcb31..955d8e88 100644 --- a/testdata/result/ddl/named_schema_create_table_backquoted.sql.txt +++ b/testdata/result/ddl/named_schema_create_table_backquoted.sql.txt @@ -20,6 +20,7 @@ CREATE TABLE `ORDER`.`ORDER`(PK INT64) PRIMARY KEY(PK) Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 29, NameEnd: 31, diff --git a/testdata/result/ddl/named_schemas_create_table.sql.txt b/testdata/result/ddl/named_schemas_create_table.sql.txt index 2fd1dd3d..90c87f6a 100644 --- a/testdata/result/ddl/named_schemas_create_table.sql.txt +++ b/testdata/result/ddl/named_schemas_create_table.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE sch1.Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 51, + Key: -1, Name: &ast.Ident{ NamePos: 32, NameEnd: 40, @@ -39,6 +40,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 61, NameEnd: 70, @@ -59,6 +61,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 89, NameEnd: 97, @@ -79,6 +82,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 116, NameEnd: 126, diff --git a/testdata/result/ddl/named_schemas_create_table_foreign_key.sql.txt b/testdata/result/ddl/named_schemas_create_table_foreign_key.sql.txt index 351ec820..cb4bce8f 100644 --- a/testdata/result/ddl/named_schemas_create_table_foreign_key.sql.txt +++ b/testdata/result/ddl/named_schemas_create_table_foreign_key.sql.txt @@ -26,6 +26,7 @@ CREATE TABLE sch1.ShoppingCarts ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 53, + Key: -1, Name: &ast.Ident{ NamePos: 36, NameEnd: 42, @@ -40,6 +41,7 @@ CREATE TABLE sch1.ShoppingCarts ( }, &ast.ColumnDef{ Null: 82, + Key: -1, Name: &ast.Ident{ NamePos: 61, NameEnd: 71, @@ -54,6 +56,7 @@ CREATE TABLE sch1.ShoppingCarts ( }, &ast.ColumnDef{ Null: 119, + Key: -1, Name: &ast.Ident{ NamePos: 90, NameEnd: 102, diff --git a/testdata/result/ddl/named_schemas_create_table_interleave.sql.txt b/testdata/result/ddl/named_schemas_create_table_interleave.sql.txt index ecd0d470..dcb2ea27 100644 --- a/testdata/result/ddl/named_schemas_create_table_interleave.sql.txt +++ b/testdata/result/ddl/named_schemas_create_table_interleave.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE sch1.Albums ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 48, + Key: -1, Name: &ast.Ident{ NamePos: 29, NameEnd: 37, @@ -39,6 +40,7 @@ CREATE TABLE sch1.Albums ( }, &ast.ColumnDef{ Null: 74, + Key: -1, Name: &ast.Ident{ NamePos: 56, NameEnd: 63, @@ -53,6 +55,7 @@ CREATE TABLE sch1.Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 82, NameEnd: 92, diff --git a/testdata/result/statement/!bad_alter_table_add_column.sql.txt b/testdata/result/statement/!bad_alter_table_add_column.sql.txt index ce6c29ac..5efcd26a 100644 --- a/testdata/result/statement/!bad_alter_table_add_column.sql.txt +++ b/testdata/result/statement/!bad_alter_table_add_column.sql.txt @@ -21,6 +21,7 @@ syntax error: testdata/input/ddl/!bad_alter_table_add_column.sql:1:44: expected Add: 16, Column: &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/statement/alter_table_add_column.sql.txt b/testdata/result/statement/alter_table_add_column.sql.txt index a2e5b008..cf04f748 100644 --- a/testdata/result/statement/alter_table_add_column.sql.txt +++ b/testdata/result/statement/alter_table_add_column.sql.txt @@ -15,6 +15,7 @@ alter table foo add column baz string(max) not null Add: 16, Column: &ast.ColumnDef{ Null: 47, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/statement/alter_table_add_column_identity.sql.txt b/testdata/result/statement/alter_table_add_column_identity.sql.txt index 4415c8b7..8a02548c 100644 --- a/testdata/result/statement/alter_table_add_column_identity.sql.txt +++ b/testdata/result/statement/alter_table_add_column_identity.sql.txt @@ -15,6 +15,7 @@ alter table foo add column baz int64 not null generated by default as identity ( Add: 16, Column: &ast.ColumnDef{ Null: 41, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 30, diff --git a/testdata/result/statement/alter_table_add_column_if_not_exists.sql.txt b/testdata/result/statement/alter_table_add_column_if_not_exists.sql.txt index 635672e2..fa03de72 100644 --- a/testdata/result/statement/alter_table_add_column_if_not_exists.sql.txt +++ b/testdata/result/statement/alter_table_add_column_if_not_exists.sql.txt @@ -17,6 +17,7 @@ alter table foo add column if not exists baz string(max) not null IfNotExists: true, Column: &ast.ColumnDef{ Null: 61, + Key: -1, Name: &ast.Ident{ NamePos: 41, NameEnd: 44, diff --git a/testdata/result/statement/alter_table_add_column_with_if_expression.sql.txt b/testdata/result/statement/alter_table_add_column_with_if_expression.sql.txt index b38b882c..d1abf5b4 100644 --- a/testdata/result/statement/alter_table_add_column_with_if_expression.sql.txt +++ b/testdata/result/statement/alter_table_add_column_with_if_expression.sql.txt @@ -15,6 +15,7 @@ ALTER TABLE foo ADD COLUMN expired_at TIMESTAMP AS (IF (status != "OPEN" AND sta Add: 16, Column: &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 37, diff --git a/testdata/result/statement/create_table.sql.txt b/testdata/result/statement/create_table.sql.txt index 1e3f66bf..47df64b5 100644 --- a/testdata/result/statement/create_table.sql.txt +++ b/testdata/result/statement/create_table.sql.txt @@ -29,6 +29,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -42,6 +43,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 50, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -56,6 +58,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 78, + Key: -1, Name: &ast.Ident{ NamePos: 58, NameEnd: 61, @@ -93,6 +96,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 145, + Key: -1, Name: &ast.Ident{ NamePos: 125, NameEnd: 128, @@ -147,6 +151,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 482, NameEnd: 486, @@ -160,6 +165,7 @@ create table foo ( }, &ast.ColumnDef{ Null: 515, + Key: -1, Name: &ast.Ident{ NamePos: 495, NameEnd: 500, diff --git a/testdata/result/statement/create_table_cluster.sql.txt b/testdata/result/statement/create_table_cluster.sql.txt index 8dc51870..de344c18 100644 --- a/testdata/result/statement/create_table_cluster.sql.txt +++ b/testdata/result/statement/create_table_cluster.sql.txt @@ -20,6 +20,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -33,6 +34,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -64,5 +66,5 @@ create table foo ( CREATE TABLE foo ( foo INT64, bar INT64 -) PRIMARY KEY (), +), INTERLEAVE IN PARENT foobar diff --git a/testdata/result/statement/create_table_cluster_and_row_deletion_policy.sql.txt b/testdata/result/statement/create_table_cluster_and_row_deletion_policy.sql.txt index 93391680..6f01e0b7 100644 --- a/testdata/result/statement/create_table_cluster_and_row_deletion_policy.sql.txt +++ b/testdata/result/statement/create_table_cluster_and_row_deletion_policy.sql.txt @@ -22,6 +22,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -35,6 +36,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -48,6 +50,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 47, NameEnd: 50, @@ -98,5 +101,5 @@ CREATE TABLE foo ( foo INT64, bar INT64, baz TIMESTAMP -) PRIMARY KEY (), +), INTERLEAVE IN PARENT foobar, ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) diff --git a/testdata/result/statement/create_table_cluster_on_delete_no_action.sql.txt b/testdata/result/statement/create_table_cluster_on_delete_no_action.sql.txt index 45ff2fe6..5bbfd8b6 100644 --- a/testdata/result/statement/create_table_cluster_on_delete_no_action.sql.txt +++ b/testdata/result/statement/create_table_cluster_on_delete_no_action.sql.txt @@ -19,6 +19,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, diff --git a/testdata/result/statement/create_table_cluster_set_on_delete.sql.txt b/testdata/result/statement/create_table_cluster_set_on_delete.sql.txt index e3eeec64..38a950da 100644 --- a/testdata/result/statement/create_table_cluster_set_on_delete.sql.txt +++ b/testdata/result/statement/create_table_cluster_set_on_delete.sql.txt @@ -19,6 +19,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, diff --git a/testdata/result/statement/create_table_for_format_test.sql.txt b/testdata/result/statement/create_table_for_format_test.sql.txt index e5c4f5f0..49f89708 100644 --- a/testdata/result/statement/create_table_for_format_test.sql.txt +++ b/testdata/result/statement/create_table_for_format_test.sql.txt @@ -29,6 +29,7 @@ create table if not exists foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 37, NameEnd: 40, @@ -42,6 +43,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 68, + Key: -1, Name: &ast.Ident{ NamePos: 52, NameEnd: 55, @@ -56,6 +58,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 98, + Key: -1, Name: &ast.Ident{ NamePos: 78, NameEnd: 81, @@ -93,6 +96,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 167, + Key: -1, Name: &ast.Ident{ NamePos: 147, NameEnd: 150, @@ -147,6 +151,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 408, + Key: -1, Name: &ast.Ident{ NamePos: 388, NameEnd: 393, diff --git a/testdata/result/statement/create_table_fulltext_albums.sql.txt b/testdata/result/statement/create_table_fulltext_albums.sql.txt index d3bf3aad..fe0d66bf 100644 --- a/testdata/result/statement/create_table_fulltext_albums.sql.txt +++ b/testdata/result/statement/create_table_fulltext_albums.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE Albums ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 175, + Key: -1, Name: &ast.Ident{ NamePos: 151, NameEnd: 158, @@ -41,6 +42,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: 224, + Key: -1, Name: &ast.Ident{ NamePos: 205, NameEnd: 213, @@ -55,6 +57,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: 281, + Key: -1, Name: &ast.Ident{ NamePos: 254, NameEnd: 270, @@ -69,6 +72,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 311, NameEnd: 321, @@ -84,6 +88,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 359, NameEnd: 365, @@ -97,6 +102,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 399, NameEnd: 416, @@ -136,6 +142,7 @@ CREATE TABLE Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 494, NameEnd: 507, diff --git a/testdata/result/statement/create_table_if_not_exists.sql.txt b/testdata/result/statement/create_table_if_not_exists.sql.txt index 9afc1dd4..ad4b82a5 100644 --- a/testdata/result/statement/create_table_if_not_exists.sql.txt +++ b/testdata/result/statement/create_table_if_not_exists.sql.txt @@ -20,6 +20,7 @@ create table if not exists foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 35, NameEnd: 38, @@ -33,6 +34,7 @@ create table if not exists foo ( }, &ast.ColumnDef{ Null: 64, + Key: -1, Name: &ast.Ident{ NamePos: 48, NameEnd: 51, diff --git a/testdata/result/statement/create_table_row_deletion_policy.sql.txt b/testdata/result/statement/create_table_row_deletion_policy.sql.txt index 69b53283..41636dff 100644 --- a/testdata/result/statement/create_table_row_deletion_policy.sql.txt +++ b/testdata/result/statement/create_table_row_deletion_policy.sql.txt @@ -21,6 +21,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -34,6 +35,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, @@ -47,6 +49,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 47, NameEnd: 50, @@ -84,4 +87,4 @@ CREATE TABLE foo ( foo INT64, bar INT64, baz TIMESTAMP -) PRIMARY KEY (), ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) +), ROW DELETION POLICY ( OLDER_THAN ( baz, INTERVAL 30 DAY )) diff --git a/testdata/result/statement/create_table_synonyms.sql.txt b/testdata/result/statement/create_table_synonyms.sql.txt index e47d2fbb..c241363c 100644 --- a/testdata/result/statement/create_table_synonyms.sql.txt +++ b/testdata/result/statement/create_table_synonyms.sql.txt @@ -19,6 +19,7 @@ CREATE TABLE Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 46, + Key: -1, Name: &ast.Ident{ NamePos: 27, NameEnd: 35, @@ -33,6 +34,7 @@ CREATE TABLE Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 56, NameEnd: 66, diff --git a/testdata/result/statement/create_table_synonyms_abnormal.sql.txt b/testdata/result/statement/create_table_synonyms_abnormal.sql.txt index 56a2bb28..05111cf3 100644 --- a/testdata/result/statement/create_table_synonyms_abnormal.sql.txt +++ b/testdata/result/statement/create_table_synonyms_abnormal.sql.txt @@ -22,6 +22,7 @@ CREATE TABLE Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 114, + Key: -1, Name: &ast.Ident{ NamePos: 95, NameEnd: 103, @@ -36,6 +37,7 @@ CREATE TABLE Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 124, NameEnd: 134, diff --git a/testdata/result/statement/create_table_trailing_comma.sql.txt b/testdata/result/statement/create_table_trailing_comma.sql.txt index 296e88a6..f8af47cd 100644 --- a/testdata/result/statement/create_table_trailing_comma.sql.txt +++ b/testdata/result/statement/create_table_trailing_comma.sql.txt @@ -22,6 +22,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 21, NameEnd: 24, @@ -35,6 +36,7 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 34, NameEnd: 37, diff --git a/testdata/result/statement/create_table_types.sql.txt b/testdata/result/statement/create_table_types.sql.txt index e34eea33..c5baf99c 100644 --- a/testdata/result/statement/create_table_types.sql.txt +++ b/testdata/result/statement/create_table_types.sql.txt @@ -45,6 +45,7 @@ create table types ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 123, NameEnd: 124, @@ -58,6 +59,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 133, NameEnd: 134, @@ -71,6 +73,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 144, NameEnd: 147, @@ -84,6 +87,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 159, NameEnd: 160, @@ -97,6 +101,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 172, NameEnd: 173, @@ -117,6 +122,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 189, NameEnd: 191, @@ -137,6 +143,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 209, NameEnd: 213, @@ -152,6 +159,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 229, NameEnd: 231, @@ -172,6 +180,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 246, NameEnd: 248, @@ -192,6 +201,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 265, NameEnd: 270, @@ -207,6 +217,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 285, NameEnd: 286, @@ -220,6 +231,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 295, NameEnd: 296, @@ -233,6 +245,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 305, NameEnd: 306, @@ -246,6 +259,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 320, NameEnd: 322, @@ -264,6 +278,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 338, NameEnd: 341, @@ -284,6 +299,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 363, NameEnd: 369, @@ -317,6 +333,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 408, NameEnd: 409, @@ -335,6 +352,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 423, NameEnd: 431, @@ -353,6 +371,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 447, NameEnd: 453, @@ -376,6 +395,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 476, NameEnd: 496, @@ -404,6 +424,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 526, NameEnd: 545, @@ -422,6 +443,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 575, NameEnd: 577, @@ -445,6 +467,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 598, NameEnd: 607, @@ -468,6 +491,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 630, NameEnd: 637, @@ -496,6 +520,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 667, NameEnd: 688, @@ -529,6 +554,7 @@ create table types ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 725, NameEnd: 745, diff --git a/testdata/result/statement/create_table_with_identity_columns.sql.txt b/testdata/result/statement/create_table_with_identity_columns.sql.txt index 41dbf3eb..689d2640 100644 --- a/testdata/result/statement/create_table_with_identity_columns.sql.txt +++ b/testdata/result/statement/create_table_with_identity_columns.sql.txt @@ -1,17 +1,18 @@ --- create_table_with_identity_columns.sql create table foo ( id int64 generated by default as identity ( - bit_reversed_positive start counter with 1000 skip range 1, 12345), + bit_reversed_positive start counter with 1000 skip range 1, 12345) + primary key, startCount int64 generated by default as identity ( bit_reversed_positive start counter with 1000), skipRange int64 generated by default as identity ( bit_reversed_positive skip range 1000, 2000), simple int64 generated by default as identity ( bit_reversed_positive), -) primary key (id) +) --- AST &ast.CreateTable{ - Rparen: 457, + Rparen: -1, Name: &ast.Path{ Idents: []*ast.Ident{ &ast.Ident{ @@ -24,6 +25,7 @@ create table foo ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: 158, Name: &ast.Ident{ NamePos: 23, NameEnd: 25, @@ -33,6 +35,7 @@ create table foo ( NamePos: 26, Name: "INT64", }, + PrimaryKey: true, DefaultSemantics: &ast.IdentityColumn{ Generated: 32, Identity: 56, @@ -71,28 +74,29 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 147, - NameEnd: 157, + NamePos: 167, + NameEnd: 177, Name: "startCount", }, Type: &ast.ScalarSchemaType{ - NamePos: 158, + NamePos: 178, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 164, - Identity: 188, - Rparen: 252, + Generated: 184, + Identity: 208, + Rparen: 272, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 207, + BitReversedPositive: 227, }, &ast.StartCounterWith{ - Start: 229, + Start: 249, Counter: &ast.IntLiteral{ - ValuePos: 248, - ValueEnd: 252, + ValuePos: 268, + ValueEnd: 272, Base: 10, Value: "1000", }, @@ -103,34 +107,35 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 259, - NameEnd: 268, + NamePos: 279, + NameEnd: 288, Name: "skipRange", }, Type: &ast.ScalarSchemaType{ - NamePos: 269, + NamePos: 289, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 275, - Identity: 299, - Rparen: 361, + Generated: 295, + Identity: 319, + Rparen: 381, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 318, + BitReversedPositive: 338, }, &ast.SkipRange{ - Skip: 340, + Skip: 360, Min: &ast.IntLiteral{ - ValuePos: 351, - ValueEnd: 355, + ValuePos: 371, + ValueEnd: 375, Base: 10, Value: "1000", }, Max: &ast.IntLiteral{ - ValuePos: 357, - ValueEnd: 361, + ValuePos: 377, + ValueEnd: 381, Base: 10, Value: "2000", }, @@ -141,44 +146,35 @@ create table foo ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ - NamePos: 368, - NameEnd: 374, + NamePos: 388, + NameEnd: 394, Name: "simple", }, Type: &ast.ScalarSchemaType{ - NamePos: 375, + NamePos: 395, Name: "INT64", }, DefaultSemantics: &ast.IdentityColumn{ - Generated: 381, - Identity: 405, - Rparen: 437, + Generated: 401, + Identity: 425, + Rparen: 457, Params: []ast.SequenceParam{ &ast.BitReversedPositive{ - BitReversedPositive: 416, + BitReversedPositive: 436, }, }, }, Hidden: -1, }, }, - PrimaryKeys: []*ast.IndexKey{ - &ast.IndexKey{ - DirPos: -1, - Name: &ast.Ident{ - NamePos: 455, - NameEnd: 457, - Name: "id", - }, - }, - }, } --- SQL CREATE TABLE foo ( - id INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000 SKIP RANGE 1, 12345), + id INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000 SKIP RANGE 1, 12345) PRIMARY KEY, startCount INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE START COUNTER WITH 1000), skipRange INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE SKIP RANGE 1000, 2000), simple INT64 GENERATED BY DEFAULT AS IDENTITY (BIT_REVERSED_POSITIVE) -) PRIMARY KEY (id) +) diff --git a/testdata/result/statement/create_table_with_sequence_function.sql.txt b/testdata/result/statement/create_table_with_sequence_function.sql.txt index 90b45eb5..44635803 100644 --- a/testdata/result/statement/create_table_with_sequence_function.sql.txt +++ b/testdata/result/statement/create_table_with_sequence_function.sql.txt @@ -21,6 +21,7 @@ CREATE TABLE foo Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 23, NameEnd: 26, @@ -60,6 +61,7 @@ CREATE TABLE foo }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 95, NameEnd: 98, @@ -75,6 +77,7 @@ CREATE TABLE foo }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 117, NameEnd: 119, diff --git a/testdata/result/statement/named_schema_create_table_backquoted.sql.txt b/testdata/result/statement/named_schema_create_table_backquoted.sql.txt index 9b2fcb31..955d8e88 100644 --- a/testdata/result/statement/named_schema_create_table_backquoted.sql.txt +++ b/testdata/result/statement/named_schema_create_table_backquoted.sql.txt @@ -20,6 +20,7 @@ CREATE TABLE `ORDER`.`ORDER`(PK INT64) PRIMARY KEY(PK) Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 29, NameEnd: 31, diff --git a/testdata/result/statement/named_schemas_create_table.sql.txt b/testdata/result/statement/named_schemas_create_table.sql.txt index 2fd1dd3d..90c87f6a 100644 --- a/testdata/result/statement/named_schemas_create_table.sql.txt +++ b/testdata/result/statement/named_schemas_create_table.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE sch1.Singers ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 51, + Key: -1, Name: &ast.Ident{ NamePos: 32, NameEnd: 40, @@ -39,6 +40,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 61, NameEnd: 70, @@ -59,6 +61,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 89, NameEnd: 97, @@ -79,6 +82,7 @@ CREATE TABLE sch1.Singers ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 116, NameEnd: 126, diff --git a/testdata/result/statement/named_schemas_create_table_foreign_key.sql.txt b/testdata/result/statement/named_schemas_create_table_foreign_key.sql.txt index 351ec820..cb4bce8f 100644 --- a/testdata/result/statement/named_schemas_create_table_foreign_key.sql.txt +++ b/testdata/result/statement/named_schemas_create_table_foreign_key.sql.txt @@ -26,6 +26,7 @@ CREATE TABLE sch1.ShoppingCarts ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 53, + Key: -1, Name: &ast.Ident{ NamePos: 36, NameEnd: 42, @@ -40,6 +41,7 @@ CREATE TABLE sch1.ShoppingCarts ( }, &ast.ColumnDef{ Null: 82, + Key: -1, Name: &ast.Ident{ NamePos: 61, NameEnd: 71, @@ -54,6 +56,7 @@ CREATE TABLE sch1.ShoppingCarts ( }, &ast.ColumnDef{ Null: 119, + Key: -1, Name: &ast.Ident{ NamePos: 90, NameEnd: 102, diff --git a/testdata/result/statement/named_schemas_create_table_interleave.sql.txt b/testdata/result/statement/named_schemas_create_table_interleave.sql.txt index ecd0d470..dcb2ea27 100644 --- a/testdata/result/statement/named_schemas_create_table_interleave.sql.txt +++ b/testdata/result/statement/named_schemas_create_table_interleave.sql.txt @@ -25,6 +25,7 @@ CREATE TABLE sch1.Albums ( Columns: []*ast.ColumnDef{ &ast.ColumnDef{ Null: 48, + Key: -1, Name: &ast.Ident{ NamePos: 29, NameEnd: 37, @@ -39,6 +40,7 @@ CREATE TABLE sch1.Albums ( }, &ast.ColumnDef{ Null: 74, + Key: -1, Name: &ast.Ident{ NamePos: 56, NameEnd: 63, @@ -53,6 +55,7 @@ CREATE TABLE sch1.Albums ( }, &ast.ColumnDef{ Null: -1, + Key: -1, Name: &ast.Ident{ NamePos: 82, NameEnd: 92,