Here is the reproduction path.

```
sqlite3 db
PRAGMA journal_mode=WAL;
CREATE TABLE t(i INTEGER);
INSERT INTO t VALUES(1);
PRAGMA wal_checkpoint=TRUNCATE;


// check the WAL file size without checkpoint/close sqlite connection
ls -l | grep wal
// print 0 db-wal


BEGIN IMMEDIATE;
SAVEPOINT s1;
INSERT INTO t VALUES(2);
ROLLBACK TO SAVEPOINT s1;
COMMIT;


SELECT * FROM t;
// print 1


// check the WAL file size without checkpoint/close sqlite connection
ls -l | grep wal
// print 4152 db-wal
```


As you can see, the insertion inside the transaction is not effective, which is 
as expected.
The strange thing is that the size of WAL file is changed, which means that 
SOMETHING appended into the end of WAL file.
BUT why? We should have nothing to write.
Is it a bug?
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to