From 67e7f45c59016fe15f055be4fb1e2abdecf0cec8 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 25 Jan 2010 00:35:28 +0000 Subject: - union(), intersect(), except() and other "compound" types of statements have more consistent behavior w.r.t. parenthesizing. Each compound element embedded within another will now be grouped with parenthesis - previously, the first compound element in the list would not be grouped, as SQLite doesn't like a statement to start with parenthesis. However, Postgresql in particular has precedence rules regarding INTERSECT, and it is more consistent for parenthesis to be applied equally to all sub-elements. So now, the workaround for SQLite is also what the workaround for PG was previously - when nesting compound elements, the first one usually needs ".alias().select()" called on it to wrap it inside of a subquery. [ticket:1665] --- lib/sqlalchemy/sql/expression.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'lib/sqlalchemy/sql/expression.py') diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index eb64fd571..cf5d98d8f 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -3362,11 +3362,7 @@ class CompoundSelect(_SelectBaseMixin, FromClause): (1, len(self.selects[0].c), n+1, len(s.c)) ) - # unions group from left to right, so don't group first select - if n: - self.selects.append(s.self_group(self)) - else: - self.selects.append(s) + self.selects.append(s.self_group(self)) _SelectBaseMixin.__init__(self, **kwargs) -- cgit v1.2.1