mirror of
https://github.com/postgres/postgres.git
synced 2026-04-27 09:07:42 -04:00
Oleg Bartunov and Teodor Sigaev, but I did a lot of editorializing, so anything that's broken is probably my fault. Documentation is nonexistent as yet, but let's land the patch so we can get some portability testing done.
258 lines
13 KiB
C
258 lines
13 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* indexing.h
|
|
* This file provides some definitions to support indexing
|
|
* on system catalogs
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/catalog/indexing.h,v 1.100 2007/08/21 01:11:25 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef INDEXING_H
|
|
#define INDEXING_H
|
|
|
|
#include "access/htup.h"
|
|
#include "utils/rel.h"
|
|
|
|
/*
|
|
* The state object used by CatalogOpenIndexes and friends is actually the
|
|
* same as the executor's ResultRelInfo, but we give it another type name
|
|
* to decouple callers from that fact.
|
|
*/
|
|
typedef struct ResultRelInfo *CatalogIndexState;
|
|
|
|
/*
|
|
* indexing.c prototypes
|
|
*/
|
|
extern CatalogIndexState CatalogOpenIndexes(Relation heapRel);
|
|
extern void CatalogCloseIndexes(CatalogIndexState indstate);
|
|
extern void CatalogIndexInsert(CatalogIndexState indstate,
|
|
HeapTuple heapTuple);
|
|
extern void CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple);
|
|
|
|
|
|
/*
|
|
* These macros are just to keep the C compiler from spitting up on the
|
|
* upcoming commands for genbki.sh.
|
|
*/
|
|
#define DECLARE_INDEX(name,oid,decl) extern int no_such_variable
|
|
#define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable
|
|
#define BUILD_INDICES
|
|
|
|
|
|
/*
|
|
* What follows are lines processed by genbki.sh to create the statements
|
|
* the bootstrap parser will turn into DefineIndex commands.
|
|
*
|
|
* The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX. The first two
|
|
* arguments are the index name and OID, the rest is much like a standard
|
|
* 'create index' SQL command.
|
|
*
|
|
* For each index, we also provide a #define for its OID. References to
|
|
* the index in the C code should always use these #defines, not the actual
|
|
* index name (much less the numeric OID).
|
|
*/
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops));
|
|
#define AggregateFnoidIndexId 2650
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops));
|
|
#define AmNameIndexId 2651
|
|
DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops));
|
|
#define AmOidIndexId 2652
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops));
|
|
#define AccessMethodStrategyIndexId 2653
|
|
DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amopfamily oid_ops));
|
|
#define AccessMethodOperatorIndexId 2654
|
|
DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops));
|
|
#define AccessMethodOperatorOidIndexId 2756
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
|
|
#define AccessMethodProcedureIndexId 2655
|
|
DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops));
|
|
#define AccessMethodProcedureOidIndexId 2757
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
|
|
#define AttrDefaultIndexId 2656
|
|
DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops));
|
|
#define AttrDefaultOidIndexId 2657
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
|
|
#define AttributeRelidNameIndexId 2658
|
|
DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
|
|
#define AttributeRelidNumIndexId 2659
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops));
|
|
#define AuthIdRolnameIndexId 2676
|
|
DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops));
|
|
#define AuthIdOidIndexId 2677
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops));
|
|
#define AuthMemRoleMemIndexId 2694
|
|
DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops));
|
|
#define AuthMemMemRoleIndexId 2695
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_autovacuum_vacrelid_index, 1250, on pg_autovacuum using btree(vacrelid oid_ops));
|
|
#define AutovacuumRelidIndexId 1250
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops));
|
|
#define CastOidIndexId 2660
|
|
DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops));
|
|
#define CastSourceTargetIndexId 2661
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops));
|
|
#define ClassOidIndexId 2662
|
|
DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops));
|
|
#define ClassNameNspIndexId 2663
|
|
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
|
|
#define ConstraintNameNspIndexId 2664
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops));
|
|
#define ConstraintRelidIndexId 2665
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops));
|
|
#define ConstraintTypidIndexId 2666
|
|
DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops));
|
|
#define ConstraintOidIndexId 2667
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
|
|
#define ConversionDefaultIndexId 2668
|
|
DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
|
|
#define ConversionNameNspIndexId 2669
|
|
DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops));
|
|
#define ConversionOidIndexId 2670
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops));
|
|
#define DatabaseNameIndexId 2671
|
|
DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops));
|
|
#define DatabaseOidIndexId 2672
|
|
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
|
|
#define DependDependerIndexId 2673
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
|
|
#define DependReferenceIndexId 2674
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops));
|
|
#define DescriptionObjIndexId 2675
|
|
DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops));
|
|
#define SharedDescriptionObjIndexId 2397
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops));
|
|
#define EnumOidIndexId 3502
|
|
DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops));
|
|
#define EnumTypIdLabelIndexId 3503
|
|
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops));
|
|
#define IndexIndrelidIndexId 2678
|
|
DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops));
|
|
#define IndexRelidIndexId 2679
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
|
|
#define InheritsRelidSeqnoIndexId 2680
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops));
|
|
#define LanguageNameIndexId 2681
|
|
DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops));
|
|
#define LanguageOidIndexId 2682
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops));
|
|
#define LargeObjectLOidPNIndexId 2683
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
|
|
#define NamespaceNameIndexId 2684
|
|
DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
|
|
#define NamespaceOidIndexId 2685
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
|
|
#define OpclassAmNameNspIndexId 2686
|
|
DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops));
|
|
#define OpclassOidIndexId 2687
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops));
|
|
#define OperatorOidIndexId 2688
|
|
DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
|
|
#define OperatorNameNspIndexId 2689
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
|
|
#define OpfamilyAmNameNspIndexId 2754
|
|
DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops));
|
|
#define OpfamilyOidIndexId 2755
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops));
|
|
#define PLTemplateNameIndexId 1137
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops));
|
|
#define ProcedureOidIndexId 2690
|
|
DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
|
|
#define ProcedureNameArgsNspIndexId 2691
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops));
|
|
#define RewriteOidIndexId 2692
|
|
DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops));
|
|
#define RewriteRelRulenameIndexId 2693
|
|
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops));
|
|
#define SharedDependDependerIndexId 1232
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
|
|
#define SharedDependReferenceIndexId 1233
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops));
|
|
#define StatisticRelidAttnumIndexId 2696
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops));
|
|
#define TablespaceOidIndexId 2697
|
|
DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops));
|
|
#define TablespaceNameIndexId 2698
|
|
|
|
/* This following index is not used for a cache and is not unique */
|
|
DECLARE_INDEX(pg_trigger_tgconstrname_index, 2699, on pg_trigger using btree(tgconstrname name_ops));
|
|
#define TriggerConstrNameIndexId 2699
|
|
DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops));
|
|
#define TriggerRelidNameIndexId 2701
|
|
DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops));
|
|
#define TriggerOidIndexId 2702
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops));
|
|
#define TSConfigNameNspIndexId 3608
|
|
DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops));
|
|
#define TSConfigOidIndexId 3712
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
|
|
#define TSConfigMapIndexId 3609
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops));
|
|
#define TSDictionaryNameNspIndexId 3604
|
|
DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops));
|
|
#define TSDictionaryOidIndexId 3605
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops));
|
|
#define TSParserNameNspIndexId 3606
|
|
DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops));
|
|
#define TSParserOidIndexId 3607
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops));
|
|
#define TSTemplateNameNspIndexId 3766
|
|
DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops));
|
|
#define TSTemplateOidIndexId 3767
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops));
|
|
#define TypeOidIndexId 2703
|
|
DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops));
|
|
#define TypeNameNspIndexId 2704
|
|
|
|
/* last step of initialization script: build the indexes declared above */
|
|
BUILD_INDICES
|
|
|
|
#endif /* INDEXING_H */
|