1 /*------------------------------------------------------------------------- 2 * 3 * pg_amproc.h 4 * definition of the "access method procedure" system catalog (pg_amproc) 5 * 6 * The amproc table identifies support procedures associated with index 7 * operator families and classes. These procedures can't be listed in pg_amop 8 * since they are not the implementation of any indexable operator. 9 * 10 * The primary key for this table is <amprocfamily, amproclefttype, 11 * amprocrighttype, amprocnum>. The "default" support functions for a 12 * particular opclass within the family are those with amproclefttype = 13 * amprocrighttype = opclass's opcintype. These are the ones loaded into the 14 * relcache for an index and typically used for internal index operations. 15 * Other support functions are typically used to handle cross-type indexable 16 * operators with oprleft/oprright matching the entry's amproclefttype and 17 * amprocrighttype. The exact behavior depends on the index AM, however, and 18 * some don't pay attention to non-default functions at all. 19 * 20 * 21 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group 22 * Portions Copyright (c) 1994, Regents of the University of California 23 * 24 * src/include/catalog/pg_amproc.h 25 * 26 * NOTES 27 * The Catalog.pm module reads this file and derives schema 28 * information. 29 * 30 *------------------------------------------------------------------------- 31 */ 32 #ifndef PG_AMPROC_H 33 #define PG_AMPROC_H 34 35 #include "catalog/genbki.h" 36 #include "catalog/pg_amproc_d.h" 37 38 /* ---------------- 39 * pg_amproc definition. cpp turns this into 40 * typedef struct FormData_pg_amproc 41 * ---------------- 42 */ 43 CATALOG(pg_amproc,2603,AccessMethodProcedureRelationId) 44 { 45 Oid oid; /* oid */ 46 47 /* the index opfamily this entry is for */ 48 Oid amprocfamily BKI_LOOKUP(pg_opfamily); 49 50 /* procedure's left input data type */ 51 Oid amproclefttype BKI_LOOKUP(pg_type); 52 53 /* procedure's right input data type */ 54 Oid amprocrighttype BKI_LOOKUP(pg_type); 55 56 /* support procedure index */ 57 int16 amprocnum; 58 59 /* OID of the proc */ 60 regproc amproc BKI_LOOKUP(pg_proc); 61 } FormData_pg_amproc; 62 63 /* ---------------- 64 * Form_pg_amproc corresponds to a pointer to a tuple with 65 * the format of pg_amproc relation. 66 * ---------------- 67 */ 68 typedef FormData_pg_amproc *Form_pg_amproc; 69 70 #endif /* PG_AMPROC_H */ 71