summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index ae1dd2c7c..529e28ba6 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -2180,11 +2180,6 @@ class SQLCompiler(Compiled):
def visit_update(self, update_stmt, asfrom=False, **kw):
toplevel = not self.stack
- self.stack.append(
- {'correlate_froms': {update_stmt.table},
- "asfrom_froms": {update_stmt.table},
- "selectable": update_stmt})
-
extra_froms = update_stmt._extra_froms
is_multitable = bool(extra_froms)
@@ -2194,8 +2189,15 @@ class SQLCompiler(Compiled):
render_extra_froms = [
f for f in extra_froms if f not in main_froms
]
+ correlate_froms = main_froms.union(extra_froms)
else:
render_extra_froms = []
+ correlate_froms = {update_stmt.table}
+
+ self.stack.append(
+ {'correlate_froms': correlate_froms,
+ "asfrom_froms": correlate_froms,
+ "selectable": update_stmt})
text = "UPDATE "
@@ -2289,14 +2291,15 @@ class SQLCompiler(Compiled):
def visit_delete(self, delete_stmt, asfrom=False, **kw):
toplevel = not self.stack
- self.stack.append({'correlate_froms': {delete_stmt.table},
- "asfrom_froms": {delete_stmt.table},
- "selectable": delete_stmt})
-
crud._setup_crud_params(self, delete_stmt, crud.ISDELETE, **kw)
extra_froms = delete_stmt._extra_froms
+ correlate_froms = {delete_stmt.table}.union(extra_froms)
+ self.stack.append({'correlate_froms': correlate_froms,
+ "asfrom_froms": correlate_froms,
+ "selectable": delete_stmt})
+
text = "DELETE "
if delete_stmt._prefixes:
@@ -2401,9 +2404,9 @@ class StrSQLCompiler(SQLCompiler):
for t in extra_froms)
def delete_extra_from_clause(self, update_stmt,
- from_table, extra_froms,
- from_hints,
- **kw):
+ from_table, extra_froms,
+ from_hints,
+ **kw):
return ', ' + ', '.join(
t._compiler_dispatch(self, asfrom=True,
fromhints=from_hints, **kw)