@@ -39,17 +39,18 @@ func stringify(n node.Node, builder *bytes.Buffer) {
3939 }
4040 builder .WriteString (withSel .Alias )
4141 builder .WriteString (" AS " )
42- if withSel .Raw != "" {
42+ switch {
43+ case withSel .Raw != "" :
4344 builder .WriteString (withSel .Raw )
44- } else if withSel .X != nil {
45- builder .WriteString ( "(" )
45+ case withSel .X != nil :
46+ builder .WriteByte ( '(' )
4647 stringify (withSel .X , builder )
47- builder .WriteString ( ")" )
48- } else {
48+ builder .WriteByte ( ')' )
49+ default :
4950 builder .WriteString ("()" )
5051 }
5152 }
52- builder .WriteString ( " " )
53+ builder .WriteByte ( ' ' )
5354 }
5455 builder .WriteString ("SELECT " )
5556 stringify (actual .List , builder )
@@ -210,16 +211,24 @@ func stringify(n node.Node, builder *bytes.Buffer) {
210211 builder .WriteString (" AND " )
211212 stringify (actual .Max , builder )
212213 case * expr.Selector :
213- builder .WriteString (actual .Name )
214- if actual .Expression != "" {
215- builder .WriteString ("[" )
214+ name := actual .Name
215+ if actual .Expression == "" {
216+ builder .WriteString (name )
217+ } else if strings .HasPrefix (name , "`" ) && strings .HasSuffix (name , "`" ) && len (name ) > 1 {
218+ builder .WriteString (name [:len (name )- 1 ])
219+ builder .WriteByte ('[' )
216220 builder .WriteString (actual .Expression )
217- builder .WriteString ("]" )
221+ builder .WriteString ("]`" )
222+ } else {
223+ builder .WriteString (name )
224+ builder .WriteByte ('[' )
225+ builder .WriteString (actual .Expression )
226+ builder .WriteByte (']' )
218227 }
219228 if actual .X != nil {
220229 builder .WriteByte ('.' )
230+ stringify (actual .X , builder )
221231 }
222- stringify (actual .X , builder )
223232 case * update.Item :
224233 stringify (actual .Column , builder )
225234 builder .WriteString (" = " )
0 commit comments