Re: Index expressions: how to recreate - Mailing list pgsql-hackers

From Andreas Pflug
Subject Re: Index expressions: how to recreate
Date
Msg-id 3F020091.4040309@pse-consulting.de
Whole thread Raw
In response to Index expressions: how to recreate  (Andreas Pflug <pgadmin@pse-consulting.de>)
Responses Re: Index expressions: how to recreate  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom Lane wrote:

>Andreas Pflug <pgadmin@pse-consulting.de> writes:
>  
>
>>I noticed the new expression functionality of indices and while 
>>implementing them in pgadmin3 was wonderingnow to extract the definition 
>>from the catalog.
>>    
>>
>
>The best way is to use pg_get_indexdef(indexOID), same as pg_dump and
>psql do.
>  
>
So far for the SQL window, which will show just a plain (and hopefully 
nicely formatted. readable) sql query to recreate the index. Still, a 
verbose display of the indexes property is not possible this way, unless 
I parse the pg_get_indexdef output...

pg_get_indexdef converts that string to a list of nodes (not 
surprising), while pg_get_expr whill join these list elements with an 
explicit and (according to a comment, needed for partial index). Do I 
need to retrieve indexprs and split it myself (counting brackets) or is 
there a pg_xxx function that could help me (pg_get_element(indexprs, 
0...n)) ?

>Actually it should be read as 1 0 4 0.  The output converter for
>int2vector suppresses trailing zeroes, for largely-historical reasons.
>
Ok, I understand that, because indkey[n>4] will deliver 0 too, and 
indnatts will show that 4 arguments are needed.


Regards,
Andreas





pgsql-hackers by date:

Previous
From: Markus Bertheau
Date:
Subject: Re: make check fails: user "postgres" doesn't exist
Next
From: Jan Wieck
Date:
Subject: Re: Is Patch Ok for deferred trigger disk queue?