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
|
||||
*
|
||||
* 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 =
|
||||
AllocSetContextCreate(CurrentMemoryContext,
|
||||
"DeferredTriggerTupleContext",
|
||||
0,
|
||||
ALLOCSET_DEFAULT_MINSIZE,
|
||||
ALLOCSET_DEFAULT_INITSIZE,
|
||||
ALLOCSET_DEFAULT_MAXSIZE);
|
||||
|
||||
@ -1594,9 +1594,13 @@ deferredTriggerInvokeEvents(bool immediate_only)
|
||||
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,
|
||||
"DeferredTriggerSession",
|
||||
ALLOCSET_DEFAULT_MINSIZE,
|
||||
0,
|
||||
ALLOCSET_DEFAULT_INITSIZE,
|
||||
ALLOCSET_DEFAULT_MAXSIZE);
|
||||
}
|
||||
@ -1623,11 +1627,12 @@ DeferredTriggerBeginXact(void)
|
||||
|
||||
/*
|
||||
* 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,
|
||||
"DeferredTriggerXact",
|
||||
ALLOCSET_DEFAULT_MINSIZE,
|
||||
0,
|
||||
ALLOCSET_DEFAULT_INITSIZE,
|
||||
ALLOCSET_DEFAULT_MAXSIZE);
|
||||
oldcxt = MemoryContextSwitchTo(deftrig_cxt);
|
||||
@ -1911,7 +1916,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
|
||||
|
||||
if (!IsTransactionBlock())
|
||||
{
|
||||
|
||||
/*
|
||||
* Outside of a transaction block set the trigger states of
|
||||
* individual triggers on session level.
|
||||
@ -1949,7 +1953,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/*
|
||||
* Inside of a transaction block set the trigger states of
|
||||
* individual triggers on transaction level.
|
||||
|
Loading…
x
Reference in New Issue
Block a user