* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* 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 $
*
*********************************************************************
*/
else
PLy_restart_in_progress += 1;
if (proc)
- {
Py_DECREF(proc->me);
- }
RERAISE_EXC();
}
*
* FIXME -- leaks saved plan on object destruction. can this be
* 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)
PLy_free(ob->types);
PyList_SetItem(result->rows, i, row);
}
PLy_typeinfo_dealloc(&args);
-
- SPI_freetuptable(tuptable);
}
RESTORE_EXC();
}
* ENHANCEMENTS, OR MODIFICATIONS.
*
* 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 $
*
**********************************************************************/
pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc);
sprintf(buf, "%d", ntuples);
Tcl_SetResult(interp, buf, TCL_VOLATILE);
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_OK;
}
continue;
if (loop_rc == TCL_RETURN)
{
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_RETURN;
}
if (loop_rc == TCL_BREAK)
break;
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_ERROR;
}
- SPI_freetuptable(SPI_tuptable);
-
/************************************************************
* Finally return the number of tuples
************************************************************/
{
if (ntuples > 0)
pltcl_set_tuple_values(interp, arrayname, 0, tuples[0], tupdesc);
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
sprintf(buf, "%d", ntuples);
Tcl_SetResult(interp, buf, TCL_VOLATILE);
continue;
if (loop_rc == TCL_RETURN)
{
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_RETURN;
}
if (loop_rc == TCL_BREAK)
break;
- SPI_freetuptable(SPI_tuptable);
memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
return TCL_ERROR;
}
- SPI_freetuptable(SPI_tuptable);
-
/************************************************************
* Finally return the number of tuples
************************************************************/