+ NameData amname; /* access method name */
+ int2 amstrategies; /* total number of strategies (operators) by
+ * which we can traverse/search this AM. Zero
+ * if AM does not have a fixed set of strategy
+ * assignments. */
+ int2 amsupport; /* total number of support functions that this
+ * AM uses */
+ bool amcanorder; /* does AM support order by column value? */
+ bool amcanorderbyop; /* does AM support order by operator result? */
+ bool amcanbackward; /* does AM support backward scan? */
+ bool amcanunique; /* does AM support UNIQUE indexes? */
+ bool amcanmulticol; /* does AM support multi-column indexes? */
+ bool amcanreturn; /* can AM return IndexTuples? */
+ bool amoptionalkey; /* can query omit key for the first column? */
+ bool amsearcharray; /* can AM handle ScalarArrayOpExpr quals? */
+ bool amsearchnulls; /* can AM search for NULL/NOT NULL entries? */
+ bool amstorage; /* can storage type differ from column type? */
+ bool amclusterable; /* does AM support cluster command? */
+ bool ampredlocks; /* does AM handle predicate locks? */
+ Oid amkeytype; /* type of data in index, or InvalidOid */
+ regproc aminsert; /* "insert this tuple" function */
+ regproc ambeginscan; /* "prepare for index scan" function */
+ regproc amgettuple; /* "next valid tuple" function, or 0 */
+ regproc amgetbitmap; /* "fetch all valid tuples" function, or 0 */
+ regproc amrescan; /* "(re)start index scan" function */
+ regproc amendscan; /* "end index scan" function */
+ regproc ammarkpos; /* "mark current scan position" function */
+ regproc amrestrpos; /* "restore marked scan position" function */
+ regproc ambuild; /* "build new index" function */
+ regproc ambuildempty; /* "build empty index" function */
+ regproc ambulkdelete; /* bulk-delete function */
+ regproc amvacuumcleanup; /* post-VACUUM cleanup function */
+ regproc amcostestimate; /* estimate cost of an indexscan */
+ regproc amoptions; /* parse AM-specific parameters */