File tree Expand file tree Collapse file tree
parser/testdata/00342_escape_sequences Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -27,10 +27,12 @@ func FormatFloat(val float64) string {
2727
2828// escapeStringLiteral escapes special characters in a string for EXPLAIN AST output
2929// Uses double-escaping as ClickHouse EXPLAIN AST displays strings
30+ // Iterates over bytes to preserve raw bytes (including invalid UTF-8)
3031func escapeStringLiteral (s string ) string {
3132 var sb strings.Builder
32- for _ , r := range s {
33- switch r {
33+ for i := 0 ; i < len (s ); i ++ {
34+ b := s [i ]
35+ switch b {
3436 case '\\' :
3537 sb .WriteString ("\\ \\ \\ \\ " ) // backslash becomes four backslashes (\\\\)
3638 case '\'' :
@@ -48,7 +50,7 @@ func escapeStringLiteral(s string) string {
4850 case '\f' :
4951 sb .WriteString ("\\ \\ f" ) // form feed becomes \\f
5052 default :
51- sb .WriteRune ( r )
53+ sb .WriteByte ( b )
5254 }
5355 }
5456 return sb .String ()
Original file line number Diff line number Diff line change @@ -376,10 +376,14 @@ func (l *Lexer) readString(quote rune) Item {
376376 sb .WriteRune ('\r' )
377377 case '0' :
378378 sb .WriteRune ('\x00' )
379+ case 'a' :
380+ sb .WriteRune ('\a' )
379381 case 'b' :
380382 sb .WriteRune ('\b' )
381383 case 'f' :
382384 sb .WriteRune ('\f' )
385+ case 'v' :
386+ sb .WriteRune ('\v' )
383387 case 'x' :
384388 // Hex escape: \xNN
385389 l .readChar ()
Original file line number Diff line number Diff line change 1- {"todo" : true }
1+ {}
You can’t perform that action at this time.
0 commit comments