[#207] netmap: Fix string escape in PlacementPolicy.String()

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2024-03-01 17:30:10 +03:00 committed by Evgenii Stratonikov
parent a5fab572ff
commit 6fe4e2541d
2 changed files with 12 additions and 3 deletions

View file

@ -940,10 +940,14 @@ func operationFromString(s string) (op netmap.Operation) {
return return
} }
// escapeString returns single quote wrapped string if it contains special // escapeString returns single quote wrapped string.
// characters '-' and whitespace. // Wrapping rules must be kept in sync with QueryLexer.g4.
// Currently only ASCII letters, digits and underscore can be parsed without quotes.
func escapeString(s string) string { func escapeString(s string) string {
if strings.ContainsAny(s, " -\t") { for _, r := range s {
if 'a' <= r && r <= 'z' || 'A' <= r && r <= 'Z' || '0' <= r && r <= '9' || r == '_' {
continue
}
return "'" + s + "'" return "'" + s + "'"
} }
return s return s

View file

@ -36,6 +36,11 @@ FILTER City EQ SPB AND SSD EQ true OR City EQ SPB AND Rating GE 5 AS SPBSSD`,
SELECT 1 IN City FROM SPBSSD AS SPB SELECT 1 IN City FROM SPBSSD AS SPB
FILTER NOT (NOT (City EQ SPB) AND SSD EQ true OR City EQ SPB AND Rating GE 5) AS SPBSSD`, FILTER NOT (NOT (City EQ SPB) AND SSD EQ true OR City EQ SPB AND Rating GE 5) AS SPBSSD`,
`REP 1 IN FNODE
CBF 1
SELECT 1 FROM F AS FNODE
FILTER Node EQ '10.78.8.11' AS F`,
`UNIQUE `UNIQUE
REP 1 REP 1
REP 1`, REP 1`,