How to identify Primary key column during build stage of Custom index?

Started by Sairam Gaddamover 9 years ago1 messagesgeneral
Jump to latest
#1Sairam Gaddam
gaddamsairam@gmail.com

Hello all,
Basically I am new to postgresql, and I am trying to build a
custom Index to postgres using IndexAmRoutine. Further details on what I am
working is below.
amapi.h - API for Postgres index access methods.

IndexBuildResult *Indexbuild(Relation heap, Relation index, IndexInfo
*indexInfo){ }

The above function will be called during index build stage of custom index.
So If i create a custom index on primary key/or any column on some table,
the above function will be called and some details of table and index are
shared for further processing...

How do I identify primary key column of that table during build stage
through code?
Can I get details of primary key through
TupleDesc <https://doxygen.postgresql.org/structtupleDesc.html&gt; rd_att
<https://doxygen.postgresql.org/structRelationData.html#a888d0630bc511944101812a989a4b427&gt;;
/* tuple descriptor */ ?

I tried to access constraints attribute of above, but ConstrCheck
<https://doxygen.postgresql.org/structconstrCheck.html&gt; in TupleConstr
<https://doxygen.postgresql.org/structtupleConstr.html&gt; was NULL during
build.

I also tried to create index on primary key and check 'indisprimary' of
Form_pg_index
<https://doxygen.postgresql.org/pg__index_8h.html#aaf3f73286b0cf1baf9636770f5e695e4&gt;
in
Index relationdata object but it was found to be 0 even for my custom index
on table primary key!!

So any other way to find a primary key column details during build stage of
a custom index???