Tom,

Thanks a lot.

The part I cant understand is I cant see where SendFunctionResult construct
the return value into the buf. I expect it should copy something in retval
to buf, but I cant find any of this in the code, the main logic of
SendFunctionResult is:

00159             getTypeOutputInfo
<http://doxygen.postgresql.org/lsyscache_8c.html#48d637426d06bfdf607eb29da3be558a>(rettype
<http://doxygen.postgresql.org/structfp__info.html#2b1f02caad79fae010cdc5836a2fcb83>,
&typoutput, &typisvarlena);00160             outputstr =
OidOutputFunctionCall
<http://doxygen.postgresql.org/fmgr_8c.html#9b747dd35f098ab369b44e94f4708210>(typoutput,
retval);00161             pq_sendcountedtext
<http://doxygen.postgresql.org/pqformat_8c.html#e6acc43bbc9bee686de201de82a26db5>(&buf,
outputstr, strlen(outputstr), false);00162             pfree
<http://doxygen.postgresql.org/mcxt_8c.html#4de9741ca04b2f01a82d3de16a1d6bf2>(outputstr);

I think it should copy the real result in OidOutputFunctionCall, but
unfortunately I can only find it call FunctionCall1() again. Do I miss
something?

If I copy the tuples returnned from pl module here, is it possible to send a
vector result from fastpath function call?

2011/5/9 Tom Lane <t...@sss.pgh.pa.us>

> lee Richard <clipper.ken...@gmail.com> writes:
> > I still can not see how it return a single return value to the client,
> and
> > why it call FunctionCall1() again when it want to send the result.
>
> pq_endmessage is where the bytes actually get pushed out to the client,
> if that's what you're looking for.  The rest of the activity in
> SendFunctionResult is just concerned with constructing the message to be
> sent within "buf".
>
>                        regards, tom lane
>

Reply via email to