On 2017-12-11 12:48:27 -0800, Paul Ramsey wrote: > > > On Dec 11, 2017, at 12:40 PM, Andres Freund <andres@xxxxxxxxxxx> wrote: > > > > On 2017-12-11 11:26:51 -0800, Paul Ramsey wrote: > >> On Mon, Dec 11, 2017 at 11:25 AM, Paul Ramsey <pramsey@xxxxxxxxxxxxxxxxx> wrote: > >>> Is there anywhere any documentation on SearchSysCache? I find I end up > >>> on these long spelunking expeditions through the code base for a > >>> particular problem, find the answer after many hours, then forget > >>> everything I learned because I don't exercise my knowledge frequently > >>> enough. A decent reference guide would help a lot. What do the various > >>> SysCacheIdentifier numbers mean/search, some examples, of usage, etc, > >>> etc. > >>> > >>> I can accept if there are not, but it would be a shame to keep on > >>> hunting like this if there were a good reference lying around. > >> > >> My particular hunt today is "for a given table relation, find any > >> indexes that use the gist access method and are on a single attribute > >> of type geometry". > > > > I don't think there's a way to do this with a single syscache, there > > won't be an index than can cover all of these. I'd suggest using > > RelationGetIndexList(), and then filtering for gist and attribute type > > on the returned value. > > Thanks, A, I seem to be on the right path then. Loop through all > indexes in RelationGetIndexList(), for those that have a relam == > GIST_AM_OID, loop through the associated columns (looks like I > actually have to use a SysScanDesc on AttributeRelationId) and look > for atts that have the type I’m interested in, and if I find one, yay, > we have a winner. Depending on what you do, it might not be a bad idea to do an index_open() on the oid. The returned Relation entry will already have looked up the relevant types, and you possibly want to lock anyway... Greetings, Andres Freund