From 32364a17c1bf7ab2234d103ed480c37892799a3e Mon Sep 17 00:00:00 2001 From: "takeshi.nakata" Date: Wed, 21 Jul 2021 12:17:22 +0900 Subject: [PATCH] feat(spanner/spansql): fix unstable SelectFromTable SQL https://github.com/googleapis/google-cloud-go/pull/4457 made unstable SQL string, and fail test sometimes like this. ``` --- FAIL: TestSQL (0.00s) sql_test.go:410: {{false [A] [{Table map[FORCE_INDEX:Idx GROUPBY_SCAN_OPTIMIZATION:TRUE]}] {4 B b } [] [] []} [] }.SQL() wrong. got SELECT A FROM Table@{GROUPBY_SCAN_OPTIMIZATION=TRUE,FORCE_INDEX=Idx} WHERE B = @b want SELECT A FROM Table@{FORCE_INDEX=Idx,GROUPBY_SCAN_OPTIMIZATION=TRUE} WHERE B = @b ``` Because map range result is unstable. This PR makes the SQL output stable by sorting the Hints keys. --- spanner/spansql/sql.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spanner/spansql/sql.go b/spanner/spansql/sql.go index 80289d864fa..e50eca5fb4e 100644 --- a/spanner/spansql/sql.go +++ b/spanner/spansql/sql.go @@ -25,6 +25,7 @@ package spansql import ( "fmt" + "sort" "strconv" "strings" "time" @@ -373,6 +374,7 @@ func (sft SelectFromTable) SQL() string { kvs[i] = fmt.Sprintf("%s=%s", k, v) i++ } + sort.Strings(kvs) str += strings.Join(kvs, ",") str += "}" }