From a52c31b8190518ac5776c228c314c946dc51eb62 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Mon, 26 Nov 2018 23:26:05 -0800 Subject: [PATCH] Fix ac218aa4f6 to work on versions before 9.5. 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 | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c index 4e75d1d02c..077fcf6c4e 100644 --- a/src/bin/pg_upgrade/check.c +++ b/src/bin/pg_upgrade/check.c @@ -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 " -- 2.40.0