Skip to content

Commit e3f9980

Browse files
authored
Bootstrap for PDO API implementation (#297)
Extracting smaller chunks from #291 so we can review and merge them independently. This PR renames the current `WP_SQLite_Driver` to `WP_PDO_MySQL_On_SQLite` and reintroduces the `WP_SQLite_Driver` as a simple proxy over the new renamed class. It's done in these two steps (first rename, then reintroduce) so that Git understands the rename and presents history (hopefully) accurately. The changes are better understood in a commit-by-commit view. #### `WP_PDO_MySQL_On_SQLite` vs `WP_SQLite_Driver` The "reintroduced" `WP_SQLite_Driver` is not meant to be permanent. It is a temporary proxy so we can gradually modify `WP_PDO_MySQL_On_SQLite` to support PDO APIs while not touching the driver API just yet. Once the basics of PDO API are in place, we can make all dependencies use the new class directly and then remove the `WP_SQLite_Driver`. That is, in the future, the `WP_SQLite_DB extends wpdb` will use directly the new `WP_PDO_MySQL_On_SQLite` class.
2 parents 5d09f4f + 6d98b54 commit e3f9980

12 files changed

+6422
-6204
lines changed

packages/wp-mysql-proxy/src/Adapter/class-sqlite-adapter.php

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,7 @@
99
use WP_SQLite_Driver;
1010
use WP_MySQL_Proxy\MySQL_Protocol;
1111

12-
define( 'SQLITE_DRIVER_PATH', __DIR__ . '/../../../..' );
13-
14-
require_once SQLITE_DRIVER_PATH . '/version.php';
15-
require_once SQLITE_DRIVER_PATH . '/wp-includes/parser/class-wp-parser-grammar.php';
16-
require_once SQLITE_DRIVER_PATH . '/wp-includes/parser/class-wp-parser.php';
17-
require_once SQLITE_DRIVER_PATH . '/wp-includes/parser/class-wp-parser-node.php';
18-
require_once SQLITE_DRIVER_PATH . '/wp-includes/parser/class-wp-parser-token.php';
19-
require_once SQLITE_DRIVER_PATH . '/wp-includes/mysql/class-wp-mysql-token.php';
20-
require_once SQLITE_DRIVER_PATH . '/wp-includes/mysql/class-wp-mysql-lexer.php';
21-
require_once SQLITE_DRIVER_PATH . '/wp-includes/mysql/class-wp-mysql-parser.php';
22-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite/class-wp-sqlite-pdo-user-defined-functions.php';
23-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
24-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
25-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
26-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
27-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';
28-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-information-schema-exception.php';
29-
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-information-schema-reconstructor.php';
12+
require_once __DIR__ . '/../../../../wp-pdo-mysql-on-sqlite.php';
3013

3114
class SQLite_Adapter implements Adapter {
3215
/** @var WP_SQLite_Driver */

tests/WP_SQLite_Driver_PDO_API_Tests.php renamed to tests/WP_PDO_MySQL_On_SQLite_PDO_API_Tests.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
use PHPUnit\Framework\TestCase;
44

5-
class WP_SQLite_Driver_PDO_API_Tests extends TestCase {
6-
/** @var WP_SQLite_Driver */
5+
class WP_PDO_MySQL_On_SQLite_PDO_API_Tests extends TestCase {
6+
/** @var WP_PDO_MySQL_On_SQLite */
77
private $driver;
88

99
public function setUp(): void {
1010
$connection = new WP_SQLite_Connection( array( 'path' => ':memory:' ) );
11-
$this->driver = new WP_SQLite_Driver( $connection, 'wp' );
11+
$this->driver = new WP_PDO_MySQL_On_SQLite( $connection, 'wp' );
1212
}
1313

1414
public function test_begin_transaction(): void {

tests/WP_SQLite_Information_Schema_Reconstructor_Tests.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function setUp(): void {
4949
);
5050

5151
$builder = new WP_SQLite_Information_Schema_Builder(
52-
WP_SQLite_Driver::RESERVED_PREFIX,
52+
WP_PDO_MySQL_On_SQLite::RESERVED_PREFIX,
5353
$this->engine->get_connection()
5454
);
5555

tests/bootstrap.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
11
<?php
22

33
require_once __DIR__ . '/wp-sqlite-schema.php';
4-
require_once __DIR__ . '/../version.php';
5-
require_once __DIR__ . '/../wp-includes/parser/class-wp-parser-grammar.php';
6-
require_once __DIR__ . '/../wp-includes/parser/class-wp-parser.php';
7-
require_once __DIR__ . '/../wp-includes/parser/class-wp-parser-node.php';
8-
require_once __DIR__ . '/../wp-includes/parser/class-wp-parser-token.php';
9-
require_once __DIR__ . '/../wp-includes/mysql/class-wp-mysql-token.php';
10-
require_once __DIR__ . '/../wp-includes/mysql/class-wp-mysql-lexer.php';
11-
require_once __DIR__ . '/../wp-includes/mysql/class-wp-mysql-parser.php';
4+
require_once __DIR__ . '/../wp-pdo-mysql-on-sqlite.php';
125
require_once __DIR__ . '/../wp-includes/sqlite/class-wp-sqlite-query-rewriter.php';
136
require_once __DIR__ . '/../wp-includes/sqlite/class-wp-sqlite-lexer.php';
147
require_once __DIR__ . '/../wp-includes/sqlite/class-wp-sqlite-token.php';
158
require_once __DIR__ . '/../wp-includes/sqlite/class-wp-sqlite-pdo-user-defined-functions.php';
169
require_once __DIR__ . '/../wp-includes/sqlite/class-wp-sqlite-translator.php';
17-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
18-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
19-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
20-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
21-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';
22-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-exception.php';
23-
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-reconstructor.php';
2410

2511
// Configure the test environment.
2612
error_reporting( E_ALL );

tests/tools/dump-sqlite-query.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
11
<?php
22

3-
require_once __DIR__ . '/../../wp-includes/parser/class-wp-parser.php';
4-
require_once __DIR__ . '/../../wp-includes/parser/class-wp-parser-grammar.php';
5-
require_once __DIR__ . '/../../wp-includes/parser/class-wp-parser-node.php';
6-
require_once __DIR__ . '/../../wp-includes/parser/class-wp-parser-token.php';
7-
require_once __DIR__ . '/../../wp-includes/mysql/class-wp-mysql-lexer.php';
8-
require_once __DIR__ . '/../../wp-includes/mysql/class-wp-mysql-token.php';
9-
require_once __DIR__ . '/../../wp-includes/mysql/class-wp-mysql-parser.php';
10-
require_once __DIR__ . '/../../wp-includes/sqlite/class-wp-sqlite-pdo-user-defined-functions.php';
11-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
12-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
13-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
14-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
15-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';
16-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-exception.php';
17-
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-reconstructor.php';
3+
require_once __DIR__ . '/../../wp-pdo-mysql-on-sqlite.php';
184

195
$driver = new WP_SQLite_Driver(
206
new WP_SQLite_Connection( array( 'path' => ':memory:' ) ),

0 commit comments

Comments
 (0)