diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-12-08 03:03:29 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-12-08 03:03:29 +0000 |
commit | fa43b890bddebdfcbb825cb090a5b92222e04b52 (patch) | |
tree | e2a8d8b3de1c353564e39892825ee88cadfcd9c0 /lib/sqlalchemy/sql.py | |
parent | e2c4d1cc58163319088d5bcf1c1661ae5d959947 (diff) | |
download | sqlalchemy-fa43b890bddebdfcbb825cb090a5b92222e04b52.tar.gz |
some enhancemnets to unions, unions and selects need to be more commonly derived,
also more tweaks to mapper eager query compilation involving distinct etc.
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 10e8f3e74..26c9a862b 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -907,6 +907,12 @@ class TailClauseMixin(object): def group_by(self, *clauses): self._append_clause('group_by_clause', "GROUP BY", *clauses) def _append_clause(self, attribute, prefix, *clauses): + if len(clauses) == 1 and clauses[0] is None: + try: + delattr(self, attribute) + except AttributeError: + pass + return if not hasattr(self, attribute): l = ClauseList(*clauses) setattr(self, attribute, l) @@ -920,8 +926,14 @@ class TailClauseMixin(object): class CompoundSelect(Selectable, TailClauseMixin): def __init__(self, keyword, *selects, **kwargs): + self.id = "Compound(%d)" % id(self) self.keyword = keyword self.selects = selects + self.use_labels = kwargs.pop('use_labels', False) + self.rowid_column = selects[0].rowid_column + for s in self.selects: + s.order_by(None) + s.group_by(None) self.clauses = [] order_by = kwargs.get('order_by', None) if order_by: @@ -944,7 +956,9 @@ class CompoundSelect(Selectable, TailClauseMixin): return e else: return None - + def _get_from_objects(self): + return [self] + class Select(Selectable, TailClauseMixin): """finally, represents a SELECT statement, with appendable clauses, as well as the ability to execute itself and return a result set.""" |