From 86910b24bbd4e9d46098f2d1b2a610ab4391af0b Mon Sep 17 00:00:00 2001 From: David Grudl Date: Thu, 15 Aug 2024 05:45:20 +0200 Subject: [PATCH] Result::getColumnMeta is cached (ref #212) --- src/Database/Drivers/PDO/Connection.php | 3 ++- src/Database/Drivers/PDO/PgSQL/Driver.php | 4 +++- src/Database/Drivers/PDO/PgSQL/Result.php | 24 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/Database/Drivers/PDO/PgSQL/Result.php diff --git a/src/Database/Drivers/PDO/Connection.php b/src/Database/Drivers/PDO/Connection.php index ef33627bb..f866bf53a 100644 --- a/src/Database/Drivers/PDO/Connection.php +++ b/src/Database/Drivers/PDO/Connection.php @@ -16,6 +16,7 @@ class Connection implements Drivers\Connection { public readonly PDO $pdo; + public string $resultClass = Result::class; public string $metaTypeKey = 'native_type'; @@ -40,7 +41,7 @@ public function query(string $sql, array $params = []): Result } $statement->execute(); - return new Result($statement, $this); + return new ($this->resultClass)($statement, $this);; } diff --git a/src/Database/Drivers/PDO/PgSQL/Driver.php b/src/Database/Drivers/PDO/PgSQL/Driver.php index 727e79d17..e294cb517 100644 --- a/src/Database/Drivers/PDO/PgSQL/Driver.php +++ b/src/Database/Drivers/PDO/PgSQL/Driver.php @@ -29,7 +29,9 @@ public function __construct( public function connect(): Drivers\Connection { - return new Drivers\PDO\Connection(...$this->params); + $connection = new Drivers\PDO\Connection(...$this->params); + $connection->resultClass = Result::class; + return $connection; } diff --git a/src/Database/Drivers/PDO/PgSQL/Result.php b/src/Database/Drivers/PDO/PgSQL/Result.php new file mode 100644 index 000000000..482161829 --- /dev/null +++ b/src/Database/Drivers/PDO/PgSQL/Result.php @@ -0,0 +1,24 @@ +result->queryString] ??= parent::collectColumnsInfo(); + } +}