summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/expression.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-11-22 18:05:05 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-11-22 18:05:05 -0500
commit4de3b28abce67a09dfde1cffd8a244b6542ae8c1 (patch)
treea5ec8ef126ce6dc82eff4e8d9e7393ac80dcbb77 /lib/sqlalchemy/sql/expression.py
parent90b6ca30e430a06ed1d1696f3881ae72c6014ecd (diff)
downloadsqlalchemy-4de3b28abce67a09dfde1cffd8a244b6542ae8c1.tar.gz
fixes to actually get tests to pass
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r--lib/sqlalchemy/sql/expression.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py
index 6520be202..6eb4367b3 100644
--- a/lib/sqlalchemy/sql/expression.py
+++ b/lib/sqlalchemy/sql/expression.py
@@ -5292,6 +5292,20 @@ class Update(ValuesBase):
else:
self._whereclause = _literal_as_text(whereclause)
+ @property
+ def _extra_froms(self):
+ # TODO: this could be made memoized
+ # if the memoization is reset on each generative call.
+ froms = []
+ seen = set([self.table])
+
+ if self._whereclause is not None:
+ for item in _from_objects(self._whereclause):
+ if not seen.intersection(item._cloned_set):
+ froms.append(item)
+ seen.update(item._cloned_set)
+
+ return froms
class Delete(UpdateBase):
"""Represent a DELETE construct.