[Python-checkins] cpython (2.7): #15109: revert '%'->'format' changes in 4b105d328fe7 to fix regression.
r.david.murray
python-checkins at python.org
Fri Jan 11 03:12:17 CET 2013
http://hg.python.org/cpython/rev/2a417ad8bfbf
changeset: 81378:2a417ad8bfbf
branch: 2.7
user: R David Murray <rdmurray at bitdance.com>
date: Thu Jan 10 21:10:40 2013 -0500
summary:
#15109: revert '%'->'format' changes in 4b105d328fe7 to fix regression.
With '%', non-ascii worked because the '%' automatically got promoted to
unicode. With format that doesn't happen, which led to encoding errors. This
fix goes back to using %, and adds a test to make sure non-ascii string values
work in iterdump.
files:
Lib/sqlite3/dump.py | 6 +++---
Lib/sqlite3/test/dump.py | 2 ++
Misc/NEWS | 4 ++++
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Lib/sqlite3/dump.py b/Lib/sqlite3/dump.py
--- a/Lib/sqlite3/dump.py
+++ b/Lib/sqlite3/dump.py
@@ -43,7 +43,7 @@
# qtable,
# sql.replace("''")))
else:
- yield('{0};'.format(sql))
+ yield('%s;' % sql)
# Build the insert statement for each row of the current table
table_name_ident = table_name.replace('"', '""')
@@ -54,7 +54,7 @@
",".join("""'||quote("{0}")||'""".format(col.replace('"', '""')) for col in column_names))
query_res = cu.execute(q)
for row in query_res:
- yield("{0};".format(row[0]))
+ yield("%s;" % row[0])
# Now when the type is 'index', 'trigger', or 'view'
q = """
@@ -65,6 +65,6 @@
"""
schema_res = cu.execute(q)
for name, type, sql in schema_res.fetchall():
- yield('{0};'.format(sql))
+ yield('%s;' % sql)
yield('COMMIT;')
diff --git a/Lib/sqlite3/test/dump.py b/Lib/sqlite3/test/dump.py
--- a/Lib/sqlite3/test/dump.py
+++ b/Lib/sqlite3/test/dump.py
@@ -29,6 +29,8 @@
,
"INSERT INTO \"t1\" VALUES(2,'foo2',30,30);"
,
+ u"INSERT INTO \"t1\" VALUES(3,'f\xc3\xb6',40,10);"
+ ,
"CREATE TABLE t2(id integer, t2_i1 integer, " \
"t2_i2 integer, primary key (id)," \
"foreign key(t2_i1) references t1(t1_i1));"
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -186,6 +186,10 @@
Library
-------
+- Issue #15109: Fix regression in sqlite3's iterdump method where it would
+ die with an encoding error if the database contained string values
+ containing non-ASCII. (Regression was introduced by fix for 9750).
+
- Issue #15545: Fix regression in sqlite3's iterdump method where it was
failing if the connection used a row factory (such as sqlite3.Row) that
produced unsortable objects. (Regression was introduced by fix for 9750).
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list