summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql_util.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-05-14 22:25:36 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-05-14 22:25:36 +0000
commitae4b954b1a6baf5a58c0e00e382196b581a7f06a (patch)
tree562d969dcef857594a62e3730e1305aaa284e3b0 /lib/sqlalchemy/sql_util.py
parent3de128138a896bc7373aa2684c920271c4781b7d (diff)
downloadsqlalchemy-ae4b954b1a6baf5a58c0e00e382196b581a7f06a.tar.gz
- parenthesis are applied to clauses via a new _Grouping construct.
uses operator precedence to more intelligently apply parenthesis to clauses, provides cleaner nesting of clauses (doesnt mutate clauses placed in other clauses, i.e. no 'parens' flag) - added 'modifier' keyword, works like func.<foo> except does not add parenthesis. e.g. select([modifier.DISTINCT(...)]) etc.
Diffstat (limited to 'lib/sqlalchemy/sql_util.py')
-rw-r--r--lib/sqlalchemy/sql_util.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql_util.py b/lib/sqlalchemy/sql_util.py
index dcd19f891..1f5ac1681 100644
--- a/lib/sqlalchemy/sql_util.py
+++ b/lib/sqlalchemy/sql_util.py
@@ -133,16 +133,23 @@ class AbstractClauseProcessor(sql.NoColumnVisitor):
list_[i] = elem
else:
self.traverse(list_[i])
-
- def visit_compound(self, compound):
- self.visit_clauselist(compound)
-
+
+ def visit_grouping(self, grouping):
+ elem = self.convert_element(grouping.elem)
+ if elem is not None:
+ grouping.elem = elem
+
def visit_clauselist(self, clist):
for i in range(0, len(clist.clauses)):
n = self.convert_element(clist.clauses[i])
if n is not None:
clist.clauses[i] = n
-
+
+ def visit_unary(self, unary):
+ elem = self.convert_element(unary.element)
+ if elem is not None:
+ unary.element = elem
+
def visit_binary(self, binary):
elem = self.convert_element(binary.left)
if elem is not None: