#15545: sort iterdump via SQL instead of in python code
Although there is not a regression in Python2, we make the same update here to
keep the code bases in sync.
(The fix for issue 9750 introduced a regression in Python 3 by sorting the row
objects returned by fetchall. But if a row_factory such as sqlite3.Row is
used, the rows may not be sortable (in Python3), which leads to an exception.
The sorting is still a nice idea, so the patch moves the sort into the sql.)
Fix and test by Peter Otten.
diff --git a/Lib/sqlite3/dump.py b/Lib/sqlite3/dump.py
index da6be68..de9c368 100644
--- a/Lib/sqlite3/dump.py
+++ b/Lib/sqlite3/dump.py
@@ -25,9 +25,10 @@
FROM "sqlite_master"
WHERE "sql" NOT NULL AND
"type" == 'table'
+ ORDER BY "name"
"""
schema_res = cu.execute(q)
- for table_name, type, sql in sorted(schema_res.fetchall()):
+ for table_name, type, sql in schema_res.fetchall():
if table_name == 'sqlite_sequence':
yield('DELETE FROM "sqlite_sequence";')
elif table_name == 'sqlite_stat1':