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