diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-22 00:50:07 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-22 00:50:07 +0000 |
| commit | c9fe12831632efc437354cb0482fd6cb5f246a4a (patch) | |
| tree | b9b19b88a07ebfd51915b60bc492bfe68c6cd732 /src/include | |
| parent | 59a3a401497cd72c550fdfcaa782162d91335bba (diff) | |
| download | postgresql-c9fe12831632efc437354cb0482fd6cb5f246a4a.tar.gz | |
Clean up per-tuple memory leaks in trigger firing and plpgsql
expression evaluation.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/commands/trigger.h | 15 | ||||
| -rw-r--r-- | src/include/executor/executor.h | 20 | ||||
| -rw-r--r-- | src/include/nodes/execnodes.h | 4 |
3 files changed, 30 insertions, 9 deletions
diff --git a/src/include/commands/trigger.h b/src/include/commands/trigger.h index c9fbcae54a..a9b689ba17 100644 --- a/src/include/commands/trigger.h +++ b/src/include/commands/trigger.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: trigger.h,v 1.22 2000/12/18 00:44:48 tgl Exp $ + * $Id: trigger.h,v 1.23 2001/01/22 00:50:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -89,13 +89,16 @@ extern void FreeTriggerDesc(TriggerDesc *trigdesc); extern bool equalTriggerDescs(TriggerDesc *trigdesc1, TriggerDesc *trigdesc2); -extern HeapTuple ExecBRInsertTriggers(Relation rel, HeapTuple tuple); -extern void ExecARInsertTriggers(Relation rel, HeapTuple tuple); +extern HeapTuple ExecBRInsertTriggers(EState *estate, + Relation rel, HeapTuple tuple); +extern void ExecARInsertTriggers(EState *estate, + Relation rel, HeapTuple tuple); extern bool ExecBRDeleteTriggers(EState *estate, ItemPointer tupleid); extern void ExecARDeleteTriggers(EState *estate, ItemPointer tupleid); -extern HeapTuple ExecBRUpdateTriggers(EState *estate, ItemPointer tupleid, HeapTuple tuple); -extern void ExecARUpdateTriggers(EState *estate, ItemPointer tupleid, HeapTuple tuple); - +extern HeapTuple ExecBRUpdateTriggers(EState *estate, ItemPointer tupleid, + HeapTuple tuple); +extern void ExecARUpdateTriggers(EState *estate, ItemPointer tupleid, + HeapTuple tuple); /* ---------- diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 2197af567f..8e7f4a4863 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: executor.h,v 1.53 2000/11/12 00:37:01 tgl Exp $ + * $Id: executor.h,v 1.54 2001/01/22 00:50:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -153,6 +153,24 @@ extern void FreeExprContext(ExprContext *econtext); #define ResetExprContext(econtext) \ MemoryContextReset((econtext)->ecxt_per_tuple_memory) +extern ExprContext *MakePerTupleExprContext(EState *estate); + +/* Get an EState's per-output-tuple exprcontext, making it if first use */ +#define GetPerTupleExprContext(estate) \ + ((estate)->es_per_tuple_exprcontext ? \ + (estate)->es_per_tuple_exprcontext : \ + MakePerTupleExprContext(estate)) + +#define GetPerTupleMemoryContext(estate) \ + (GetPerTupleExprContext(estate)->ecxt_per_tuple_memory) + +/* Reset an EState's per-output-tuple exprcontext, if one's been created */ +#define ResetPerTupleExprContext(estate) \ + do { \ + if ((estate)->es_per_tuple_exprcontext) \ + ResetExprContext((estate)->es_per_tuple_exprcontext); \ + } while (0) + extern void ExecOpenIndices(ResultRelInfo *resultRelInfo); extern void ExecCloseIndices(ResultRelInfo *resultRelInfo); extern void ExecInsertIndexTuples(TupleTableSlot *slot, ItemPointer tupleid, diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 4ba3a70c1b..e4d29178c4 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: execnodes.h,v 1.53 2000/11/12 00:37:01 tgl Exp $ + * $Id: execnodes.h,v 1.54 2001/01/22 00:50:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -251,7 +251,7 @@ typedef struct EState MemoryContext es_query_cxt; /* per-query context in which EState lives */ /* * this ExprContext is for per-output-tuple operations, such as - * constraint checks and index-value computations. It can be reset + * constraint checks and index-value computations. It will be reset * for each output tuple. Note that it will be created only if needed. */ ExprContext *es_per_tuple_exprcontext; |
