Skip site navigation (1)Skip section navigation (2)
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>