From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: pg_upgrade and relkind filtering |
Date: | 2011-12-07 00:22:17 |
Message-ID: | CA+Tgmob7nxo9D-sX=E5E1Od6+1qNwxKVASQ4vRJt765n2a7wqg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Dec 5, 2011 at 5:06 PM, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> Pg_upgrade has the following check to make sure the cluster is safe for
> upgrading:
>
> res = executeQueryOrDie(conn,
> "SELECT n.nspname, c.relname, a.attname
> "
> "FROM pg_catalog.pg_class c, "
> " pg_catalog.pg_namespace n, "
> " pg_catalog.pg_attribute a "
> "WHERE c.oid = a.attrelid AND "
> " NOT a.attisdropped AND "
> " a.atttypid IN ( "
> " 'pg_catalog.regproc'::pg_catalog.regtype, "
> " 'pg_catalog.regprocedure'::pg_catalog.regtype, "
> " 'pg_catalog.regoper'::pg_catalog.regtype, "
> " 'pg_catalog.regoperator'::pg_catalog.regtype, "
> /* regclass.oid is preserved, so 'regclass' is OK */
> /* regtype.oid is preserved, so 'regtype' is OK */
> " 'pg_catalog.regconfig'::pg_catalog.regtype, "
> " 'pg_catalog.regdictionary'::pg_catalog.regtype) AND
> "
> " c.relnamespace = n.oid AND "
> " n.nspname != 'pg_catalog' AND "
> " n.nspname != 'information_schema'");
>
> Based on a report from EnterpriseDB, I noticed that we check all
> pg_class entries, while there are cases where this is unnecessary
> because there is no data behind the entry, e.g. views. Here are the
> relkinds supported:
>
> #define RELKIND_RELATION 'r' /* ordinary table */
> #define RELKIND_INDEX 'i' /* secondary index */
> #define RELKIND_SEQUENCE 'S' /* sequence object */
> #define RELKIND_TOASTVALUE 't' /* for out-of-line values */
> #define RELKIND_VIEW 'v' /* view */
> #define RELKIND_COMPOSITE_TYPE 'c' /* composite type */
> #define RELKIND_FOREIGN_TABLE 'f' /* foreign table */
> #define RELKIND_UNCATALOGED 'u' /* not yet cataloged */
>
> What types, other than views, can we skip in this query?
It's not obvious to me that anything other than a table or index would matter.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2011-12-07 00:35:51 | Re: pg_upgrade and relkind filtering |
Previous Message | Robert Haas | 2011-12-07 00:18:24 | Re: Inlining comparators as a performance optimisation |