Re: BUG #5883: Error when mixing SPI_returntuple with returning regular HeapTuple
От | Vegard Bønes |
---|---|
Тема | Re: BUG #5883: Error when mixing SPI_returntuple with returning regular HeapTuple |
Дата | |
Msg-id | 87288500.70191.1297755784580.JavaMail.root@imap1b обсуждение исходный текст |
Ответ на | Re: BUG #5883: Error when mixing SPI_returntuple with returning regular HeapTuple (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: BUG #5883: Error when mixing SPI_returntuple with
returning regular HeapTuple
|
Список | pgsql-bugs |
Ok, I tried to modify the example functions get_data_alternative_a() and get_data_alternative_b(), so that they start withSPI_connect, and end with SPI_finish. Also I removed SPI_connect and SPI_finish from the main function. As I understandyou, that should have solved the problem. The result, however, is exactly the same as before. Please keep in mind that I can call either alternative a or alternative b as many times as I wish during the same sql functioncall, but I can not mix them. VG ----- Original Message ----- Fra: "Tom Lane" <tgl@sss.pgh.pa.us> Til: "vegard bones" <vegard.bones@met.no> Kopi: pgsql-bugs@postgresql.org Sendt: 14. februar 2011 17:39:07 Emne: Re: [BUGS] BUG #5883: Error when mixing SPI_returntuple with returning regular HeapTuple "" <vegard.bones@met.no> writes: > When creating a server-side C function, things go wrong when I (in the same > function) return some results via SPI_returntuple, and other results by > manually creating HeapTuples. This applies even if the source for both > returns are the same data in the same table. I think the part of this example that doesn't work is returning from the function without having exited your SPI context. If you need to produce multiple rows from a single SPI query, the best solution is to collect them all during a single call and return them in a tuplestore. You can *not* return without having called SPI_finish to balance your SPI_connect. regards, tom lane
В списке pgsql-bugs по дате отправления: