]> git.openstreetmap.org Git - nominatim.git/commitdiff
Update DB.php
authort-tomek <t-tomek@users.noreply.github.com>
Wed, 21 Dec 2022 15:30:55 +0000 (16:30 +0100)
committerGitHub <noreply@github.com>
Wed, 21 Dec 2022 15:30:55 +0000 (16:30 +0100)
lib-php/DB.php

index fc9e12a9efa332ad54f90912ca60b9b5f4a877d9..63733cc793e815c43386d0c7efdf2112a74c7c1c 100644 (file)
@@ -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;
     }