Req #76868 [Opn->Fbk]: PDO SQLite support for SQLite's Shared Cache Mode
Edit report at https://bugs.php.net/bug.php?id=76868&edit=1
ID: 76868
Updated by: cmb@php.net
Reported by: pablo dot godinez at zayon dot eu
Summary: PDO SQLite support for SQLite's Shared Cache Mode
-Status: Open
+Status: Feedback
Type: Feature/Change Request
Package: PDO SQLite
PHP Version: Irrelevant
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
> PDO should support this URI : sqlite::memory:?cache=shared.
As of PHP 8.1.0, the following is supported having the same effect:
sqlite:file::memory:?cache=shared
However, that doesn't work, if open_basedir is set. Would that be
a problem for you?
Previous Comments:
------------------------------------------------------------------------
[2021-10-07 11:37:39] cmb@php.net
Something like what has been done for SQLite3[1], would need to be
done for PDO_SQLite. Maybe someone wants to submit a PR[2]?
[1] <https://github.com/php/php-src/commit/cc125f277b50e0f90fc8033fe7f47d2446389a15>
[2] <https://github.com/php/php-src/pulls>
------------------------------------------------------------------------
[2019-08-25 01:53:35] jsuprock at tenable dot com
This is actually preventing me from setting up mock, in-memory databases to inject for fully
unit-testing much of our project's code.
Do you know when this will be available? I would greatly appreciate it.
Thanks!
------------------------------------------------------------------------
[2019-02-28 15:39:07] mikeryan at virtuoso-performance dot com
I would like to add that the lack of the shared cache isn't just a performance issue - when
testing library code which is making its own PDO connection, you can't have the test code
prepopulate an in-memory database table with test data.
------------------------------------------------------------------------
[2018-09-12 08:20:49] pablo dot godinez at zayon dot eu
Description:
------------
From SQLite's documentation : (https://www.sqlite.org/sharedcache.html)
> Beginning with SQLite version 3.7.13 (2012-06-11), shared cache can be used on in-memory
> databases, provided that the database is created using a URI filename
> Enabling shared-cache for an in-memory database allows two or more database connections in the
> same process to have access to the same in-memory database
It is possible in php to create such connection to an SQLite database using sqlite3_open function
but not using PDO.
PDO should support this URI : sqlite::memory:?cache=shared.
This feature would be useful for tests performances purposes. To use the memory mode we currently
have to manually have each process attach to the original opened connection in order to have access
to the same database.
Relevant links :
https://stackoverflow.com/questions/16487679/shared-cache-on-pdo-sqlite
https://stackoverflow.com/questions/9150319/enable-shared-pager-cache-in-sqlite-using-php-pdo
https://github.com/doctrine/dbal/issues/2901
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76868&edit=1
Thread (8 messages)