Re: Questions about the internal of fastpath function call - Mailing list pgsql-hackers

From lee Richard
Subject Re: Questions about the internal of fastpath function call
Date
Msg-id BANLkTik61xQBrT0_d_DVevcSug6C5K=FyQ@mail.gmail.com
Whole thread Raw
In response to Re: Questions about the internal of fastpath function call  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom,<br /><br />Thanks a lot.<br /><br />The part I cant understand is I cant see where SendFunctionResult construct
thereturn 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:<br /><br /><pre class="fragment">00159             <a class="code"
href="http://doxygen.postgresql.org/lsyscache_8c.html#48d637426d06bfdf607eb29da3be558a">getTypeOutputInfo</a>(<a
class="code"href="http://doxygen.postgresql.org/structfp__info.html#2b1f02caad79fae010cdc5836a2fcb83">rettype</a>,
&typoutput,&typisvarlena); 
<a name="l00160"></a>00160             outputstr = <a class="code"
href="http://doxygen.postgresql.org/fmgr_8c.html#9b747dd35f098ab369b44e94f4708210">OidOutputFunctionCall</a>(typoutput,
retval);
<a name="l00161"></a>00161             <a class="code"
href="http://doxygen.postgresql.org/pqformat_8c.html#e6acc43bbc9bee686de201de82a26db5">pq_sendcountedtext</a>(&buf,
outputstr,strlen(outputstr), <span class="keyword">false</span>); 
<a name="l00162"></a>00162             <a class="code"
href="http://doxygen.postgresql.org/mcxt_8c.html#4de9741ca04b2f01a82d3de16a1d6bf2">pfree</a>(outputstr);</pre>Ithink it
shouldcopy the real result in OidOutputFunctionCall, but unfortunately I can only find it call FunctionCall1() again.
DoI miss something?<br /><br />If I copy the tuples returnned from pl module here, is it possible to send a vector
resultfrom fastpath function call?<br /><br /><div class="gmail_quote">2011/5/9 Tom Lane <span dir="ltr"><<a
href="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</a>></span><br/><blockquote class="gmail_quote" style="margin:0 0
0.8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">lee Richard <<a
href="mailto:clipper.kenyon@gmail.com">clipper.kenyon@gmail.com</a>>writes:<br /> > I still can not see how it
returna single return value to the client, and<br /> > why it call FunctionCall1() again when it want to send the
result.<br/><br /></div>pq_endmessage is where the bytes actually get pushed out to the client,<br /> if that's what
you'relooking for.  The rest of the activity in<br /> SendFunctionResult is just concerned with constructing the
messageto be<br /> sent within "buf".<br /><br />                        regards, tom lane<br /></blockquote></div><br
/>

pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: XML with invalid chars
Next
From: Tom Lane
Date:
Subject: "make check" in src/test/isolation is unworkable