Skip to content

Commit e88ca66

Browse files
authored
feat(spanner/spannersql): add backticks when name contains a hypen (#6621)
1 parent 2fa0bd4 commit e88ca66

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

spanner/spannertest/db_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -714,3 +714,17 @@ func TestForeignKeyAddAndAlterConstraint(t *testing.T) {
714714
}
715715
}
716716
}
717+
718+
func TestAddBackQuoteForHypen(t *testing.T) {
719+
ddl, err := spansql.ParseDDL("filename", "ALTER DATABASE `test-db` SET OPTIONS (optimizer_version=4, version_retention_period = '7d', enable_key_visualizer=true)")
720+
if err != nil {
721+
t.Fatalf("%s: Bad DDL", err)
722+
}
723+
724+
got := ddl.List[0].SQL()
725+
want := "ALTER DATABASE `test-db` SET OPTIONS (optimizer_version=4, version_retention_period='7d', enable_key_visualizer=true)"
726+
727+
if !reflect.DeepEqual(got, want) {
728+
t.Errorf("Generated SQL statement incorrect.\n got %v\nwant %v", got, want)
729+
}
730+
}

spanner/spansql/sql.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,8 @@ func (id ID) addSQL(sb *strings.Builder) {
701701

702702
// TODO: If there are non-letters/numbers/underscores then this also needs quoting.
703703

704-
if IsKeyword(string(id)) {
704+
// Naming Convention: Must be enclosed in backticks (`) if it's a reserved keyword or contains a hyphen.
705+
if IsKeyword(string(id)) || strings.Contains(string(id), "-") {
705706
// TODO: Escaping may be needed here.
706707
sb.WriteString("`")
707708
sb.WriteString(string(id))

0 commit comments

Comments
 (0)