summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mssql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-06-21 18:13:55 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-06-21 18:13:55 -0400
commit3045c0c258a87a63a54fed8446c28ed4b376eca3 (patch)
treed34e411ef6334b3c7338c49147ff216b59581b3c /lib/sqlalchemy/dialects/mssql
parent8b8e3a6f9db275be28ef6b6abde58ee085745cc2 (diff)
downloadsqlalchemy-3045c0c258a87a63a54fed8446c28ed4b376eca3.tar.gz
apply render_schema_translates to identity insert directives
Fixed bug where the "schema_translate_map" feature would fail to function correctly in conjunction with an INSERT into a table that has an IDENTITY column, where the value of the IDENTITY column were specified in the values of the INSERT thus triggering SQLAlchemy's feature of setting IDENTITY INSERT to "on"; it's in this directive where the schema translate map would fail to be honored. Fixes: #6658 Change-Id: I8235aa639dd465d038a2ad48e7a669f3e5c5c37c
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql')
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index 750f3743b..4ca83a697 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -1533,10 +1533,18 @@ class MSExecutionContext(default.DefaultExecutionContext):
_result_strategy = None
def _opt_encode(self, statement):
+
if not self.dialect.supports_unicode_statements:
- return self.dialect._encoder(statement)[0]
+ encoded = self.dialect._encoder(statement)[0]
else:
- return statement
+ encoded = statement
+
+ if self.compiled and self.compiled.schema_translate_map:
+
+ rst = self.compiled.preparer._render_schema_translates
+ encoded = rst(encoded, self.compiled.schema_translate_map)
+
+ return encoded
def pre_exec(self):
"""Activate IDENTITY_INSERT if needed."""