From 7d6fbe15a2597b6f1b46e9f067c4649645e5e516 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 6 Aug 2001 18:05:07 +0000 Subject: [PATCH] Evaluate LIMIT/OFFSET expressions with ExecEvalExprSwitchContext, not ExecEvalExpr, to avoid possible memory leak. --- src/backend/executor/nodeLimit.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index 394f411ec4..da0e669776 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.6 2001/03/23 04:49:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.7 2001/08/06 18:05:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -164,10 +164,11 @@ recompute_limits(Limit *node) if (node->limitOffset) { - limitstate->offset = DatumGetInt32(ExecEvalExpr(node->limitOffset, - econtext, - &isNull, - NULL)); + limitstate->offset = + DatumGetInt32(ExecEvalExprSwitchContext(node->limitOffset, + econtext, + &isNull, + NULL)); /* Interpret NULL offset as no offset */ if (isNull) limitstate->offset = 0; @@ -182,10 +183,11 @@ recompute_limits(Limit *node) if (node->limitCount) { - limitstate->count = DatumGetInt32(ExecEvalExpr(node->limitCount, - econtext, - &isNull, - NULL)); + limitstate->count = + DatumGetInt32(ExecEvalExprSwitchContext(node->limitCount, + econtext, + &isNull, + NULL)); /* Interpret NULL count as no count (LIMIT ALL) */ if (isNull) limitstate->noCount = true; -- 2.40.0