From: Daniele Varrazzo Date: Wed, 8 Apr 2020 15:48:11 +0000 (+1200) Subject: Fixed formats in query with repeated arguments X-Git-Tag: 3.0.dev0~587 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=341d382ef1325ecf304a0a2494d32859ff09b6a1;p=thirdparty%2Fpsycopg.git Fixed formats in query with repeated arguments Fixed test that wasn't checking the format. --- diff --git a/psycopg3/utils/queries.py b/psycopg3/utils/queries.py index fb89383b9..5fcbf8d46 100644 --- a/psycopg3/utils/queries.py +++ b/psycopg3/utils/queries.py @@ -65,13 +65,13 @@ def query2pg( order = [] for part in parts[:-1]: assert isinstance(part.item, str) - formats.append(part.format) chunks.append(part.pre) if part.item not in seen: ph = b"$%d" % (len(seen) + 1) seen[part.item] = (ph, part.format) order.append(part.item) chunks.append(ph) + formats.append(part.format) else: if seen[part.item][1] != part.format: raise e.ProgrammingError( diff --git a/tests/test_query.py b/tests/test_query.py index 032301781..7fa3e1591 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -90,6 +90,7 @@ def test_query2pg_seq(query, params, want, wformats): def test_query2pg_map(query, params, want, wformats, worder): out, formats, order = query2pg(query, params, codecs.lookup("utf-8")) assert out == want + assert formats == wformats assert order == worder