diff --git a/spanner/spansql/parser.go b/spanner/spansql/parser.go index b22ffc78dc2..176e8a49c2b 100644 --- a/spanner/spansql/parser.go +++ b/spanner/spansql/parser.go @@ -1728,7 +1728,7 @@ func (p *parser) parseDatabaseOptions() (DatabaseOptions, *parseError) { if err != nil { return DatabaseOptions{}, p.errorf("invalid optimizer_version value: %v", tok.value) } - optimizerVersion = &version + *optimizerVersion = version } opts.OptimizerVersion = optimizerVersion } else if p.eat("version_retention_period", "=") { @@ -1743,7 +1743,7 @@ func (p *parser) parseDatabaseOptions() (DatabaseOptions, *parseError) { if tok.typ != stringToken { return DatabaseOptions{}, p.errorf("invalid version_retention_period: %v", tok.value) } - retentionPeriod = &tok.string + *retentionPeriod = tok.string } opts.VersionRetentionPeriod = retentionPeriod } else { diff --git a/spanner/spansql/parser_test.go b/spanner/spansql/parser_test.go index ab8048a0797..9b4565b42bd 100644 --- a/spanner/spansql/parser_test.go +++ b/spanner/spansql/parser_test.go @@ -915,6 +915,29 @@ func TestParseDDL(t *testing.T) { }, }, }}, + {`ALTER DATABASE dbname SET OPTIONS (optimizer_version=2, version_retention_period='7d', enable_key_visualizer=true); CREATE TABLE users (UserId STRING(MAX) NOT NULL,) PRIMARY KEY (UserId);`, + &DDL{Filename: "filename", List: []DDLStmt{ + &AlterDatabase{ + Name: "dbname", + Alteration: SetDatabaseOptions{ + Options: DatabaseOptions{ + OptimizerVersion: func(i int) *int { return &i }(2), + VersionRetentionPeriod: func(s string) *string { return &s }("7d"), + EnableKeyVisualizer: func(b bool) *bool { return &b }(true), + }, + }, + Position: line(1), + }, + &CreateTable{Name: "users", Columns: []ColumnDef{ + {Name: "UserId", Type: Type{Base: String, Len: MaxLen}, NotNull: true, Position: line(1)}, + }, + PrimaryKey: []KeyPart{ + {Column: "UserId"}, + }, + Position: line(1), + }, + }, + }}, {`ALTER DATABASE dbname SET OPTIONS (optimizer_version=null, version_retention_period=null, enable_key_visualizer=null)`, &DDL{Filename: "filename", List: []DDLStmt{ &AlterDatabase{