Thread: Re: [HACKERS] Index expressions: how to recreate

Re: [HACKERS] Index expressions: how to recreate

From
Andreas Pflug
Date:
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