Skip to content

Commit

Permalink
feat(spanner/spannersql): add backticks when name contains a hypen (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
harshachinta committed Sep 7, 2022
1 parent 2fa0bd4 commit e88ca66
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
14 changes: 14 additions & 0 deletions spanner/spannertest/db_test.go
Expand Up @@ -714,3 +714,17 @@ func TestForeignKeyAddAndAlterConstraint(t *testing.T) {
}
}
}

func TestAddBackQuoteForHypen(t *testing.T) {
ddl, err := spansql.ParseDDL("filename", "ALTER DATABASE `test-db` SET OPTIONS (optimizer_version=4, version_retention_period = '7d', enable_key_visualizer=true)")
if err != nil {
t.Fatalf("%s: Bad DDL", err)
}

got := ddl.List[0].SQL()
want := "ALTER DATABASE `test-db` SET OPTIONS (optimizer_version=4, version_retention_period='7d', enable_key_visualizer=true)"

if !reflect.DeepEqual(got, want) {
t.Errorf("Generated SQL statement incorrect.\n got %v\nwant %v", got, want)
}
}
3 changes: 2 additions & 1 deletion spanner/spansql/sql.go
Expand Up @@ -701,7 +701,8 @@ func (id ID) addSQL(sb *strings.Builder) {

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

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

0 comments on commit e88ca66

Please sign in to comment.