Download the PHP package k-kinzal/ztd-query-pdo-adapter without Composer
On this page you can find all versions of the php package k-kinzal/ztd-query-pdo-adapter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download k-kinzal/ztd-query-pdo-adapter
More information about k-kinzal/ztd-query-pdo-adapter
Files in k-kinzal/ztd-query-pdo-adapter
Package ztd-query-pdo-adapter
Short Description PDO adapter for ZTD Query
License MIT
Informations about the package ztd-query-pdo-adapter
ZTD Query PDO Adapter
ZTD Query is a Zero Table Dependency testing library for PHP: it runs the SQL of an application on a real database engine without reading or writing any physical table. Before a query reaches the database, every table it references is replaced by a CTE holding the rows the test has written, and every INSERT, UPDATE, and DELETE is turned into a SELECT whose result is kept in the session, so later queries see the change. Tests therefore need no migrations, seeding, or cleanup, and they can run in parallel against one empty database. This package is the PDO adapter: ZtdPdo extends PDO and applies ZTD to every query it runs, with the platform package of the connected database.
Requirements
- PHP 8.1+ with the PDO extension and the driver of your database
- MySQL 8.0–9.1, PostgreSQL 16–17, or SQLite 3.x
Installation
MySQL:
PostgreSQL:
SQLite:
Usage
ZtdPdo extends PDO, so it can be passed wherever the application expects a PDO connection. Tables are created and filled through the same connection; they exist only in the session.
ZtdPdo::fromPdo($pdo) wraps an existing connection instead of opening a new one, and disableZtd() and enableZtd() switch between the physical database and the session.
Configuration
Ignore skips the statement, Notice skips it and raises a PHP notice, and Exception throws an exception.
SQL Support
| Statement | MySQL | PostgreSQL | SQLite |
|---|---|---|---|
| SELECT, including joins, grouping, set operations, subqueries, CTEs, recursive CTEs, and window functions | Supported | Supported | Supported |
| INSERT with VALUES or SELECT | Supported | Supported | Supported |
| Upsert | ON DUPLICATE KEY UPDATE, INSERT IGNORE, REPLACE |
ON CONFLICT |
ON CONFLICT, INSERT OR ..., REPLACE |
| UPDATE and DELETE | Supported, including multi-table forms and ORDER BY ... LIMIT |
Supported, including UPDATE ... FROM and DELETE ... USING |
Supported, including UPDATE ... FROM |
RETURNING |
– | Supported | Supported |
| TRUNCATE | Supported | Supported | – |
| CREATE TABLE, DROP TABLE | Supported | Supported | Supported |
| ALTER TABLE | Supported | Unsupported | Supported |
| BEGIN, COMMIT, ROLLBACK | Applied to the session: ROLLBACK discards the writes made since BEGIN | Same | Same |
| Views, indexes, routines, triggers, SET, and server or user administration | Unsupported | Unsupported | Unsupported |
Unsupported statements are handled as configured by unsupportedBehavior. The full specification of each database is in ztd-query-mysql, ztd-query-postgres, and ztd-query-sqlite.
License
MIT License. See LICENSE for details.