I just spent a couple hours on a really strange problem that went away. • Ann sqlite database had 13 rows in one of its tables. • In App 1, which uses the "C" interface, add a new row. • In App 2, which also uses the "C" interface, open that database with sqlite3_open(), then run query "SELECT * from 'tableName'", using sqlite3_prepare(), sqlite3_step() iteratively, and sqlite3_finalize(), then sqlite3_wal_checkpoint_v2(passing SQLITE_CHECKPOINT_PASSIVE) and sqlite3_close(). This is working code which I have not touched in five years, except to update to the new checkpoint function.
Expected Result: 14 rows Actual Result: 13 rows. The new row is absent. • Open the database using the sqlite3 command line tool built into Mac OS X 10.8.4, and do the same query. Result: 14 rows. • Repeat the open,query,checkpoint,close in App 2. Result: still 13 rows. • Peek inside the database main file, -shm file and -wal file with a text editor. I see that the new row is not in the main file but is still in the -wal file. I understand that -shm and -wal files are an implementation detail of sqlite3, and that I should not worry about where the records are. • Quit and relaunch App 2. • Repeat the open,query,checkpoint,close in App 2. Result: now it gets all 14 rows! I've since been retesting these apps for the last couple hours and all has been fine since. App 1 is built with sqlite 3.7.15. App 2 is built with sqlite 3.7.14. The Mac's command line tool is sqlite 3.7.12. So, there's no explanation in the version numbers. This is very strange, but I did get down to the query level with the debugger. Just prior to this sequence of events, I had deleted a half dozen records in App 1, which kept showing up in queries in App 2. Any possible explanations would be appreciated. Jerry Krinock _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users