catcache.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
- /*-------------------------------------------------------------------------
- *
- * catcache.h
- * Low-level catalog cache definitions.
- *
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * $Id: catcache.h,v 1.15 1999/06/04 02:19:44 tgl Exp $
- *
- *-------------------------------------------------------------------------
- */
- #ifndef CATCACHE_H
- #define CATCACHE_H
- /* #define CACHEDEBUG turns DEBUG elogs on */
- #include <access/htup.h>
- #include <lib/dllist.h>
- #include <nodes/memnodes.h>
- #include <utils/rel.h>
- /*
- * struct catctup: tuples in the cache.
- * struct catcache: information for managing a cache.
- */
- typedef struct catctup
- {
- HeapTuple ct_tup; /* A pointer to a tuple */
- /* Each tuple in the cache has two catctup items, one in the LRU list
- * and one in the hashbucket list for its hash value. ct_node in each
- * one points to the other one.
- */
- Dlelem *ct_node; /* the other catctup for this tuple */
- } CatCTup;
- /* voodoo constants */
- #define NCCBUCK 500 /* CatCache buckets */
- #define MAXTUP 300 /* Maximum # of tuples cached per cache */
- typedef struct catcache
- {
- Oid relationId;
- Oid indexId;
- char *cc_relname; /* relation name for defered open */
- char *cc_indname; /* index name for defered open */
- HeapTuple (*cc_iscanfunc) (); /* index scanfunction */
- TupleDesc cc_tupdesc; /* tuple descriptor from reldesc */
- int id; /* XXX could be improved -hirohama */
- bool busy; /* for detecting recursive lookups */
- short cc_ntup; /* # of tuples in this cache */
- short cc_maxtup; /* max # of tuples allowed (LRU) */
- short cc_nkeys;
- short cc_size;
- short cc_key[4];
- short cc_klen[4];
- ScanKeyData cc_skey[4];
- struct catcache *cc_next;
- Dllist *cc_lrulist; /* LRU list, most recent first */
- Dllist *cc_cache[NCCBUCK + 1]; /* hash buckets */
- } CatCache;
- #define InvalidCatalogCacheId (-1)
- extern GlobalMemory CacheCxt;
- extern void CatalogCacheIdInvalidate(int cacheId, Index hashIndex,
- ItemPointer pointer);
- extern void ResetSystemCache(void);
- extern void SystemCacheRelationFlushed(Oid relId);
- extern CatCache *InitSysCache(char *relname, char *indname, int id, int nkeys,
- int *key, HeapTuple (*iScanfuncP) ());
- extern HeapTuple SearchSysCache(struct catcache * cache, Datum v1, Datum v2,
- Datum v3, Datum v4);
- extern void RelationInvalidateCatalogCacheTuple(Relation relation,
- HeapTuple tuple, void (*function) ());
- #endif /* CATCACHE_H */