aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execQual.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execQual.c')
-rw-r--r--src/backend/executor/execQual.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index 4ea0cbadadb..494208a0320 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -1801,12 +1801,20 @@ restart:
pgstat_end_function_usage(&fcusage,
rsinfo.isDone != ExprMultipleResult);
}
- else
+ else if (fcache->func.fn_retset)
{
+ /* for a strict SRF, result for NULL is an empty set */
result = (Datum) 0;
*isNull = true;
*isDone = ExprEndResult;
}
+ else
+ {
+ /* for a strict non-SRF, result for NULL is a NULL */
+ result = (Datum) 0;
+ *isNull = true;
+ *isDone = ExprSingleResult;
+ }
/* Which protocol does function want to use? */
if (rsinfo.returnMode == SFRM_ValuePerCall)