Skip to content

Commit ffb6bcb

Browse files
committed
Result::getColumnMeta is cached (ref #212)
1 parent 3d3ef9f commit ffb6bcb

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

src/Database/Drivers/PDO/Connection.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
class Connection implements Drivers\Connection
1717
{
18+
public string $resultClass = Result::class;
1819
public string $metaTypeKey = 'native_type';
1920

2021

@@ -34,7 +35,7 @@ public function query(string $sql, array $params = []): Result
3435
}
3536

3637
$statement->execute();
37-
return new Result($statement, $this);
38+
return new ($this->resultClass)($statement, $this);
3839
}
3940

4041

src/Database/Drivers/PDO/PgSQL/Driver.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
*/
1919
class Driver extends Drivers\PDO\Driver
2020
{
21+
public function connect(): Drivers\PDO\Connection
22+
{
23+
$connection = parent::connect();
24+
$connection->resultClass = Result::class;
25+
return $connection;
26+
}
27+
28+
2129
public function createEngine(Drivers\Connection $connection): PostgreSQLEngine
2230
{
2331
return new PostgreSQLEngine($connection);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
/**
4+
* This file is part of the Nette Framework (https://nette.org)
5+
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
6+
*/
7+
8+
declare(strict_types=1);
9+
10+
namespace Nette\Database\Drivers\PDO\PgSQL;
11+
12+
use Nette\Database\Drivers;
13+
14+
15+
class Result extends Drivers\PDO\Result
16+
{
17+
private static array $columnsCache = [];
18+
19+
20+
protected function collectColumnsInfo(): array
21+
{
22+
return self::$columnsCache[$this->result->queryString] ??= parent::collectColumnsInfo();
23+
}
24+
}

0 commit comments

Comments
 (0)