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 <[email protected]>
<http://bugs.python.org/issue28518>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com