From: | Joe Conway <mail(at)joeconway(dot)com> |
---|---|
To: | Anderson Carniel <accarniel(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Losing memory references - SRF + SPI |
Date: | 2016-05-14 15:19:33 |
Message-ID: | 57374205.9060209@joeconway.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 05/13/2016 09:35 PM, Anderson Carniel wrote:
> I am writing a function that returns a set of tuples by using also the
> PostGIS. Thuis, I am using SRF too. It successfully returns the expected
> result when it has at most 4 tuples. However, this is not the case when
> more than 4 tuples have to be returned. When I debug the code, I found
> that the problem is in my function that transforms a cstring after a
> SPI_connection. It seems that this cstring is not valid anymore in the
> moment of this conversion (see my comment below). I know that the SPI
> uses different contexts when it init and finish its process. But, I
> don't understand why I have this problem here. Please, note that I tried
> to copy the values of the whole tuple, but I have the same problem:
> system crash after the forth call of the function. Also note that I call
> this function only in the init call of the SRF. Please I would
> appreciate any suggestion and help.
You probably need to allocate your returned values in a per query memory
context. Take a look at how it is done in, for example, crosstab() in
contrib/tablefunc.
HTH,
Joe
--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development
From | Date | Subject | |
---|---|---|---|
Next Message | Fabien COELHO | 2016-05-14 16:49:27 | Re: Perf Benchmarking and regression. |
Previous Message | Joshua D. Drake | 2016-05-14 14:23:41 | Re: 10.0 |