*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.50 1999/09/05 17:12:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.51 1999/09/09 16:25:35 tgl Exp $
*
* NOTES
* Transaction aborts can now occur two ways:
AtCommit_Memory()
{
Portal portal;
- MemoryContext portalContext;
/* ----------------
- * Release memory in the blank portal.
- * Since EndPortalAllocMode implicitly works on the current context,
- * first make real sure that the blank portal is the selected context.
- * (This is probably not necessary, but seems like a good idea...)
+ * Release all heap memory in the blank portal.
* ----------------
*/
portal = GetPortalByName(NULL);
- portalContext = (MemoryContext) PortalGetHeapMemory(portal);
- MemoryContextSwitchTo(portalContext);
- EndPortalAllocMode();
+ PortalResetHeapMemory(portal);
/* ----------------
* Now that we're "out" of a transaction, have the
AtAbort_Memory()
{
Portal portal;
- MemoryContext portalContext;
/* ----------------
- * Release memory in the blank portal.
- * Since EndPortalAllocMode implicitly works on the current context,
- * first make real sure that the blank portal is the selected context.
- * (This is ESSENTIAL in case we aborted from someplace where it wasn't.)
+ * Release all heap memory in the blank portal.
* ----------------
*/
portal = GetPortalByName(NULL);
- portalContext = (MemoryContext) PortalGetHeapMemory(portal);
- MemoryContextSwitchTo(portalContext);
- EndPortalAllocMode();
+ PortalResetHeapMemory(portal);
/* ----------------
* Now that we're "out" of a transaction, have the
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.28 1999/07/17 20:18:15 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.29 1999/09/09 16:25:29 tgl Exp $
*
*-------------------------------------------------------------------------
*/
static void CollectNamedPortals(Portal *portalP, int destroy);
static Portal PortalHeapMemoryGetPortal(PortalHeapMemory context);
static PortalVariableMemory PortalHeapMemoryGetVariableMemory(PortalHeapMemory context);
-static void PortalResetHeapMemory(Portal portal);
static Portal PortalVariableMemoryGetPortal(PortalVariableMemory context);
/* ----------------
* BadArg if mode is invalid.
* ----------------
*/
-static void
+void
PortalResetHeapMemory(Portal portal)
{
PortalHeapMemory context;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: portal.h,v 1.17 1999/07/15 23:04:23 momjian Exp $
+ * $Id: portal.h,v 1.18 1999/09/09 16:25:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
extern void PortalDestroy(Portal *portalP);
extern void StartPortalAllocMode(AllocMode mode, Size limit);
extern void EndPortalAllocMode(void);
+extern void PortalResetHeapMemory(Portal portal);
extern PortalVariableMemory PortalGetVariableMemory(Portal portal);
extern PortalHeapMemory PortalGetHeapMemory(Portal portal);