Ma Lin added the comment: Let me give a summary.
Before 3.6.0 (before 284676cf2ac8): implicit begin: st in (INSERT, UPDATE, DELETE, REPLACE) implicit commit: st not in (SELECT, INSERT, UPDATE, DELETE, REPLACE) In 3.6.0 (after 284676cf2ac8): implicit begin: (not sqlite3_stmt_readonly(st)) and (not in (CREATE, DROP, REINDEX)) implicit commit: no With Palivoda's sqlite-ddl-dml-3.patch: implicit begin: st in (INSERT, UPDATE, DELETE, REPLACE) implicit commit: no ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Some possible subsequent steps base on this issue: 1, remove sqlite3_stmt_readonly(), see issue29355. Base on sqlite-ddl-dml-3.patch, only change a single line of code: + if (self->is_dml) { - if (!sqlite3_stmt_readonly(self->statement->st)) { Then restore the behavior before 3.6.0, this is even better than using sqlite3_stmt_readonly(). 2, enhance backward compatibility. Please read msg284585, msg286217, msg286293 in a row. If we implicitly commit before executing some statements (and print a warning), we can improve compatibility largely, the cost is almost free. 3, docments enhancement. see issue8145, issue29121. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue28518> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com