diff --git a/spanner/spansql/parser.go b/spanner/spansql/parser.go index afe7d210d6ef..ada1d23d73cd 100644 --- a/spanner/spansql/parser.go +++ b/spanner/spansql/parser.go @@ -1597,7 +1597,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", "=") { @@ -1612,7 +1612,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 fbc68c559706..e1a87622e972 100644 --- a/spanner/spansql/parser_test.go +++ b/spanner/spansql/parser_test.go @@ -641,6 +641,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), + }, + }, + }}, } for _, test := range tests { got, err := ParseDDL("filename", test.in)