<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$conn->exec("SET DateStyle TO 'sql,european'");
$conn->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'");
$iMaxExecution = ini_get('max_execution_time');
- if ($iMaxExecution > 0) $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds
+ if ($iMaxExecution > 0) {
+ $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds
+ }
$this->connection = $conn;
return true;
try {
$stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
$row = $stmt->fetch(\PDO::FETCH_NUM);
- if ($row === false) return false;
+ if ($row === false) {
+ return false;
+ }
} catch (\PDOException $e) {
throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
}
if (preg_match('/^pgsql:(.+)$/', $sDSN, $aMatches)) {
foreach (explode(';', $aMatches[1]) as $sKeyVal) {
list($sKey, $sVal) = explode('=', $sKeyVal, 2);
- if ($sKey == 'host') $sKey = 'hostspec';
- if ($sKey == 'dbname') $sKey = 'database';
- if ($sKey == 'user') $sKey = 'username';
+ if ($sKey == 'host') {
+ $sKey = 'hostspec';
+ } elseif ($sKey == 'dbname') {
+ $sKey = 'database';
+ } elseif ($sKey == 'user') {
+ $sKey = 'username';
+ }
$aInfo[$sKey] = $sVal;
}
}