mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Fix some poor decisions about sizing of trigger-related memory contexts.
This commit is contained in:
parent
84d2c518fe
commit
ecaa2e01b7
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.93 2001/06/22 19:16:21 wieck Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.94 2001/08/02 15:59:28 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1499,7 +1499,7 @@ deferredTriggerInvokeEvents(bool immediate_only)
|
|||||||
per_tuple_context =
|
per_tuple_context =
|
||||||
AllocSetContextCreate(CurrentMemoryContext,
|
AllocSetContextCreate(CurrentMemoryContext,
|
||||||
"DeferredTriggerTupleContext",
|
"DeferredTriggerTupleContext",
|
||||||
0,
|
ALLOCSET_DEFAULT_MINSIZE,
|
||||||
ALLOCSET_DEFAULT_INITSIZE,
|
ALLOCSET_DEFAULT_INITSIZE,
|
||||||
ALLOCSET_DEFAULT_MAXSIZE);
|
ALLOCSET_DEFAULT_MAXSIZE);
|
||||||
|
|
||||||
@ -1594,9 +1594,13 @@ deferredTriggerInvokeEvents(bool immediate_only)
|
|||||||
void
|
void
|
||||||
DeferredTriggerInit(void)
|
DeferredTriggerInit(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Since this context will never be reset, give it a minsize of 0.
|
||||||
|
* This avoids using any memory if the session never stores anything.
|
||||||
|
*/
|
||||||
deftrig_gcxt = AllocSetContextCreate(TopMemoryContext,
|
deftrig_gcxt = AllocSetContextCreate(TopMemoryContext,
|
||||||
"DeferredTriggerSession",
|
"DeferredTriggerSession",
|
||||||
ALLOCSET_DEFAULT_MINSIZE,
|
0,
|
||||||
ALLOCSET_DEFAULT_INITSIZE,
|
ALLOCSET_DEFAULT_INITSIZE,
|
||||||
ALLOCSET_DEFAULT_MAXSIZE);
|
ALLOCSET_DEFAULT_MAXSIZE);
|
||||||
}
|
}
|
||||||
@ -1623,11 +1627,12 @@ DeferredTriggerBeginXact(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the per transaction memory context and copy all states from
|
* Create the per transaction memory context and copy all states from
|
||||||
* the per session context to here.
|
* the per session context to here. Set the minsize to 0 to avoid
|
||||||
|
* wasting memory if there is no deferred trigger data.
|
||||||
*/
|
*/
|
||||||
deftrig_cxt = AllocSetContextCreate(TopTransactionContext,
|
deftrig_cxt = AllocSetContextCreate(TopTransactionContext,
|
||||||
"DeferredTriggerXact",
|
"DeferredTriggerXact",
|
||||||
ALLOCSET_DEFAULT_MINSIZE,
|
0,
|
||||||
ALLOCSET_DEFAULT_INITSIZE,
|
ALLOCSET_DEFAULT_INITSIZE,
|
||||||
ALLOCSET_DEFAULT_MAXSIZE);
|
ALLOCSET_DEFAULT_MAXSIZE);
|
||||||
oldcxt = MemoryContextSwitchTo(deftrig_cxt);
|
oldcxt = MemoryContextSwitchTo(deftrig_cxt);
|
||||||
@ -1911,7 +1916,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
|
|||||||
|
|
||||||
if (!IsTransactionBlock())
|
if (!IsTransactionBlock())
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Outside of a transaction block set the trigger states of
|
* Outside of a transaction block set the trigger states of
|
||||||
* individual triggers on session level.
|
* individual triggers on session level.
|
||||||
@ -1949,7 +1953,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Inside of a transaction block set the trigger states of
|
* Inside of a transaction block set the trigger states of
|
||||||
* individual triggers on transaction level.
|
* individual triggers on transaction level.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user