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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * portal.h
  4.  *   POSTGRES portal definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: portal.h,v 1.15.2.2 1999/09/09 16:29:10 tgl Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. /*
  14.  * Note:
  15.  * A portal is an abstraction which represents the execution state of
  16.  * a running query (or a fixed sequence of queries).  The "blank portal" is
  17.  * a portal with an InvalidName.  This blank portal is in existance except
  18.  * between calls to BlankPortalAssignName and GetPortalByName(NULL).
  19.  *
  20.  * Note:
  21.  * now that PQ calls can be made from within a backend, a portal
  22.  * may also be used to keep track of the tuples resulting
  23.  * from the execution of a query. In this case, entryIndex
  24.  */
  25. #ifndef PORTAL_H
  26. #define PORTAL_H
  27. #include "executor/execdesc.h"
  28. #include "nodes/memnodes.h"
  29. typedef struct PortalBlockData
  30. {
  31. AllocSetData setData;
  32. FixedItemData itemData;
  33. } PortalBlockData;
  34. typedef PortalBlockData *PortalBlock;
  35. typedef struct PortalD PortalD;
  36. typedef PortalD *Portal;
  37. struct PortalD
  38. {
  39. char    *name; /* XXX PortalName */
  40. struct PortalVariableMemoryData variable;
  41. struct PortalHeapMemoryData heap;
  42. QueryDesc  *queryDesc;
  43. TupleDesc attinfo;
  44. EState    *state;
  45. void (*cleanup) (Portal);
  46. };
  47. /*
  48.  * PortalIsValid
  49.  * True iff portal is valid.
  50.  */
  51. #define PortalIsValid(p) PointerIsValid(p)
  52. /*
  53.  * Special portals (well, their names anyway)
  54.  */
  55. #define VACPNAME "<vacuum>"
  56. extern bool PortalNameIsSpecial(char *pname);
  57. extern void AtEOXact_portals(void);
  58. extern void EnablePortalManager(bool on);
  59. extern Portal GetPortalByName(char *name);
  60. extern Portal BlankPortalAssignName(char *name);
  61. extern void PortalSetQuery(Portal portal, QueryDesc *queryDesc,
  62.    TupleDesc attinfo, EState *state,
  63.    void (*cleanup) (Portal portal));
  64. extern QueryDesc *PortalGetQueryDesc(Portal portal);
  65. extern EState *PortalGetState(Portal portal);
  66. extern Portal CreatePortal(char *name);
  67. extern void PortalDestroy(Portal *portalP);
  68. extern void StartPortalAllocMode(AllocMode mode, Size limit);
  69. extern void EndPortalAllocMode(void);
  70. extern void PortalResetHeapMemory(Portal portal);
  71. extern PortalVariableMemory PortalGetVariableMemory(Portal portal);
  72. extern PortalHeapMemory PortalGetHeapMemory(Portal portal);
  73. /* estimate of the maximum number of open portals a user would have,
  74.  * used in initially sizing the PortalHashTable in EnablePortalManager()
  75.  */
  76. #define PORTALS_PER_USER    10
  77. #endif  /* PORTAL_H */