diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2018-06-24 11:57:21 -0400 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci.zzzcomputing.com> | 2018-06-24 11:57:21 -0400 |
| commit | 647382b08d64a8b918715670eae7899a5d300325 (patch) | |
| tree | f4e3b307b92c8852c1c9897ccc68c0ea1f434cf7 /lib/sqlalchemy/sql/compiler.py | |
| parent | c352257070e17baada280befd2beae15ee26f4d0 (diff) | |
| parent | 3619edcb8aa3ceef2a44925b85315fc0e90c5982 (diff) | |
| download | sqlalchemy-647382b08d64a8b918715670eae7899a5d300325.tar.gz | |
Merge "render WITH clause after INSERT for INSERT..SELECT on Oracle, MySQL"
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index a442c65fd..0b98dc51c 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -2105,7 +2105,12 @@ class SQLCompiler(Compiled): returning_clause = None if insert_stmt.select is not None: - text += " %s" % self.process(self._insert_from_select, **kw) + select_text = self.process(self._insert_from_select, **kw) + + if self.ctes and toplevel and self.dialect.cte_follows_insert: + text += " %s%s" % (self._render_cte_clause(), select_text) + else: + text += " %s" % select_text elif not crud_params and supports_default_values: text += " DEFAULT VALUES" elif insert_stmt._has_multi_parameters: @@ -2130,7 +2135,7 @@ class SQLCompiler(Compiled): if returning_clause and not self.returning_precedes_values: text += " " + returning_clause - if self.ctes and toplevel: + if self.ctes and toplevel and not self.dialect.cte_follows_insert: text = self._render_cte_clause() + text self.stack.pop(-1) |
