Skip to content

Commit

Permalink
Add a space before subqueries
Browse files Browse the repository at this point in the history
This is a more general fix for issue #105.
  • Loading branch information
lelit committed May 30, 2022
1 parent f351e0f commit 73a8237
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 10 deletions.
20 changes: 10 additions & 10 deletions pglast/printers/dml.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ class AExprKindPrinter(IntEnumPrinter):

def AEXPR_BETWEEN(self, node, output):
output.print_node(node.lexpr)
output.swrites('BETWEEN')
output.swrite('BETWEEN ')
output.print_list(node.rexpr, 'AND', relative_indent=-4)

def AEXPR_BETWEEN_SYM(self, node, output):
output.print_node(node.lexpr)
output.swrites('BETWEEN SYMMETRIC')
output.swrite('BETWEEN SYMMETRIC ')
output.print_list(node.rexpr, 'AND', relative_indent=-4)

def AEXPR_DISTINCT(self, node, output):
Expand All @@ -43,14 +43,14 @@ def AEXPR_DISTINCT(self, node, output):
output.print_node(node.lexpr)
if node.lexpr.node_tag == 'BoolExpr':
output.write(') ')
output.swrites('IS DISTINCT FROM')
output.swrite('IS DISTINCT FROM ')
output.print_node(node.rexpr)

def AEXPR_ILIKE(self, node, output):
output.print_node(node.lexpr)
if node.name.string_value == '!~~*':
output.swrites('NOT')
output.swrites('ILIKE')
output.swrite('ILIKE ')
output.print_node(node.rexpr)

def AEXPR_IN(self, node, output):
Expand All @@ -65,22 +65,22 @@ def AEXPR_LIKE(self, node, output):
output.print_node(node.lexpr)
if node.name.string_value == '!~~':
output.swrites('NOT')
output.swrites('LIKE')
output.swrite('LIKE ')
output.print_node(node.rexpr)

def AEXPR_NOT_BETWEEN(self, node, output):
output.print_node(node.lexpr)
output.swrites('NOT BETWEEN')
output.swrite('NOT BETWEEN ')
output.print_list(node.rexpr, 'AND', relative_indent=-4)

def AEXPR_NOT_BETWEEN_SYM(self, node, output):
output.print_node(node.lexpr)
output.swrites('NOT BETWEEN SYMMETRIC')
output.swrite('NOT BETWEEN SYMMETRIC ')
output.print_list(node.rexpr, 'AND', relative_indent=-4)

def AEXPR_NOT_DISTINCT(self, node, output):
output.print_node(node.lexpr)
output.swrites('IS NOT DISTINCT FROM')
output.swrite('IS NOT DISTINCT FROM ')
output.print_node(node.rexpr)

def AEXPR_NULLIF(self, node, output):
Expand Down Expand Up @@ -154,13 +154,13 @@ def AEXPR_SIMILAR(self, node, output):
output.print_node(node.lexpr)
if node.name.string_value == '!~':
output.swrites('NOT')
output.swrites('SIMILAR TO')
output.swrite('SIMILAR TO ')
assert (node.rexpr.node_tag == 'FuncCall'
and node.rexpr.funcname[1].val.value == 'similar_to_escape')
pattern = node.rexpr.args[0]
output.print_node(pattern)
if len(node.rexpr.args) > 1:
output.swrites('ESCAPE')
output.swrite('ESCAPE ')
output.print_node(node.rexpr.args[1])


Expand Down
10 changes: 10 additions & 0 deletions tests/test_printers_prettification/dml/select.sql
Original file line number Diff line number Diff line change
Expand Up @@ -416,3 +416,13 @@ footer
select 4294967310
=
SELECT 4294967310

select t1.*
from tab1 as t1
where t1.code like (select t2.code||'.%' from tab1 t2 where t2.id = 'foo')
=
SELECT t1.*
FROM tab1 AS t1
WHERE t1.code LIKE (SELECT t2.code || '.%'
FROM tab1 AS t2
WHERE t2.id = 'foo')

0 comments on commit 73a8237

Please sign in to comment.