提交 38d9919d 编写于 作者: T Tom Lane

Now that fastpath protocol allows null arguments to be passed,

fastpath.c had better check for strict functions.
上级 0ac6298b
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.63 2003/05/09 18:08:48 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.64 2003/05/09 18:18:54 tgl Exp $
*
* NOTES
* This cruft is the server side of PQfn.
......@@ -273,6 +273,7 @@ HandleFunctionRequest(StringInfo msgBuf)
Datum retval;
struct fp_info my_fp;
struct fp_info *fip;
bool callit;
/*
* Read message contents if not already done.
......@@ -341,8 +342,34 @@ HandleFunctionRequest(StringInfo msgBuf)
/* Verify we reached the end of the message where expected. */
pq_getmsgend(msgBuf);
/* Okay, do it ... */
retval = FunctionCallInvoke(&fcinfo);
/*
* If func is strict, must not call it for null args.
*/
callit = true;
if (fip->flinfo.fn_strict)
{
int i;
for (i = 0; i < fcinfo.nargs; i++)
{
if (fcinfo.argnull[i])
{
callit = false;
break;
}
}
}
if (callit)
{
/* Okay, do it ... */
retval = FunctionCallInvoke(&fcinfo);
}
else
{
fcinfo.isnull = true;
retval = (Datum) 0;
}
SendFunctionResult(retval, fcinfo.isnull, fip->rettype, rformat);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册