Tweak memory context sizing for saved SPI plans.

This commit is contained in:
Tom Lane 2001-08-02 16:05:23 +00:00
parent ecaa2e01b7
commit ba4d223cd9
1 changed files with 27 additions and 20 deletions

View File

@ -3,13 +3,21 @@
* spi.c
* Server Programming Interface
*
* $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.55 2001/06/01 19:43:55 tgl Exp $
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.56 2001/08/02 16:05:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "executor/spi_priv.h"
#include "postgres.h"
#include "access/printtup.h"
#include "commands/command.h"
#include "executor/spi_priv.h"
uint32 SPI_processed = 0;
Oid SPI_lastoid = InvalidOid;
@ -786,10 +794,10 @@ spi_printtup(HeapTuple tuple, TupleDesc tupdesc, DestReceiver *self)
if (tuptable == NULL)
{
tuptabcxt = AllocSetContextCreate(CurrentMemoryContext,
"SPI TupTable",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
"SPI TupTable",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
MemoryContextSwitchTo(tuptabcxt);
_SPI_current->tuptable = tuptable = (SPITupleTable *)
@ -1253,29 +1261,28 @@ _SPI_copy_plan(_SPI_plan *plan, int location)
_SPI_plan *newplan;
MemoryContext oldcxt;
MemoryContext plancxt;
MemoryContext parentcxt = CurrentMemoryContext;
MemoryContext parentcxt;
/* Determine correct parent for the plans memory context */
/* Determine correct parent for the plan's memory context */
if (location == _SPI_CPLAN_PROCXT)
parentcxt = _SPI_current->procCxt;
/*
oldcxt = MemoryContextSwitchTo(_SPI_current->procCxt);
*/
else if (location == _SPI_CPLAN_TOPCXT)
parentcxt = TopMemoryContext;
/*
oldcxt = MemoryContextSwitchTo(TopMemoryContext);
*/
else
parentcxt = CurrentMemoryContext;
/* Create a memory context for the plan */
/*
* Create a memory context for the plan. We don't expect the plan to
* be very large, so use smaller-than-default alloc parameters.
*/
plancxt = AllocSetContextCreate(parentcxt,
"SPI Plan",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
"SPI Plan",
1024,
1024,
ALLOCSET_DEFAULT_MAXSIZE);
oldcxt = MemoryContextSwitchTo(plancxt);
/* Copy the SPI plan into it's own context */
/* Copy the SPI plan into its own context */
newplan = (_SPI_plan *) palloc(sizeof(_SPI_plan));
newplan->plancxt = plancxt;
newplan->qtlist = (List *) copyObject(plan->qtlist);