libsql-client-ts icon indicating copy to clipboard operation
libsql-client-ts copied to clipboard

Usage of transactions in `:memory:` database was broken with #105

Open epatey opened this issue 8 months ago • 3 comments

#105 regressed in memory databases when transactions are used. Once a transaction is created, the entire in memory database will be effectively discarded for subsequent db operations that the client makes.

From the regressing PR.

  1. A single connection is created lazily whenever user executes a statement
  2. When a transaction starts, the Transaction object takes ownership of the current transaction.
  3. Subsequent queries will create a new connection.

In particular, this line of code from within transaction, null's out this.#db.

Subsequent calls to #getDb will create a new database here. Because it's purely in memory, this essentially creates a new empty database.

I wonder if the fix would be as simple as skipping the dropping/recreating of the Database if path === ':memory'.

epatey avatar Jun 24 '24 14:06 epatey