#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.
This commit is contained in:
parent
bcd9971b05
commit
32851d61f2
|
@ -43,7 +43,7 @@ def _iterdump(connection):
|
||||||
# qtable,
|
# qtable,
|
||||||
# sql.replace("''")))
|
# sql.replace("''")))
|
||||||
else:
|
else:
|
||||||
yield('{0};'.format(sql))
|
yield('%s;' % sql)
|
||||||
|
|
||||||
# Build the insert statement for each row of the current table
|
# Build the insert statement for each row of the current table
|
||||||
table_name_ident = table_name.replace('"', '""')
|
table_name_ident = table_name.replace('"', '""')
|
||||||
|
@ -54,7 +54,7 @@ def _iterdump(connection):
|
||||||
",".join("""'||quote("{0}")||'""".format(col.replace('"', '""')) for col in column_names))
|
",".join("""'||quote("{0}")||'""".format(col.replace('"', '""')) for col in column_names))
|
||||||
query_res = cu.execute(q)
|
query_res = cu.execute(q)
|
||||||
for row in query_res:
|
for row in query_res:
|
||||||
yield("{0};".format(row[0]))
|
yield("%s;" % row[0])
|
||||||
|
|
||||||
# Now when the type is 'index', 'trigger', or 'view'
|
# Now when the type is 'index', 'trigger', or 'view'
|
||||||
q = """
|
q = """
|
||||||
|
@ -65,6 +65,6 @@ def _iterdump(connection):
|
||||||
"""
|
"""
|
||||||
schema_res = cu.execute(q)
|
schema_res = cu.execute(q)
|
||||||
for name, type, sql in schema_res.fetchall():
|
for name, type, sql in schema_res.fetchall():
|
||||||
yield('{0};'.format(sql))
|
yield('%s;' % sql)
|
||||||
|
|
||||||
yield('COMMIT;')
|
yield('COMMIT;')
|
||||||
|
|
|
@ -29,6 +29,8 @@ class DumpTests(unittest.TestCase):
|
||||||
,
|
,
|
||||||
"INSERT INTO \"t1\" VALUES(2,'foo2',30,30);"
|
"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, " \
|
"CREATE TABLE t2(id integer, t2_i1 integer, " \
|
||||||
"t2_i2 integer, primary key (id)," \
|
"t2_i2 integer, primary key (id)," \
|
||||||
"foreign key(t2_i1) references t1(t1_i1));"
|
"foreign key(t2_i1) references t1(t1_i1));"
|
||||||
|
|
|
@ -186,6 +186,10 @@ Core and Builtins
|
||||||
Library
|
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
|
- 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
|
failing if the connection used a row factory (such as sqlite3.Row) that
|
||||||
produced unsortable objects. (Regression was introduced by fix for 9750).
|
produced unsortable objects. (Regression was introduced by fix for 9750).
|
||||||
|
|
Loading…
Reference in New Issue