mirror of
https://github.com/postgres/postgres.git
synced 2025-05-30 00:02:11 -04:00
whenever we generate a new OID. This prevents occasional duplicate-OID errors that can otherwise occur once the OID counter has wrapped around. Duplicate relfilenode values are also checked for when creating new physical files. Per my recent proposal.
82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* relcache.h
|
|
* Relation descriptor cache definitions.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/utils/relcache.h,v 1.51 2005/08/12 01:36:05 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef RELCACHE_H
|
|
#define RELCACHE_H
|
|
|
|
#include "utils/rel.h"
|
|
|
|
/*
|
|
* relation lookup routines
|
|
*/
|
|
extern Relation RelationIdGetRelation(Oid relationId);
|
|
|
|
/* finds an existing cache entry, but won't make a new one */
|
|
extern Relation RelationIdCacheGetRelation(Oid relationId);
|
|
|
|
extern void RelationClose(Relation relation);
|
|
|
|
/*
|
|
* Routines to compute/retrieve additional cached information
|
|
*/
|
|
extern List *RelationGetIndexList(Relation relation);
|
|
extern Oid RelationGetOidIndex(Relation relation);
|
|
extern List *RelationGetIndexExpressions(Relation relation);
|
|
extern List *RelationGetIndexPredicate(Relation relation);
|
|
|
|
extern void RelationSetIndexList(Relation relation,
|
|
List *indexIds, Oid oidIndex);
|
|
|
|
extern void RelationInitIndexAccessInfo(Relation relation);
|
|
|
|
/*
|
|
* Routines for backend startup
|
|
*/
|
|
extern void RelationCacheInitialize(void);
|
|
extern void RelationCacheInitializePhase2(void);
|
|
extern void RelationCacheInitializePhase3(void);
|
|
|
|
/*
|
|
* Routine to create a relcache entry for an about-to-be-created relation
|
|
*/
|
|
extern Relation RelationBuildLocalRelation(const char *relname,
|
|
Oid relnamespace,
|
|
TupleDesc tupDesc,
|
|
Oid relid,
|
|
Oid reltablespace,
|
|
bool shared_relation);
|
|
|
|
/*
|
|
* Routines for flushing/rebuilding relcache entries in various scenarios
|
|
*/
|
|
extern void RelationForgetRelation(Oid rid);
|
|
|
|
extern void RelationCacheInvalidateEntry(Oid relationId);
|
|
|
|
extern void RelationCacheInvalidate(void);
|
|
|
|
extern void AtEOXact_RelationCache(bool isCommit);
|
|
extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid,
|
|
SubTransactionId parentSubid);
|
|
|
|
/*
|
|
* Routines to help manage rebuilding of relcache init file
|
|
*/
|
|
extern bool RelationIdIsInInitFile(Oid relationId);
|
|
extern void RelationCacheInitFileInvalidate(bool beforeSend);
|
|
|
|
/* should be used only by relcache.c and catcache.c */
|
|
extern bool criticalRelcachesBuilt;
|
|
|
|
#endif /* RELCACHE_H */
|