Re: How to use int2vector

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: How to use int2vector
Дата
Msg-id 24238.1075396311@sss.pgh.pa.us
обсуждение исходный текст
Ответ на How to use int2vector  (Rich Cullingford <rculling@sysd.com>)
Список pgsql-admin
Rich Cullingford <rculling@sysd.com> writes:
> In trying to write a utility to drop/restore table indexes (as an aid to
> a fast reload of the associated tables), I ran into the definition of
> the field pg_index.indkey as an int2vector.

> How can I deal with this type in plpgsql?

You should be able to index into it (indkey[0], etc), but I cannot think
of any good reason to be looking at the details of the pg_index row for
your purposes.  It is certainly not reasonable to think of writing
plpgsql code to reconstruct 7.4 expressional index definitions from
what's in pg_index :-(.  I would suggest using the pg_get_indexdef
function instead.  Perhaps something like

regression=# select pg_get_indexdef(indexrelid) from pg_index where indrelid = 'tenk1'::regclass;
                      pg_get_indexdef
-----------------------------------------------------------
 CREATE INDEX tenk1_hundred ON tenk1 USING btree (hundred)
 CREATE INDEX tenk1_unique2 ON tenk1 USING btree (unique2)
 CREATE INDEX tenk1_unique1 ON tenk1 USING btree (unique1)
(3 rows)

regression=#

pg_get_indexdef() exists at least as far back as 7.0, and probably
further (pg_dump has relied on it for a long time).

            regards, tom lane

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

Предыдущее
От: "Chris White (cjwhite)"
Дата:
Сообщение: Re: Error seen when vacuuming pg_largeobject table
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Error seen when vacuuming pg_largeobject table