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/executor | |
parent | 59a3a401497cd72c550fdfcaa782162d91335bba (diff) | |
download | postgresql-c9fe12831632efc437354cb0482fd6cb5f246a4a.tar.gz postgresql-c9fe12831632efc437354cb0482fd6cb5f246a4a.zip |
Clean up per-tuple memory leaks in trigger firing and plpgsql
expression evaluation.
Diffstat (limited to 'src/include/executor')
-rw-r--r-- | src/include/executor/executor.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 2197af567fd..8e7f4a48630 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, |