Thread: Patch to fix memory leak in fetch in Python interface.
This stops the interface from leaking the row tuples (and thus the results of every fetch). Stephen --- pgmodule.c Wed Oct 17 17:07:05 2001 +++ pgmodule.c.orig Thu Oct 18 08:39:52 2001 @@ -561,11 +561,11 @@ } else str = PyString_FromString(PQgetvalue(self->last_result, self->current_row, j)); - PyTuple_SET_ITEM(rowtuple, j, str); + Py_DECREF(str); + PyTuple_SET_ITEM(rowtuple, j, Py_None); } PyList_Append(reslist, rowtuple); - Py_DECREF(rowtuple); self->current_row++; }
Attachment
On Thu, 2001-10-18 at 08:46, Stephen Robert Norris wrote: > This stops the interface from leaking the row tuples (and thus the > results of every fetch). > > Stephen Of course, I screwed up the patch. This one is actually correct, I think: --- /root/pgmodule.c Thu Oct 18 08:47:02 2001 +++ pgmodule.c Thu Oct 18 08:47:25 2001 @@ -566,6 +566,7 @@ } PyList_Append(reslist, rowtuple); + Py_DECREF(rowtuple); self->current_row++; }
Attachment
Your patch has been added to the PostgreSQL unapplied patches list at: http://candle.pha.pa.us/cgi-bin/pgpatches I will try to apply it within the next 48 hours. --------------------------------------------------------------------------- Checking application/pgp-signature: FAILURE -- Start of PGP signed section. > This stops the interface from leaking the row tuples (and thus the > results of every fetch). > > Stephen > > --- pgmodule.c Wed Oct 17 17:07:05 2001 > +++ pgmodule.c.orig Thu Oct 18 08:39:52 2001 > @@ -561,11 +561,11 @@ > } > else > str = PyString_FromString(PQgetvalue(self->last_result, > self->current_row, j)); > - PyTuple_SET_ITEM(rowtuple, j, str); > + Py_DECREF(str); > + PyTuple_SET_ITEM(rowtuple, j, Py_None); > } > > PyList_Append(reslist, rowtuple); > - Py_DECREF(rowtuple); > self->current_row++; > } > -- End of PGP section, PGP failed! -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Previous version removed. Your patch has been added to the PostgreSQL unapplied patches list at: http://candle.pha.pa.us/cgi-bin/pgpatches I will try to apply it within the next 48 hours. --------------------------------------------------------------------------- Checking application/pgp-signature: FAILURE -- Start of PGP signed section. > On Thu, 2001-10-18 at 08:46, Stephen Robert Norris wrote: > > This stops the interface from leaking the row tuples (and thus the > > results of every fetch). > > > > Stephen > > Of course, I screwed up the patch. This one is actually correct, I > think: > > --- /root/pgmodule.c Thu Oct 18 08:47:02 2001 > +++ pgmodule.c Thu Oct 18 08:47:25 2001 > @@ -566,6 +566,7 @@ > } > > PyList_Append(reslist, rowtuple); > + Py_DECREF(rowtuple); > self->current_row++; > } > -- End of PGP section, PGP failed! -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
On Thu, Oct 18, 2001 at 08:56:47AM +1000, Stephen Robert Norris wrote: > On Thu, 2001-10-18 at 08:46, Stephen Robert Norris wrote: > > This stops the interface from leaking the row tuples (and thus the > > results of every fetch). > > > > Stephen > > Of course, I screwed up the patch. This one is actually correct, I > think: > > [patch snipped] Yes, that one is correct. Gerhard -- mail: gerhard <at> bigfoot <dot> de registered Linux user #64239 web: http://www.cs.fhm.edu/~ifw00065/ OpenPGP public key id 86AB43C0 public key fingerprint: DEC1 1D02 5743 1159 CD20 A4B6 7B22 6575 86AB 43C0 reduce(lambda x,y:x+y,map(lambda x:chr(ord(x)^42),tuple('zS^BED\nX_FOY\x0b')))
Patch applied. Thanks. --------------------------------------------------------------------------- Checking application/pgp-signature: FAILURE -- Start of PGP signed section. > On Thu, 2001-10-18 at 08:46, Stephen Robert Norris wrote: > > This stops the interface from leaking the row tuples (and thus the > > results of every fetch). > > > > Stephen > > Of course, I screwed up the patch. This one is actually correct, I > think: > > --- /root/pgmodule.c Thu Oct 18 08:47:02 2001 > +++ pgmodule.c Thu Oct 18 08:47:25 2001 > @@ -566,6 +566,7 @@ > } > > PyList_Append(reslist, rowtuple); > + Py_DECREF(rowtuple); > self->current_row++; > } > -- End of PGP section, PGP failed! -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026