From 3f2c433da560d7999a52f9fcba4bbd0898848520 Mon Sep 17 00:00:00 2001 From: Erlend Egeberg Aasland Date: Thu, 7 Oct 2021 11:16:45 +0200 Subject: bpo-45041: Restore `sqlite3` executescript behaviour for `SELECT` queries (GH-28509) * bpo-45041: Restore sqlite3 executescript behaviour for select queries * Add regression test --- Lib/sqlite3/test/test_regression.py | 11 +++++++++++ Modules/_sqlite/cursor.c | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Lib/sqlite3/test/test_regression.py b/Lib/sqlite3/test/test_regression.py index ff35673..3d71809 100644 --- a/Lib/sqlite3/test/test_regression.py +++ b/Lib/sqlite3/test/test_regression.py @@ -475,6 +475,17 @@ class RegressionTests(unittest.TestCase): con.execute("drop table t") con.commit() + def test_executescript_step_through_select(self): + with managed_connect(":memory:", in_mem=True) as con: + values = [(v,) for v in range(5)] + with con: + con.execute("create table t(t)") + con.executemany("insert into t values(?)", values) + steps = [] + con.create_function("step", 1, lambda x: steps.append((x,))) + con.executescript("select step(t) from t") + self.assertEqual(steps, values) + if __name__ == "__main__": unittest.main() diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 38ccdcf..ca74a68 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -760,7 +760,7 @@ pysqlite_cursor_executescript_impl(pysqlite_Cursor *self, &tail); if (rc == SQLITE_OK) { do { - (void)sqlite3_step(stmt); + rc = sqlite3_step(stmt); } while (rc == SQLITE_ROW); rc = sqlite3_finalize(stmt); } -- cgit v0.12