We use (for years now) an in-memory DB with both tables and virtual tables
in our app.

We recently started experimenting with multiple connections to the same
in-memory DB, thanks to URI filenames and shared cache, to perform queries
in parallel. This seems to work well with regular tables, and we get close
to a 3x speedup using 4-5 threads on some use cases (running many queries).

But now we're trying to configure virtual tables and multiple connections
to that unique in-memory DB, and we're having some trouble. We're not sure
yet it's not related to our code, which so far assumed a single connection
was in use accessing the vtables, but I'd like to get a reality check for
that use case from experts.

On the first connection, we declare the virtual module and its virtual
tables. This also adds the vtables to sqlite_master. But then on additional
connections to that same in-memory DB, we also need to declare a vmodule
and vtables, right? Yet it's already in sqlite_master, and it fails on the
"create virtual table" statement.

Is this use case supported by SQLite?
Has any one tried this successfully?
Any chance this might work in the near future?

Thanks for any input on this. --DD

PS: assume read-only use cases for now, and no concurrent writes during
these // queries.

Reply via email to