@@ -1166,6 +1166,11 @@ SELECT * FROM PersonsTable WHERE id=$1`,
11661166 wantSQL : `select foo from bar where id=$tag$this is a string$tag$ and value=$1 order by value` ,
11671167 want : []string {"p1" },
11681168 },
1169+ "dollar-quoted string with tag with unicode chars" : {
1170+ input : `SELECT $ÿabc0$literal string ? ?$ÿabc0 $ÿabc0$` ,
1171+ wantSQL : `SELECT $ÿabc0$literal string ? ?$ÿabc0 $ÿabc0$` ,
1172+ want : []string {},
1173+ },
11691174 "invalid dollar-quoted string" : {
11701175 input : "select foo from bar where id=$tag$this is an invalid string and value=? order by value" ,
11711176 wantErr : spanner .ToSpannerError (
@@ -1255,6 +1260,16 @@ func TestFindParamsWithCommentsPostgreSQL(t *testing.T) {
12551260 wantSQL : `$1$tag$?it$?s$tag$%s$2` ,
12561261 want : []string {"p1" , "p2" },
12571262 },
1263+ "dollar-quoted string with tag similar tag inside" : {
1264+ input : `$tag$ $tag $tag$` ,
1265+ wantSQL : `$tag$ $tag $tag$` ,
1266+ want : []string {},
1267+ },
1268+ "dollar-quoted string with nested dollar-quoted string" : {
1269+ input : ` ? $tag$ $tag2$ test ? $tag2$ $tag$ ? ` ,
1270+ wantSQL : ` $1 $tag$ $tag2$ test ? $tag2$ $tag$ $2 ` ,
1271+ want : []string {"p1" , "p2" },
1272+ },
12581273 "dollar-quoted string with linefeed" : {
12591274 input : `?%s$$?it\'?s
12601275?it\'?s$$?` ,
@@ -2294,6 +2309,26 @@ func TestEatDollarQuotedString(t *testing.T) {
22942309 want : "" ,
22952310 wantErr : true ,
22962311 },
2312+ {
2313+ input : "$outer$ outer string $outer $outer$" ,
2314+ want : " outer string $outer " ,
2315+ wantErr : false ,
2316+ },
2317+ {
2318+ input : "$tag$value $tag#$tag$" ,
2319+ want : "value $tag#" ,
2320+ wantErr : false ,
2321+ },
2322+ {
2323+ input : "$tag$value $tag--not a comment$tag$" ,
2324+ want : "value $tag--not a comment" ,
2325+ wantErr : false ,
2326+ },
2327+ {
2328+ input : "$tag$value $tag/*not a comment*/$tag$" ,
2329+ want : "value $tag/*not a comment*/" ,
2330+ wantErr : false ,
2331+ },
22972332 }
22982333 statementParser , err := NewStatementParser (databasepb .DatabaseDialect_POSTGRESQL , 1000 )
22992334 if err != nil {
0 commit comments