Commit 0319da63 authored by Heikki Linnakangas's avatar Heikki Linnakangas

Reset per-tuple memory context between every row in a scan node, even when

there's no quals or projections. Currently this only matters for foreign
scans, as none of the other scan nodes litter the per-tuple memory context
when there's no quals or projections.
parent 27c7875d
...@@ -120,13 +120,17 @@ ExecScan(ScanState *node, ...@@ -120,13 +120,17 @@ ExecScan(ScanState *node,
*/ */
qual = node->ps.qual; qual = node->ps.qual;
projInfo = node->ps.ps_ProjInfo; projInfo = node->ps.ps_ProjInfo;
econtext = node->ps.ps_ExprContext;
/* /*
* If we have neither a qual to check nor a projection to do, just skip * If we have neither a qual to check nor a projection to do, just skip
* all the overhead and return the raw scan tuple. * all the overhead and return the raw scan tuple.
*/ */
if (!qual && !projInfo) if (!qual && !projInfo)
{
ResetExprContext(econtext);
return ExecScanFetch(node, accessMtd, recheckMtd); return ExecScanFetch(node, accessMtd, recheckMtd);
}
/* /*
* Check to see if we're still projecting out tuples from a previous scan * Check to see if we're still projecting out tuples from a previous scan
...@@ -148,7 +152,6 @@ ExecScan(ScanState *node, ...@@ -148,7 +152,6 @@ ExecScan(ScanState *node,
* storage allocated in the previous tuple cycle. Note this can't happen * storage allocated in the previous tuple cycle. Note this can't happen
* until we're done projecting out tuples from a scan tuple. * until we're done projecting out tuples from a scan tuple.
*/ */
econtext = node->ps.ps_ExprContext;
ResetExprContext(econtext); ResetExprContext(econtext);
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment