SQLite Forum

Possible bug with in-memory database and shared cache
Login
Hi,

I have encountered a strange behavior when using in-memory databases with shared cache. If I open the database like this from multiple threads, everything works:
```
sqlite3_open_v2("file:foobar", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_URI | SQLITE_OPEN_MEMORY | SQLITE_OPEN_SHAREDCACHE, NULL);
```

If I remove either the `SQLITE_OPEN_URI` flag OR the `file:` prefix, the shared cache does not work anymore. The reason for this seems to be that:

1. The flag is removed in `sqlite3ParseUri` for both cases (see <https://github.com/sqlite/sqlite/blob/d63c76fb31a0e262fb12a93b171e95a4e30c1a2e/src/main.c#L3020>).
2. The shared cache is only enabled if `SQLITE_OPEN_URI` is set in `sqlite3BtreeOpen` (see <https://github.com/sqlite/sqlite/blob/d63c76fb31a0e262fb12a93b171e95a4e30c1a2e/src/btree.c#L2393>).

Best regards,
Michael Kuhn