]> granicus.if.org Git - postgresql/commitdiff
Fix ac218aa4f6 to work on versions before 9.5.
authorAndres Freund <andres@anarazel.de>
Tue, 27 Nov 2018 07:26:05 +0000 (23:26 -0800)
committerAndres Freund <andres@anarazel.de>
Tue, 27 Nov 2018 07:26:24 +0000 (23:26 -0800)
Unfortunately ac218aa4f6 missed the fact that a reference to
'pg_catalog.regnamespace'::regclass wouldn't work before that type is
known. Fix that, by replacing the regtype usage with a join to
pg_type.

Reported-By: Tom Lane
Author: Andres Freund
Discussion: https://postgr.es/m/8863.1543297423@sss.pgh.pa.us
Backpatch: 9.5-, like ac218aa4f6

src/bin/pg_upgrade/check.c

index 4e75d1d02cd4be45a1fcc3463961bd8a7ad09881..077fcf6c4e2db91bf3b95b1880e85489416182d3 100644 (file)
@@ -905,18 +905,23 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
                                                                "SELECT n.nspname, c.relname, a.attname "
                                                                "FROM   pg_catalog.pg_class c, "
                                                                "               pg_catalog.pg_namespace n, "
-                                                               "               pg_catalog.pg_attribute a "
+                                                               "               pg_catalog.pg_attribute a, "
+                                                               "               pg_catalog.pg_type t "
                                                                "WHERE  c.oid = a.attrelid AND "
                                                                "               NOT a.attisdropped AND "
-                                                               "               a.atttypid IN ( "
+                                                               "       a.atttypid = t.oid AND "
+                                                               "       t.typnamespace = "
+                                                               "           (SELECT oid FROM pg_namespace "
+                                                               "            WHERE nspname = 'pg_catalog') AND"
+                                                               "               t.typname IN ( "
                /* regclass.oid is preserved, so 'regclass' is OK */
-                                                               "                       'pg_catalog.regconfig'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regdictionary'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regnamespace'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regoper'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regoperator'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regproc'::pg_catalog.regtype, "
-                                                               "                       'pg_catalog.regprocedure'::pg_catalog.regtype "
+                                                               "           'regconfig', "
+                                                               "           'regdictionary', "
+                                                               "           'regnamespace', "
+                                                               "           'regoper', "
+                                                               "           'regoperator', "
+                                                               "           'regproc', "
+                                                               "           'regprocedure' "
                /* regrole.oid is preserved, so 'regrole' is OK */
                /* regtype.oid is preserved, so 'regtype' is OK */
                                                                "                       ) AND "