>> My question is: is it possible to prevent checkpoints from completing >> successfully when a snapshot is alive? > > That depends on what you mean by "alive"?
Sorry, I meant "not finalized by sqlite3_snapshot_free". Your precise answer lifts any doubt: only transactions can prevent checkpoints from running to completion. Thank you very much Richard! Gwendal On Fri, Sep 27, 2019 at 12:35 PM Richard Hipp <d...@sqlite.org> wrote: > On 9/26/19, Gwendal Roué <gwendal.r...@gmail.com> wrote: > > > > My question is: is it possible to prevent checkpoints from completing > > successfully when a snapshot is alive? > > > > That depends on what you mean by "alive"? > > An sqlite3_snapshot_get() simply records some numbers in private > memory of the database connection that called sqlite3_snapshot_get(). > There is no way for another process to know that those numbers have > been recorded, and hence no way to know that the snapshot exists, and > no way to prevent a checkpoint from happening. > > On the other hand, if you have run sqlite3_snapshot_open() so that > there is a transaction open on the snapshot, that takes locks on the > database which prevent checkpoints from running to completion and > erasing the snapshot. > > -- > D. Richard Hipp > d...@sqlite.org > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users