syscache.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * syscache.h
  4.  *   System catalog cache definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: syscache.h,v 1.13 1999/02/13 23:22:32 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef SYSCACHE_H
  14. #define SYSCACHE_H
  15. #include <access/attnum.h>
  16. #include <access/htup.h>
  17. #include <storage/buf.h>
  18. #include <utils/rel.h>
  19.  /* #define CACHEDEBUG *//* turns DEBUG elogs on */
  20. /*
  21.  * Declarations for util/syscache.c.
  22.  *
  23.  * SysCache identifiers.
  24.  *
  25.  * The order of these must match the order
  26.  * they are entered into the structure cacheinfo[] in syscache.c
  27.  * The best thing to do is to add yours at the END, because some
  28.  * code assumes that certain caches are at certain places in this
  29.  * array.
  30.  */
  31. #define AMOPOPID 0
  32. #define AMOPSTRATEGY 1
  33. #define ATTNAME 2
  34. #define ATTNUM 3
  35. #define INDEXRELID 4
  36. #define LANNAME 5
  37. #define OPRNAME 6
  38. #define OPROID 7
  39. #define PRONAME 8
  40. #define PROOID 9
  41. #define RELNAME 10
  42. #define RELOID 11
  43. #define TYPNAME 12
  44. #define TYPOID 13
  45. #define AMNAME 14
  46. #define CLANAME 15
  47. #define INDRELIDKEY 16
  48. #define INHRELID 17
  49. #define RULOID 18
  50. #define AGGNAME 19
  51. #define LISTENREL 20
  52. #define USENAME 21
  53. #define USESYSID 22
  54. #define GRONAME 23
  55. #define GROSYSID 24
  56. #define REWRITENAME 25
  57. #define PROSRC 26
  58. #define CLADEFTYPE 27
  59. #define LANOID 28
  60. /* ----------------
  61.  * struct cachedesc: information needed for a call to InitSysCache()
  62.  * ----------------
  63.  */
  64. struct cachedesc
  65. {
  66. char    *name; /* this is Name so that we can initialize
  67.  * it */
  68. int nkeys;
  69. int key[4];
  70. int size; /* sizeof(appropriate struct) */
  71. char    *indname; /* index relation for this cache, if
  72.  * exists */
  73. HeapTuple (*iScanFunc) ();/* function to handle index scans */
  74. };
  75. extern void zerocaches(void);
  76. extern void InitCatalogCache(void);
  77. extern HeapTuple SearchSysCacheTupleCopy(int cacheId,
  78. Datum key1, Datum key2, Datum key3, Datum key4);
  79. extern HeapTuple SearchSysCacheTuple(int cacheId,
  80. Datum key1, Datum key2, Datum key3, Datum key4);
  81. extern int32 SearchSysCacheStruct(int cacheId, char *returnStruct,
  82.  Datum key1, Datum key2, Datum key3, Datum key4);
  83. extern void *SearchSysCacheGetAttribute(int cacheId,
  84.    AttrNumber attributeNumber,
  85.  Datum key1, Datum key2, Datum key3, Datum key4);
  86. extern void *TypeDefaultRetrieve(Oid typId);
  87. #endif  /* SYSCACHE_H */