From 87a109d0e9e63e6ca4530706f2d822459e0cf4dc Mon Sep 17 00:00:00 2001 From: t-tomek Date: Wed, 21 Dec 2022 16:30:55 +0100 Subject: [PATCH] Update DB.php --- lib-php/DB.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib-php/DB.php b/lib-php/DB.php index fc9e12a9..63733cc7 100644 --- a/lib-php/DB.php +++ b/lib-php/DB.php @@ -38,23 +38,28 @@ class DB // https://secure.php.net/manual/en/ref.pdo-pgsql.connection.php try { - $conn = new \PDO($this->sDSN, null, null, $aConnOptions); + $this->connection = new \PDO($this->sDSN, null, null, $aConnOptions); } catch (\PDOException $e) { $sMsg = 'Failed to establish database connection:' . $e->getMessage(); throw new \Nominatim\DatabaseError($sMsg, 500, null, $e->getMessage()); } - - $conn->exec("SET DateStyle TO 'sql,european'"); - $conn->exec("SET client_encoding TO 'utf-8'"); + + $this->connection->exec("SET DateStyle TO 'sql,european'"); + $this->connection->exec("SET client_encoding TO 'utf-8'"); // Disable JIT and parallel workers. They interfere badly with search SQL. - $conn->exec("SET jit_above_cost TO -1"); - $conn->exec("SET max_parallel_workers_per_gather TO 0"); + if ($this->getPostgresVersion() < 11) { + $this->connection->exec("UPDATE pg_settings SET setting = -1 WHERE name = 'jit_above_cost'"); + $this->connection->exec("UPDATE pg_settings SET setting = 0 WHERE name = 'max_parallel_workers_per_gather'"); + } else { + $this->connection->exec("SET jit_above_cost TO -1"); + $this->connection->exec("SET max_parallel_workers_per_gather TO 0"); + } + $iMaxExecution = ini_get('max_execution_time'); if ($iMaxExecution > 0) { $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds } - - $this->connection = $conn; + return true; }