| 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 |  |