/*-------------------------------------------------------------------------
*
* pg_amop . h
* definition of the " access method operator " system catalog ( pg_amop )
*
* The amop table identifies the operators associated with each index operator
* family and operator class ( classes are subsets of families ) . An associated
* operator can be either a search operator or an ordering operator , as
* identified by amoppurpose .
*
* The primary key for this table is < amopfamily , amoplefttype , amoprighttype ,
* amopstrategy > . amoplefttype and amoprighttype are just copies of the
* operator ' s oprleft / oprright , ie its declared input data types . The
* " default " operators for a particular opclass within the family are those
* with amoplefttype = amoprighttype = opclass ' s opcintype . An opfamily may
* also contain other operators , typically cross - data - type operators . All the
* operators within a family are supposed to be compatible , in a way that is
* defined by each individual index AM .
*
* We also keep a unique index on < amopopr , amoppurpose , amopfamily > , so that
* we can use a syscache to quickly answer questions of the form " is this
* operator in this opfamily , and if so what are its semantics with respect to
* the family ? " This implies that the same operator cannot be listed for
* multiple strategy numbers within a single opfamily , with the exception that
* it ' s possible to list it for both search and ordering purposes ( with
* different strategy numbers for the two purposes ) .
*
* amopmethod is a copy of the owning opfamily ' s opfmethod field . This is an
* intentional denormalization of the catalogs to buy lookup speed .
*
*
* Portions Copyright ( c ) 1996 - 2025 , PostgreSQL Global Development Group
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
* src / include / catalog / pg_amop . h
*
* NOTES
* The Catalog . pm module reads this file and derives schema
* information .
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#ifndef PG_AMOP_H
#define PG_AMOP_H
#include "catalog/genbki.h"
#include "catalog/pg_amop_d.h" /* IWYU pragma: export */
/* ----------------
* pg_amop definition . cpp turns this into
* typedef struct FormData_pg_amop
* - - - - - - - - - - - - - - - -
*/
CATALOG(pg_amop,2602 ,AccessMethodOperatorRelationId)
{
Oid oid; /* oid */
/* the index opfamily this entry is for */
Oid amopfamily BKI_LOOKUP(pg_opfamily);
/* operator's left input data type */
Oid amoplefttype BKI_LOOKUP(pg_type);
/* operator's right input data type */
Oid amoprighttype BKI_LOOKUP(pg_type);
/* operator strategy number */
int16 amopstrategy;
/* is operator for 's'earch or 'o'rdering? */
char amoppurpose BKI_DEFAULT(s);
/* the operator's pg_operator OID */
Oid amopopr BKI_LOOKUP(pg_operator);
/* the index access method this entry is for */
Oid amopmethod BKI_LOOKUP(pg_am);
/* ordering opfamily OID, or 0 if search op */
Oid amopsortfamily BKI_DEFAULT(0 ) BKI_LOOKUP_OPT(pg_opfamily);
} FormData_pg_amop;
/* ----------------
* Form_pg_amop corresponds to a pointer to a tuple with
* the format of pg_amop relation .
* - - - - - - - - - - - - - - - -
*/
typedef FormData_pg_amop *Form_pg_amop;
DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653 , AccessMethodStrategyIndexId, pg_amop, btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654 , AccessMethodOperatorIndexId, pg_amop, btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
DECLARE_UNIQUE_INDEX_PKEY(pg_amop_oid_index, 2756 , AccessMethodOperatorOidIndexId, pg_amop, btree(oid oid_ops));
MAKE_SYSCACHE(AMOPSTRATEGY, pg_amop_fam_strat_index, 64 );
MAKE_SYSCACHE(AMOPOPID, pg_amop_opr_fam_index, 64 );
#ifdef EXPOSE_TO_CLIENT_CODE
/* allowed values of amoppurpose: */
#define AMOP_SEARCH 's' /* operator is for search */
#define AMOP_ORDER 'o' /* operator is for ordering */
#endif /* EXPOSE_TO_CLIENT_CODE */
#endif /* PG_AMOP_H */
Messung V0.5 in Prozent C=84 H=97 G=90
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-08)
¤
*© Formatika GbR, Deutschland