This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author malin
Recipients Big Stone, Cédric Bellegarde, berker.peksag, callidomus, fschulze, ghaering, jaraco, malin, ned.deily, palaviv, r.david.murray, serhiy.storchaka, socketpair, xiang.zhang
Date 2017-01-31.12:38:15
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
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.
Date User Action Args
2017-01-31 12:38:15malinsetrecipients: + malin, ghaering, jaraco, ned.deily, r.david.murray, socketpair, berker.peksag, serhiy.storchaka, xiang.zhang, palaviv, Big Stone, fschulze, callidomus, Cédric Bellegarde
2017-01-31 12:38:15malinsetmessageid: <>
2017-01-31 12:38:15malinlinkissue28518 messages
2017-01-31 12:38:15malincreate