| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Atri Sharma <atri(dot)jiit(at)gmail(dot)com> |
| Cc: | Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: ExecStoreTuple going into infinite loop |
| Date: | 2012-06-06 14:11:42 |
| Message-ID: | 10308.1338991902@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Atri Sharma <atri(dot)jiit(at)gmail(dot)com> writes:
> Hi all,
> I am trying to build and store multiple tuples.The code is:
> ExecClearTuple(slot);
> /The code for fetching the data from which tuple will be formed../
> for(;x<y;x++){
> tuple = BuildTupleFromCStrings(TupleDescGetAttInMetadata(node->ss.ss_currentRelation->rd_att),
> values);
> ExecStoreTuple(tuple, slot, InvalidBuffer, false);
> }
> return (slot);
> When I am including the ExecClearTuple(slot),the result only includes
> the last tuple that was built.
I am not sure why you find this surprising. A tuple slot can only hold
one tuple.
If you're trying to build a set-returning function, you need a
tuplestore not a tuple slot. Or else restructure the code to return
each tuple as it's built. Look at existing SRFs for examples.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Florian Pflug | 2012-06-06 14:16:00 | Re: Ability to listen on two unix sockets |
| Previous Message | Honza Horak | 2012-06-06 13:50:56 | Ability to listen on two unix sockets |