SQLite Forum

Question about the WAL checkpoint
> If a statment finished with sqlite3_step, but not closed so I can reuse it late. In this case that mean a long-running readers block prevent a checkpointer?

If sqlite3_reset is called on the statement either explicitly or implicitly then the statement is no longer executing -- it is completed.  If the last call to sqlite3_step returned SQLITE_ROW then the statement is still executing and the checkpoint operation cannot checkpoint changes subsequent to the start of that transaction to the database.

 > If i want to do checkpoint in other thread and write in main thread, I has to create 2 connection for the same database in single thread mode?

You cannot have more than one thread call into the sqlite3 library (simultaneously) when in single-thread mode.