mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
Tweak memory context sizing for saved SPI plans.
This commit is contained in:
parent
ecaa2e01b7
commit
ba4d223cd9
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user