1 /*-------------------------------------------------------------------------
4 * POSTGRES portal definitions.
7 * Copyright (c) 1994, Regents of the University of California
9 * $Id: portal.h,v 1.7 1997/09/08 21:55:14 momjian Exp $
11 *-------------------------------------------------------------------------
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).
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
28 #include <executor/execdesc.h>
29 #include <lib/fstack.h>
30 #include <nodes/memnodes.h>
31 #include <utils/memutils.h>
33 typedef struct PortalBlockData
36 FixedItemData itemData;
39 typedef PortalBlockData *PortalBlock;
41 typedef struct PortalD PortalD;
42 typedef PortalD *Portal;
46 char *name; /* XXX PortalName */
47 struct PortalVariableMemory variable;
48 struct PortalHeapMemory heap;
52 void (*cleanup) (Portal);
57 * True iff portal is valid.
59 #define PortalIsValid(p) PointerIsValid(p)
62 * Special portals (well, their names anyway)
64 #define VACPNAME "<vacuum>"
66 extern bool PortalNameIsSpecial(char *pname);
67 extern void AtEOXact_portals(void);
68 extern void EnablePortalManager(bool on);
69 extern Portal GetPortalByName(char *name);
70 extern Portal BlankPortalAssignName(char *name);
72 PortalSetQuery(Portal portal, QueryDesc *queryDesc,
73 TupleDesc attinfo, EState *state,
74 void (*cleanup) (Portal portal));
75 extern QueryDesc *PortalGetQueryDesc(Portal portal);
76 extern EState *PortalGetState(Portal portal);
77 extern Portal CreatePortal(char *name);
78 extern void PortalDestroy(Portal *portalP);
79 extern void StartPortalAllocMode(AllocMode mode, Size limit);
80 extern void EndPortalAllocMode(void);
81 extern PortalVariableMemory PortalGetVariableMemory(Portal portal);
82 extern PortalHeapMemory PortalGetHeapMemory(Portal portal);
84 /* estimate of the maximum number of open portals a user would have,
85 * used in initially sizing the PortalHashTable in EnablePortalManager()
87 #define PORTALS_PER_USER 10