Back out /pl memory leak patch. Wait for new version.

This commit is contained in:
Bruce Momjian 2002-09-26 05:39:03 +00:00
parent ff5d4cbfca
commit 72f8efdc98
4 changed files with 4 additions and 25 deletions

View File

@ -29,7 +29,7 @@ SELECT global_test_two();
(1 row) (1 row)
SELECT import_fail(); SELECT import_fail();
NOTICE: ('import socket failed -- untrusted dynamic module: _socket',) WARNING: ('import socket failed -- untrusted dynamic module: _socket',)
import_fail import_fail
-------------------- --------------------
failed as expected failed as expected

View File

@ -29,7 +29,7 @@
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.23 2002/09/26 05:23:26 momjian Exp $ * $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.24 2002/09/26 05:39:03 momjian Exp $
* *
********************************************************************* *********************************************************************
*/ */
@ -408,9 +408,7 @@ plpython_call_handler(PG_FUNCTION_ARGS)
else else
PLy_restart_in_progress += 1; PLy_restart_in_progress += 1;
if (proc) if (proc)
{
Py_DECREF(proc->me); Py_DECREF(proc->me);
}
RERAISE_EXC(); RERAISE_EXC();
} }
@ -1843,14 +1841,7 @@ PLy_plan_dealloc(PyObject * arg)
* *
* FIXME -- leaks saved plan on object destruction. can this be * FIXME -- leaks saved plan on object destruction. can this be
* avoided? * avoided?
* I think so. A function prepares and then execp's a statement.
* When we come to deallocate the 'statement' object we obviously
* no long need the plan. Even if we did, without the object
* we're never going to be able to use it again.
* In the against arguments: SPI_saveplan has stuck this under
* the top context so there must be a reason for doing that.
*/ */
pfree(ob->plan);
} }
if (ob->types) if (ob->types)
PLy_free(ob->types); PLy_free(ob->types);
@ -2383,8 +2374,6 @@ PLy_spi_execute_fetch_result(SPITupleTable *tuptable, int rows, int status)
PyList_SetItem(result->rows, i, row); PyList_SetItem(result->rows, i, row);
} }
PLy_typeinfo_dealloc(&args); PLy_typeinfo_dealloc(&args);
SPI_freetuptable(tuptable);
} }
RESTORE_EXC(); RESTORE_EXC();
} }

View File

@ -20,7 +20,7 @@ CREATE TABLE taxonomy (
CREATE TABLE entry ( CREATE TABLE entry (
accession text not null primary key, accession text not null primary key,
eid serial unique, eid serial,
txid int2 not null references taxonomy(id) txid int2 not null references taxonomy(id)
) ; ) ;

View File

@ -31,7 +31,7 @@
* ENHANCEMENTS, OR MODIFICATIONS. * ENHANCEMENTS, OR MODIFICATIONS.
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.63 2002/09/26 05:23:26 momjian Exp $ * $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.64 2002/09/26 05:39:03 momjian Exp $
* *
**********************************************************************/ **********************************************************************/
@ -1647,7 +1647,6 @@ pltcl_SPI_exec(ClientData cdata, Tcl_Interp *interp,
pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc); pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc);
sprintf(buf, "%d", ntuples); sprintf(buf, "%d", ntuples);
Tcl_SetResult(interp, buf, TCL_VOLATILE); Tcl_SetResult(interp, buf, TCL_VOLATILE);
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_OK; return TCL_OK;
} }
@ -1669,19 +1668,15 @@ pltcl_SPI_exec(ClientData cdata, Tcl_Interp *interp,
continue; continue;
if (loop_rc == TCL_RETURN) if (loop_rc == TCL_RETURN)
{ {
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_RETURN; return TCL_RETURN;
} }
if (loop_rc == TCL_BREAK) if (loop_rc == TCL_BREAK)
break; break;
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_ERROR; return TCL_ERROR;
} }
SPI_freetuptable(SPI_tuptable);
/************************************************************ /************************************************************
* Finally return the number of tuples * Finally return the number of tuples
************************************************************/ ************************************************************/
@ -2212,7 +2207,6 @@ pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
{ {
if (ntuples > 0) if (ntuples > 0)
pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc); pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc);
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
sprintf(buf, "%d", ntuples); sprintf(buf, "%d", ntuples);
Tcl_SetResult(interp, buf, TCL_VOLATILE); Tcl_SetResult(interp, buf, TCL_VOLATILE);
@ -2235,19 +2229,15 @@ pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
continue; continue;
if (loop_rc == TCL_RETURN) if (loop_rc == TCL_RETURN)
{ {
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_RETURN; return TCL_RETURN;
} }
if (loop_rc == TCL_BREAK) if (loop_rc == TCL_BREAK)
break; break;
SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_ERROR; return TCL_ERROR;
} }
SPI_freetuptable(SPI_tuptable);
/************************************************************ /************************************************************
* Finally return the number of tuples * Finally return the number of tuples
************************************************************/ ************************************************************/