| From: | "Bart van Houdt" <bart(dot)van(dot)houdt(at)syfact(dot)com> | 
|---|---|
| To: | <pgsql-sql(at)postgresql(dot)org> | 
| Subject: | Query to retrieve all indexed columns | 
| Date: | 2008-11-19 12:11:32 | 
| Message-ID: | CECE69D480C32F49891F27ED3E49C38C04A703EF@nthvsexch02.interaccess.nl | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-sql | 
Hi,
I am working on a query to retrieve all indexed columns and came up with
the following query:
select pgc.relname as indexname
,pgc2.relname as tablename
,pga.attname as columnname
,pga.attnum as columnnumber
,replace(pgi.indkey::text, ' ', ',') as columnindex
from pg_class pgc
join pg_namespace pgn ON (pgn.oid = pgc.relnamespace
AND pgn.nspname = 'public')
left join pg_index pgi ON (pgi.indexrelid = pgc.oid)
left join pg_class pgc2 ON (pgc2.oid = pgi.indrelid)
left join pg_attribute pga ON (pga.attrelid = pgc2.oid
                                 AND attnum::text IN
(replace(pgi.indkey::text, ' ', ',')))
where pgc.relkind = 'i'
order by indexname, columnindex;
Tis query works for single column indexes, but with multiple column
indexes I get incorrect results... I'm having a hard time figuring out
how to join pg_attribute.indkey in this, could anyone help me out on
this one?  
Thanks in advance,
Bart van Houdt
Syfact International B.V.
Database developer
| From | Date | Subject | |
|---|---|---|---|
| Next Message | A. Kretschmer | 2008-11-19 13:37:19 | Re: custom serial number | 
| Previous Message | mahmoud ewiwi | 2008-11-19 08:52:07 | Re: custom serial number |