From f917b353e88aa11d0efff1dc8bf1dbd079d57efb Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 17 Oct 2016 11:07:14 -0400 Subject: Add a qualifying character to multi INSERT..VALUES parameter names Changed the naming convention used when generating bound parameters for a multi-VALUES insert statement, so that the numbered parameter names don't conflict with the anonymized parameters of a WHERE clause, as is now common in a PostgreSQL ON CONFLICT construct. Change-Id: I3188d100fe4d322a47d344d6a63d3e40b915f228 Fixes: #3828 --- lib/sqlalchemy/sql/crud.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/sql/crud.py b/lib/sqlalchemy/sql/crud.py index 642659c84..452fe5d9a 100644 --- a/lib/sqlalchemy/sql/crud.py +++ b/lib/sqlalchemy/sql/crud.py @@ -317,7 +317,7 @@ def _append_param_parameter( compiler, c, value, required=value is REQUIRED, name=_col_bind_name(c) if not stmt._has_multi_parameters - else "%s_0" % _col_bind_name(c), + else "%s_m0" % _col_bind_name(c), **kw ) else: @@ -396,7 +396,7 @@ def _create_update_prefetch_bind_param(compiler, c, process=True, name=None): class _multiparam_column(elements.ColumnElement): def __init__(self, original, index): - self.key = "%s_%d" % (original.key, index + 1) + self.key = "%s_m%d" % (original.key, index + 1) self.original = original self.default = original.default self.type = original.type @@ -603,7 +603,7 @@ def _extend_values_for_multiparams(compiler, stmt, values, kw): c, (_create_bind_param( compiler, c, row[c.key], - name="%s_%d" % (c.key, i + 1) + name="%s_m%d" % (c.key, i + 1) ) if elements._is_literal(row[c.key]) else compiler.process( row[c.key].self_group(), **kw)) -- cgit v1.2.1