Commit 9783413c authored by Tom Lane's avatar Tom Lane

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
parent 175e60a5
...@@ -1040,6 +1040,7 @@ check_for_incompatible_polymorphics(ClusterInfo *cluster) ...@@ -1040,6 +1040,7 @@ check_for_incompatible_polymorphics(ClusterInfo *cluster)
"JOIN pg_proc AS transfn ON transfn.oid=a.aggtransfn " "JOIN pg_proc AS transfn ON transfn.oid=a.aggtransfn "
"WHERE p.oid >= 16384 " "WHERE p.oid >= 16384 "
"AND a.aggtransfn = ANY(ARRAY[%s]::regprocedure[]) " "AND a.aggtransfn = ANY(ARRAY[%s]::regprocedure[]) "
"AND a.aggtranstype = ANY(ARRAY['anyarray', 'anyelement']::regtype[]) "
/* Aggregate final functions */ /* Aggregate final functions */
"UNION ALL " "UNION ALL "
...@@ -1049,13 +1050,15 @@ check_for_incompatible_polymorphics(ClusterInfo *cluster) ...@@ -1049,13 +1050,15 @@ check_for_incompatible_polymorphics(ClusterInfo *cluster)
"JOIN pg_proc AS finalfn ON finalfn.oid=a.aggfinalfn " "JOIN pg_proc AS finalfn ON finalfn.oid=a.aggfinalfn "
"WHERE p.oid >= 16384 " "WHERE p.oid >= 16384 "
"AND a.aggfinalfn = ANY(ARRAY[%s]::regprocedure[]) " "AND a.aggfinalfn = ANY(ARRAY[%s]::regprocedure[]) "
"AND a.aggtranstype = ANY(ARRAY['anyarray', 'anyelement']::regtype[]) "
/* Operators */ /* Operators */
"UNION ALL " "UNION ALL "
"SELECT 'operator' AS objkind, op.oid::regoperator::text AS objname " "SELECT 'operator' AS objkind, op.oid::regoperator::text AS objname "
"FROM pg_operator AS op " "FROM pg_operator AS op "
"WHERE op.oid >= 16384 " "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, old_polymorphics.data,
old_polymorphics.data); old_polymorphics.data);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment