pg_upgrade and relkind filtering

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема pg_upgrade and relkind filtering
Дата
Msg-id 201112052206.pB5M6bC20453@momjian.us
обсуждение исходный текст
Ответы Re: pg_upgrade and relkind filtering  (Robert Haas <robertmhaas@gmail.com>)
Re: pg_upgrade and relkind filtering  (Noah Misch <noah@leadboat.com>)
Список pgsql-hackers
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_namespacen, "                               "       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'       /*
secondaryindex */#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?

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + It's impossible for everything to be true. +


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: pg_upgrade and regclass
Следующее
От: Marti Raudsepp
Дата:
Сообщение: Re: [PATCH] Caching for stable expressions with constant arguments v3