2149{
2150 HeapTuple index_tuple;
2151 Form_pg_index index_form;
2152 int16 index_attnum = InvalidAttrNumber;
2153
2154
2155 index_tuple = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(index_oid));
2156 if (!HeapTupleIsValid(index_tuple))
2157 elog(ERROR, "cache lookup failed for index %u", index_oid);
2158
2159 index_form = (Form_pg_index) GETSTRUCT(index_tuple);
2160
2161
2162 if (index_form->indrelid != table_oid)
2163 elog(ERROR, "table=%u and index=%u are not related", table_oid, index_oid);
2164
2165
2166 for (int16 i = 0; i < (int16)(index_form->indkey.dim1); i++)
2167 {
2168 if (index_form->indkey.values[i] == table_attnum)
2169 {
2170 index_attnum = i+1;
2171 break;
2172 }
2173 }
2174 ReleaseSysCache(index_tuple);
2175 return index_attnum;
2176}