process:

 - create a new db and set pragma journal_mode=PERSIST
 - create a table
 - open the same db again, without setting journal mode
 - create another table

Result: 

second create table statement returns SQLITE_IOERR (code 10) after notable
delay

Honestly, I'm not very proud of this use case (one client tries to optimize
access times, the other doesn't care), but a more graceful handling or a
warning in the documentation would be nice. 

Example code:

#include "sqlite3.h"
#include <cstdio>
#include <assert.h>

void Check(sqlite3 * db, int err)
{
   char const * msg = sqlite3_errmsg(db);
   assert(err == SQLITE_OK);
}

void Exec(sqlite3 * db, char const * sql)
{
   Check(db, sqlite3_exec(db, sql, nullptr, nullptr, nullptr));
}

int main()
{
   char const * path = "c:\\temp\\db1.sqlite";

   std::remove(path);
   sqlite3 * db = 0;
   Check(db, sqlite3_open(path, &db));

   Exec(db, "pragma journal_mode=PERSIST");
   Exec(db, "CREATE TABLE t1 (id INTEGER PRIMARY KEY AutoIncrement, value
STRING)");

   sqlite3 * db2 = 0;
   Check(db2, sqlite3_open(path, &db2));
   Exec(db2, "CREATE TABLE t2 (id INTEGER PRIMARY KEY AutoIncrement, value
STRING)");

   Check(db2, sqlite3_close(db2));
   Check(db, sqlite3_close(db));
}


sqlite amalgamation 3.28.0.



--
Sent from: http://sqlite.1065341.n5.nabble.com/
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to