Date: Sat, 14 Nov 2020 12:34:55 +0000 (UTC) From: Michael Reifenberger <mr@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r555110 - in head/databases/pear-Horde_Db: . files Message-ID: <202011141234.0AECYtFb098506@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mr Date: Sat Nov 14 12:34:55 2020 New Revision: 555110 URL: https://svnweb.freebsd.org/changeset/ports/555110 Log: Add upstream patch to Postgresql/Schema.php fixing the access for PostgreSQL >= 12 (extracted from the github repo of Horde-Db) Maintainer timeout: 2 weeks Modified: head/databases/pear-Horde_Db/Makefile head/databases/pear-Horde_Db/files/patch-lib_Horde_Db_Adapter_Postgresql_Schema.php Modified: head/databases/pear-Horde_Db/Makefile ============================================================================== --- head/databases/pear-Horde_Db/Makefile Sat Nov 14 12:04:57 2020 (r555109) +++ head/databases/pear-Horde_Db/Makefile Sat Nov 14 12:34:55 2020 (r555110) @@ -2,7 +2,7 @@ PORTNAME= Horde_Db PORTVERSION= 2.4.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= databases www pear MAINTAINER= horde@FreeBSD.org Modified: head/databases/pear-Horde_Db/files/patch-lib_Horde_Db_Adapter_Postgresql_Schema.php ============================================================================== --- head/databases/pear-Horde_Db/files/patch-lib_Horde_Db_Adapter_Postgresql_Schema.php Sat Nov 14 12:04:57 2020 (r555109) +++ head/databases/pear-Horde_Db/files/patch-lib_Horde_Db_Adapter_Postgresql_Schema.php Sat Nov 14 12:34:55 2020 (r555110) @@ -1,5 +1,5 @@ ---- lib/Horde/Db/Adapter/Postgresql/Schema.php.orig 2017-02-27 10:00:17 UTC -+++ lib/Horde/Db/Adapter/Postgresql/Schema.php +--- lib/Horde/Db/Adapter/Postgresql/Schema.php.orig 2017-02-27 11:00:17.000000000 +0100 ++++ lib/Horde/Db/Adapter/Postgresql/Schema.php 2020-10-28 00:40:32.469743000 +0100 @@ -3,12 +3,15 @@ * Copyright 2007 Maintainable Software, LLC * Copyright 2008-2017 Horde LLC (http://www.horde.org/) @@ -29,7 +29,27 @@ * @package Db * @subpackage Adapter */ -@@ -1057,13 +1062,32 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde +@@ -383,12 +388,13 @@ class Horde_Db_Adapter_Postgresql_Schema + { + /* @todo See if we can get this from information_schema instead */ + return $this->selectAll(' +- SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull +- FROM pg_attribute a LEFT JOIN pg_attrdef d +- ON a.attrelid = d.adrelid AND a.attnum = d.adnum +- WHERE a.attrelid = ' . $this->quote($tableName) . '::regclass +- AND a.attnum > 0 AND NOT a.attisdropped +- ORDER BY a.attnum', $name); ++ SELECT a.attname, format_type(a.atttypid, a.atttypmod), ++ pg_get_expr(d.adbin, d.adrelid) AS adsrc, a.attnotnull ++ FROM pg_attribute a ++ LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum ++ WHERE a.attrelid = ' . $this->quote($tableName) . '::regclass ++ AND a.attnum > 0 AND NOT a.attisdropped ++ ORDER BY a.attnum;', $name); + } + + /** +@@ -1057,13 +1063,32 @@ class Horde_Db_Adapter_Postgresql_Schema $quotedSequence = $this->quoteSequenceName($sequence); $quotedTable = $this->quoteTableName($table); $quotedPk = $this->quoteColumnName($pk); @@ -69,7 +89,46 @@ $this->selectValue($sql, 'Reset sequence'); } else { if ($this->_logger) { -@@ -1138,9 +1162,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde +@@ -1103,28 +1128,20 @@ class Horde_Db_Adapter_Postgresql_Schema + $result = $this->selectOne($sql, 'PK and serial sequence'); + + if (!$result) { +- // If that fails, try parsing the primary key's default value. +- // Support the 7.x and 8.0 nextval('foo'::text) as well as +- // the 8.1+ nextval('foo'::regclass). + $sql = " +- SELECT attr.attname, +- CASE +- WHEN split_part(def.adsrc, '''', 2) ~ '.' THEN +- substr(split_part(def.adsrc, '''', 2), +- strpos(split_part(def.adsrc, '''', 2), '.')+1) +- ELSE split_part(def.adsrc, '''', 2) +- END AS relname +- FROM pg_class t +- JOIN pg_attribute attr ON (t.oid = attrelid) +- JOIN pg_attrdef def ON (adrelid = attrelid AND adnum = attnum) +- JOIN pg_constraint cons ON (conrelid = adrelid AND adnum = conkey[1]) +- WHERE t.oid = '$table'::regclass +- AND cons.contype = 'p' +- AND def.adsrc ~* 'nextval'"; +- ++ SELECT c.column_name, c.ordinal_position, ++ pg_get_serial_sequence(t.table_name, c.column_name) as relname ++ FROM information_schema.key_column_usage AS c ++ LEFT JOIN information_schema.table_constraints AS t ++ ON t.constraint_name = c.constraint_name ++ WHERE t.table_name = '$table' AND t.constraint_type = 'PRIMARY KEY';"; + $result = $this->selectOne($sql, 'PK and custom sequence'); + } + ++ if (!$result) { ++ return array(null, null); ++ } ++ + // [primary_key, sequence] + return array($result['attname'], $result['relname']); + } +@@ -1138,9 +1155,7 @@ class Horde_Db_Adapter_Postgresql_Schema { if (!$this->_version) { try {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011141234.0AECYtFb098506>