From 28ea66498d138615e93296acdf8c12b4ab4b86af Mon Sep 17 00:00:00 2001 From: Damien Regad Date: Sat, 25 Jan 2025 00:13:49 +0100 Subject: pgsql: fix serverInfo() version number In ADOdb versions < 5.21.0-beta.1, serverInfo()['version'] returned just the version number (e.g. `15.10`), which was extracted from the version string using ADOConnection::_findVers(). Commit f2b88e063d61b12a1df9090b8d0c68831ed0f447 removed the _findVers() call, so serverInfo() could potentially return additional information depending on the actual value returned by pg_version() (e.g. `15.10 (Debian 15.10-0+deb12u1)`. This could cause subsequent version comparisons to fail, e.g. in metaTables(). Fixes #1059 --- drivers/adodb-postgres64.inc.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/adodb-postgres64.inc.php b/drivers/adodb-postgres64.inc.php index 9bf9e713..b1d161d7 100644 --- a/drivers/adodb-postgres64.inc.php +++ b/drivers/adodb-postgres64.inc.php @@ -113,13 +113,12 @@ class ADODB_postgres64 extends ADOConnection{ } $version = pg_version($this->_connectionID); + // If PHP has been compiled with PostgreSQL 7.3 or lower, then + // server_version is not set so we use pg_parameter_status() instead. + $version_server = $version['server'] ?? pg_parameter_status($this->_connectionID, 'server_version'); + $this->version = array( - // If PHP has been compiled with PostgreSQL 7.3 or lower, then - // server version is not set so we use pg_parameter_status() - // which includes logic to obtain values server_version - 'version' => isset($version['server']) - ? $version['server'] - : pg_parameter_status($this->_connectionID, 'server_version'), + 'version' => $this->_findvers($version_server), 'client' => $version['client'], 'description' => null, ); -- cgit v1.3