bpo-45041: Restore sqlite3 executescript behaviour for SELECT queries (GH-28509)

* bpo-45041: Restore sqlite3 executescript behaviour for select queries

* Add regression test
This commit is contained in:
Erlend Egeberg Aasland 2021-10-07 11:16:45 +02:00 committed by GitHub
parent dd02a696e5
commit 3f2c433da5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View file

@ -475,6 +475,17 @@ def dup(v):
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()

View file

@ -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);
}