diff --git a/spanner/spannertest/db_eval.go b/spanner/spannertest/db_eval.go index b0ca0a40c9b..a8fb07ad751 100644 --- a/spanner/spannertest/db_eval.go +++ b/spanner/spannertest/db_eval.go @@ -873,6 +873,12 @@ func evalLike(str, pat string) bool { // Lean on regexp for simplicity. pat = regexp.QuoteMeta(pat) + if !strings.HasPrefix(pat, "%") { + pat = "^" + pat + } + if !strings.HasSuffix(pat, "%") { + pat = pat + "$" + } pat = strings.Replace(pat, "%", ".*", -1) pat = strings.Replace(pat, "_", ".", -1) match, err := regexp.MatchString(pat, str) diff --git a/spanner/spannertest/integration_test.go b/spanner/spannertest/integration_test.go index bdcd4cfe651..90b5276986e 100644 --- a/spanner/spannertest/integration_test.go +++ b/spanner/spannertest/integration_test.go @@ -816,6 +816,21 @@ func TestIntegration_ReadsAndQueries(t *testing.T) { {"Jack", 1.85}, }, }, + { + `SELECT str FROM SomeStrings WHERE str LIKE "a%"`, + nil, + [][]interface{}{ + {"afoo"}, + {"abar"}, + }, + }, + { + `SELECT Name FROM Staff WHERE Name LIKE "%e"`, + nil, + [][]interface{}{ + {"George"}, + }, + }, { `SELECT Name FROM Staff WHERE Name LIKE "J%k" OR Name LIKE "_am"`, nil,