X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/042df4198a11da8456a3c192d3fe3f4726041612..b01a836d1ecce5c7cc1aceedf19535eeda9058af:/lib-php/DB.php diff --git a/lib-php/DB.php b/lib-php/DB.php index 8e307b19..553d9452 100644 --- a/lib-php/DB.php +++ b/lib-php/DB.php @@ -1,4 +1,12 @@ 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("UPDATE pg_settings SET setting = -1 WHERE name = 'jit_above_cost'"); - $conn->exec("UPDATE pg_settings SET setting = 0 WHERE name = 'max_parallel_workers_per_gather'"); + $this->connection->exec('SET max_parallel_workers_per_gather TO 0'); + if ($this->getPostgresVersion() >= 11) { + $this->connection->exec('SET jit_above_cost TO -1'); + } + $iMaxExecution = ini_get('max_execution_time'); if ($iMaxExecution > 0) { - $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds + $this->connection->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds } - $this->connection = $conn; return true; }