*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.173 2005/03/16 21:38:06 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.174 2005/03/22 20:13:06 tgl Exp $
*
*-------------------------------------------------------------------------
*/
if (!fcache->setArgsValid)
{
/* Need to prep callinfo structure */
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.flinfo = &(fcache->func);
+ InitFunctionCallInfoData(fcinfo, &(fcache->func), 0, NULL, NULL);
argDone = ExecEvalFuncArgs(&fcinfo, arguments, econtext);
if (argDone == ExprEndResult)
{
if (isDone)
*isDone = ExprSingleResult;
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.flinfo = &(fcache->func);
-
/* inlined, simplified version of ExecEvalFuncArgs */
i = 0;
foreach(arg, fcache->args)
errmsg("set-valued function called in context that cannot accept a set")));
i++;
}
- fcinfo.nargs = i;
+
+ InitFunctionCallInfoData(fcinfo, &(fcache->func), i, NULL, NULL);
/*
* If function is strict, and there are any NULL arguments, skip
}
}
}
- /* fcinfo.isnull = false; */ /* handled by MemSet */
+ /* fcinfo.isnull = false; */ /* handled by InitFunctionCallInfoData */
result = FunctionCallInvoke(&fcinfo);
*isNull = fcinfo.isnull;
* doesn't actually get to see the resultinfo, but set it up anyway
* because we use some of the fields as our own state variables.
*/
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.resultinfo = (Node *) &rsinfo;
+ InitFunctionCallInfoData(fcinfo, NULL, 0, NULL, (Node *) &rsinfo);
rsinfo.type = T_ReturnSetInfo;
rsinfo.econtext = econtext;
rsinfo.expectedDesc = expectedDesc;
argList = fcache->args;
/* Need to prep callinfo structure */
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.flinfo = &(fcache->func);
+ InitFunctionCallInfoData(fcinfo, &(fcache->func), 0, NULL, NULL);
argDone = ExecEvalFuncArgs(&fcinfo, argList, econtext);
if (argDone != ExprSingleResult)
ereport(ERROR,
}
/* Need to prep callinfo structure */
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.flinfo = &(sstate->fxprstate.func);
+ InitFunctionCallInfoData(fcinfo, &(sstate->fxprstate.func), 0, NULL, NULL);
argDone = ExecEvalFuncArgs(&fcinfo, sstate->fxprstate.args, econtext);
if (argDone != ExprSingleResult)
ereport(ERROR,
argList = nullIfExpr->args;
/* Need to prep callinfo structure */
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- fcinfo.flinfo = &(nullIfExpr->func);
+ InitFunctionCallInfoData(fcinfo, &(nullIfExpr->func), 0, NULL, NULL);
argDone = ExecEvalFuncArgs(&fcinfo, argList, econtext);
if (argDone != ExprSingleResult)
ereport(ERROR,
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.89 2005/02/02 22:40:03 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.90 2005/03/22 20:13:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
*-------------------------------------------------------------------------
*/
-/*
- * This macro initializes all the fields of a FunctionCallInfoData except
- * for the arg[] and argnull[] arrays. Performance testing has shown that
- * the fastest way to set up argnull[] for small numbers of arguments is to
- * explicitly set each required element to false, so we don't try to zero
- * out the argnull[] array in the macro.
- */
-#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs) \
- do { \
- (Fcinfo).flinfo = (Flinfo); \
- (Fcinfo).context = NULL; \
- (Fcinfo).resultinfo = NULL; \
- (Fcinfo).isnull = false; \
- (Fcinfo).nargs = (Nargs); \
- } while (0)
-
-
/*
* These are for invocation of a specifically named function with a
* directly-computed parameter list. Note that neither arguments nor result
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 1);
+ InitFunctionCallInfoData(fcinfo, NULL, 1, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.argnull[0] = false;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 2);
+ InitFunctionCallInfoData(fcinfo, NULL, 2, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 3);
+ InitFunctionCallInfoData(fcinfo, NULL, 3, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 4);
+ InitFunctionCallInfoData(fcinfo, NULL, 4, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 5);
+ InitFunctionCallInfoData(fcinfo, NULL, 5, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 6);
+ InitFunctionCallInfoData(fcinfo, NULL, 6, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 7);
+ InitFunctionCallInfoData(fcinfo, NULL, 7, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 8);
+ InitFunctionCallInfoData(fcinfo, NULL, 8, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, NULL, 9);
+ InitFunctionCallInfoData(fcinfo, NULL, 9, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 1);
+ InitFunctionCallInfoData(fcinfo, flinfo, 1, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.argnull[0] = false;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 2);
+ InitFunctionCallInfoData(fcinfo, flinfo, 2, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 3);
+ InitFunctionCallInfoData(fcinfo, flinfo, 3, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 4);
+ InitFunctionCallInfoData(fcinfo, flinfo, 4, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 5);
+ InitFunctionCallInfoData(fcinfo, flinfo, 5, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 6);
+ InitFunctionCallInfoData(fcinfo, flinfo, 6, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 7);
+ InitFunctionCallInfoData(fcinfo, flinfo, 7, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 8);
+ InitFunctionCallInfoData(fcinfo, flinfo, 8, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
FunctionCallInfoData fcinfo;
Datum result;
- InitFunctionCallInfoData(fcinfo, flinfo, 9);
+ InitFunctionCallInfoData(fcinfo, flinfo, 9, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 1);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 1, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.argnull[0] = false;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 2);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 2, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 3);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 3, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 4);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 4, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 5);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 5, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 6);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 6, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 7);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 7, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 8);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 8, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;
fmgr_info(functionId, &flinfo);
- InitFunctionCallInfoData(fcinfo, &flinfo, 9);
+ InitFunctionCallInfoData(fcinfo, &flinfo, 9, NULL, NULL);
fcinfo.arg[0] = arg1;
fcinfo.arg[1] = arg2;