This is an automated email from the ASF dual-hosted git repository.

reshke pushed a commit to branch address_1566_p2
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 6a7414ab69c9ab18570eb63265939e656f627f0c
Author: Tom Lane <[email protected]>
AuthorDate: Tue Jul 5 18:23:19 2022 -0400

    Tighten pg_upgrade's new check for non-upgradable anyarray usages.
    
    We only need to reject cases when the aggregate or operator is
    itself declared with a polymorphic type.  Per buildfarm.
    
    Discussion: https://postgr.es/m/3383880.QJadu78ljV@vejsadalnx
---
 src/bin/pg_upgrade/check.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c
index 47980d3f0cc..973a6d4639d 100644
--- a/src/bin/pg_upgrade/check.c
+++ b/src/bin/pg_upgrade/check.c
@@ -1248,6 +1248,7 @@ check_for_incompatible_polymorphics(ClusterInfo *cluster)
                                                                "JOIN pg_proc 
AS transfn ON transfn.oid=a.aggtransfn "
                                                                "WHERE p.oid >= 
16384 "
                                                                "AND 
a.aggtransfn = ANY(ARRAY[%s]::regprocedure[]) "
+                                                               "AND 
a.aggtranstype = ANY(ARRAY['anyarray', 'anyelement']::regtype[]) "
 
                /* Aggregate final functions */
                                                                "UNION ALL "
@@ -1257,13 +1258,15 @@ check_for_incompatible_polymorphics(ClusterInfo 
*cluster)
                                                                "JOIN pg_proc 
AS finalfn ON finalfn.oid=a.aggfinalfn "
                                                                "WHERE p.oid >= 
16384 "
                                                                "AND 
a.aggfinalfn = ANY(ARRAY[%s]::regprocedure[]) "
+                                                               "AND 
a.aggtranstype = ANY(ARRAY['anyarray', 'anyelement']::regtype[]) "
 
                /* Operators */
                                                                "UNION ALL "
                                                                "SELECT 
'operator' AS objkind, op.oid::regoperator::text AS objname "
                                                                "FROM 
pg_operator AS op "
                                                                "WHERE op.oid 
>= 16384 "
-                                                               "AND oprcode = 
ANY(ARRAY[%s]::regprocedure[]);",
+                                                               "AND oprcode = 
ANY(ARRAY[%s]::regprocedure[]) "
+                                                               "AND oprleft = 
ANY(ARRAY['anyarray', 'anyelement']::regtype[]);",
                                                                
old_polymorphics.data,
                                                                
old_polymorphics.data,
                                                                
old_polymorphics.data);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to