Discussion:
[ADMIN] How to find and/or REINDEX only GiST indexes in the database?
(too old to reply)
Gnanakumar
2011-10-12 12:46:45 UTC
Permalink
Hi,

We're planning to upgrade our Production server from PostgreSQL v8.2.3 to
the latest version in 8.2 series, that is v8.2.22.

In 8.2.11 Release Notes here
http://www.postgresql.org/docs/current/interactive/release-8-2-11.html, it's
been mentioned that:
"Also, if you were running a previous 8.2.X release, it is recommended to
REINDEX all GiST indexes after the upgrade."

My question is, how do I find out or REINDEX *only* GiST indexes in the
database? Is there a single syntax/command that does this?

Regards,
Gnanam
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Achilleas Mantzios
2011-10-12 14:07:05 UTC
Permalink
Post by Gnanakumar
Hi,
We're planning to upgrade our Production server from PostgreSQL v8.2.3 to
the latest version in 8.2 series, that is v8.2.22.
In 8.2.11 Release Notes here
http://www.postgresql.org/docs/current/interactive/release-8-2-11.html, it's
"Also, if you were running a previous 8.2.X release, it is recommended to
REINDEX all GiST indexes after the upgrade."
My question is, how do I find out or REINDEX *only* GiST indexes in the
database? Is there a single syntax/command that does this?
I guess not, one way is to take an ascii schema-only dump and parse it,
looking for GIST indexes.

Anotherway is to look in those tables:
SELECT oid,* from pg_opclass ; -- to find the GIST class
SELECT c.relname,indclass from pg_catalog.pg_index i,pg_catalog.pg_class c where indexrelid=c.oid;
^^ to find those indexes which have this gist class oid in the indclass field.

Note tho, that indclass is oidvector, and i dont know how you could iterate on those (by SQL),
without writing a C (or other) program.
Post by Gnanakumar
Regards,
Gnanam
--
Achilleas Mantzios
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Tom Lane
2011-10-12 14:21:12 UTC
Permalink
Post by Gnanakumar
My question is, how do I find out or REINDEX *only* GiST indexes in the
database? Is there a single syntax/command that does this?
You could do something like

select relname from pg_class where relam = (select oid from pg_am where amname = 'gist');


regards, tom lane
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Kevin Grittner
2011-10-12 14:37:30 UTC
Permalink
Post by Gnanakumar
how do I find out or REINDEX *only* GiST indexes in the
database? Is there a single syntax/command that does this?
I would probably capture the output from:

SELECT indexdef || ';'
FROM pg_indexes
WHERE indexdef ~ ' USING gist ';

-Kevin
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Loading...