Skip to content

Commit c3276c8

Browse files
committed
Add basic PDOStatement implementation
1 parent 59d175d commit c3276c8

5 files changed

Lines changed: 74 additions & 0 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
2424
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
2525
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-mysql-on-sqlite.php';
26+
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-pdo-statement.php';
2627
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
2728
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
2829
require_once SQLITE_DRIVER_PATH . '/wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';

tests/bootstrap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
1818
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
1919
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-mysql-on-sqlite.php';
20+
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-pdo-statement.php';
2021
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
2122
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
2223
require_once __DIR__ . '/../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';

tests/tools/dump-sqlite-query.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
1212
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
1313
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-mysql-on-sqlite.php';
14+
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-pdo-statement.php';
1415
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
1516
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
1617
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
/*
4+
* The SQLite driver uses PDO. Enable PDO function calls:
5+
* phpcs:disable WordPress.DB.RestrictedClasses.mysql__PDO
6+
*/
7+
8+
class WP_PDO_Statement extends PDOStatement {
9+
/** @var PDOStatement */
10+
private $stmt;
11+
12+
public function __construct(
13+
?PDOStatement $stmt
14+
) {
15+
$this->stmt = $stmt;
16+
}
17+
18+
public function execute( ?array $params = null ): bool {
19+
// TODO: Implement.
20+
return true;
21+
}
22+
23+
public function columnCount(): int {
24+
return $this->stmt->columnCount();
25+
}
26+
27+
public function rowCount(): int {
28+
return $this->stmt->rowCount();
29+
}
30+
31+
#[ReturnTypeWillChange]
32+
public function fetch( int $mode = PDO::FETCH_DEFAULT, int $cursorOrientation = PDO::FETCH_ORI_NEXT, int $cursorOffset = 0 ) {
33+
}
34+
35+
public function fetchAll( int $mode = PDO::FETCH_DEFAULT, ...$args ): array {
36+
}
37+
38+
#[ReturnTypeWillChange]
39+
public function fetchColumn( int $column = 0 ) {
40+
return $this->stmt->fetchColumn( $column );
41+
}
42+
43+
#[ReturnTypeWillChange]
44+
public function fetchObject( ?string $class = 'stdClass', array $constructorArgs = array() ) {
45+
}
46+
47+
public function getColumnMeta( int $column ): array {
48+
return array();
49+
}
50+
51+
public function errorCode(): ?string {
52+
return '00000';
53+
}
54+
55+
public function errorInfo(): array {
56+
return array( '00000', '00000', '00000' );
57+
}
58+
59+
// TODO:
60+
// public function bindColumn()
61+
// public function bindParam()
62+
// public function bindValue()
63+
// public function closeCursor()
64+
// public function debugDumpParams()
65+
// public function setFetchMode()
66+
// public function setAttribute()
67+
// public function getAttribute()
68+
// public function getIterator()
69+
// public function nextRowset()
70+
}

wp-includes/sqlite/class-wp-sqlite-db.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ public function db_connect( $allow_bail = true ) {
325325
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-connection.php';
326326
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-configurator.php';
327327
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-mysql-on-sqlite.php';
328+
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-pdo-statement.php';
328329
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver.php';
329330
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-driver-exception.php';
330331
require_once __DIR__ . '/../../wp-includes/sqlite-ast/class-wp-sqlite-information-schema-builder.php';

0 commit comments

Comments
 (0)