Re: c-function returns multiple rows
| От | Tom Lane |
|---|---|
| Тема | Re: c-function returns multiple rows |
| Дата | |
| Msg-id | 8918.1061560348@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | c-function returns multiple rows (Kirill Krasnosselov <kirill@digicol.de>) |
| Ответы |
Re: c-function returns multiple rows
|
| Список | pgsql-novice |
Kirill Krasnosselov <kirill@digicol.de> writes:
> PG_FUNCTION_INFO_V1(dc_ftx);
> Datum
> dc_ftx(PG_FUNCTION_ARGS)
> { ReturnSetInfo* rsi = (ReturnSetInfo *)fcinfo->resultinfo;
> rsi->isDone = ExprEndResult;
> PG_RETURN_NULL();
> }
This looks like it should work, but you're living dangerously
by not checking that you're being called the way you expect.
You should have something like
if (!fcinfo->resultinfo || !IsA(fcinfo->resultinfo,ReturnSetInfo))
elog(ERROR, ...);
in there before trying to dereference the pointer.
> In my opinion this function call shall returns a empty table,
> but this call does not end.
Try attaching to the backend with a debugger to see what it's doing.
regards, tom lane
В списке pgsql-novice по дате отправления: