summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-02-10 17:43:37 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-02-10 17:43:37 -0500
commitf2e90fa205b2528b67a935dc976006aafc6f3c09 (patch)
tree41264632154890de6c3a4f60bb61d17b00ac1a8a
parent759a34f116374fe43e2938809956cee24ed1dee0 (diff)
downloadsqlalchemy-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.py10
-rw-r--r--lib/sqlalchemy/sql/schema.py2
-rw-r--r--lib/sqlalchemy/sql/selectable.py9
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,