Jens Alfke wrote:
> 3. The database is closed with sqlite3_close_v2. The statement is still 
> alive, so the database handle secretly remains open in "zombie mode".
> 4. We delete the database's parent directory and all files in it.
> [...]
> This scenario isn't covered in "How To Corrupt An SQLite Database File"

sqlite3_close_v2() allows statements to be finalized afterwards, but
that finalization must actually happen for the DB to close.

You have a still-active database; this is described in 2.4.

> At the moment I'm not sure what to do about this.

Java's garbage collection handles memory.  For any other kind of
resource, you should use try-with-resources statements.

> (b) Avoid ever reusing the same path. This means we'd have to give the
>     database file inside the wrapper directory a different name every
>     time — instead of just "db.sqlite3" it'd include a UUID or
>     timestamp or something. That of course complicates opening
>     a database, necessitating a directory traversal to discover the
>     file in the directory.

That "wrapper directory" sounds as if you already have a mechanism to
run the test in a custom directory, so use a different directory name.

sqlite-users mailing list

Reply via email to