From: Erlend Egeberg Aasland Date: Thu, 7 Oct 2021 09:16:45 +0000 (+0200) Subject: bpo-45041: Restore `sqlite3` executescript behaviour for `SELECT` queries (GH-28509) X-Git-Tag: v3.11.0a2~282 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f2c433da560d7999a52f9fcba4bbd0898848520;p=thirdparty%2FPython%2Fcpython.git bpo-45041: Restore `sqlite3` executescript behaviour for `SELECT` queries (GH-28509) * bpo-45041: Restore sqlite3 executescript behaviour for select queries * Add regression test --- diff --git a/Lib/sqlite3/test/test_regression.py b/Lib/sqlite3/test/test_regression.py index ff356734860b..3d71809d9c11 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 38ccdcf5379d..ca74a68de4db 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); }