diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-10 17:43:37 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-10 17:43:37 -0500 |
| commit | f2e90fa205b2528b67a935dc976006aafc6f3c09 (patch) | |
| tree | 41264632154890de6c3a4f60bb61d17b00ac1a8a | |
| parent | 759a34f116374fe43e2938809956cee24ed1dee0 (diff) | |
| download | sqlalchemy-f2e90fa205b2528b67a935dc976006aafc6f3c09.tar.gz | |
- remove .columns method on UpdateBase since a returning()
construct isn't intended to be used in SELECT queries directly
- implement a direct system within CTE to detect UpdateBase and
extract columns from returning directly
| -rw-r--r-- | lib/sqlalchemy/sql/dml.py | 10 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/schema.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 9 |
3 files changed, 10 insertions, 11 deletions
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py index a4a362c22..8f368dcdb 100644 --- a/lib/sqlalchemy/sql/dml.py +++ b/lib/sqlalchemy/sql/dml.py @@ -144,16 +144,6 @@ class UpdateBase( """ self._returning = cols - @util.memoized_property - def columns(self): - """A select-style column collection from the RETURNING - expression of this clause.""" - - self._columns = ColumnCollection() - for col in self._returning: - col._make_proxy(self) - return self._columns.as_immutable() - @_generative def with_hint(self, text, selectable=None, dialect_name="*"): """Add a table hint for a single table to this diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index f3ef16974..5e709b1e3 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -1396,7 +1396,7 @@ class Column(SchemaItem, ColumnClause): selectable._columns.add(c) if selectable._is_clone_of is not None: c._is_clone_of = selectable._is_clone_of.columns[c.key] - if self.primary_key and hasattr(selectable, 'primary_key'): + if self.primary_key: selectable.primary_key.add(c) c.dispatch.after_parent_attach(c, selectable) return c diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 95ed10524..4315abc47 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -1195,6 +1195,15 @@ class CTE(Generative, HasSuffixes, Alias): self._suffixes = _suffixes super(CTE, self).__init__(selectable, name=name) + @util.dependencies("sqlalchemy.sql.dml") + def _populate_column_collection(self, dml): + if isinstance(self.element, dml.UpdateBase): + for col in self.element._returning: + col._make_proxy(self) + else: + for col in self.element.columns._all_columns: + col._make_proxy(self) + def alias(self, name=None, flat=False): return CTE( self.original, |
