I am using SQLite in multi-thread mode, which means that different threads using different SQLite connection. And now I find an issue that the results of SQLite C interface returned is expired while the schema of database is changed.
The following sample runs in different threads, but I force them to runsequentially. Thread 1: 1. Conn A: Open, PRAGMA journal_mode=WAL Thread 2: 2.ConnB: Open, PRAGMA journal_mode=WAL Thread 1: 3.ConnA: CREATE TABLE sample (i INTEGER); Thread 2: 4.ConnB: PRAGMA table_info('sample') Firstly, both thread 1 and 2 do initialization for their own conn, which is to read to schema into memory. Then, Conn A creates a table with Conn A. Finally, `PRAGMA table_info(sample)` is called in thread 2 with Conn B and it returns nothing. The same thing could happen if I change the step 4 to `sqlite3_table_column_metadata` or some other interfaces. I do know the reason should be the expired in-memory-schema. But I find no docs about which interface will or will not update the schema and what should I do while I call a non-update-schema interface ? _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users