pgsql: Index: src/pl/plpython/plpython.c

From: neilc(at)postgresql(dot)org (Neil Conway)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Index: src/pl/plpython/plpython.c
Date: 2005-12-29 21:47:49
Message-ID: 20051229214749.BF7DB9DCA11@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Index: src/pl/plpython/plpython.c
===================================================================
RCS file: /Users/neilc/postgres/cvs_root/pgsql/src/pl/plpython/plpython.c,v
retrieving revision 1.67
diff -c -r1.67 plpython.c
*** src/pl/plpython/plpython.c 26 Dec 2005 04:28:48 -0000 1.67
--- src/pl/plpython/plpython.c 29 Dec 2005 16:54:57 -0000
***************
*** 2,8 ****
* plpython.c - python as a procedural language for PostgreSQL
*
* This software is copyright by Andrew Bosma
! * but is really shameless cribbed from pltcl.c by Jan Weick, and
* plperl.c by Mark Hollomon.
*
* The author hereby grants permission to use, copy, modify,
--- 2,8 ----
* plpython.c - python as a procedural language for PostgreSQL
*
* This software is copyright by Andrew Bosma
! * but is really shamelessly cribbed from pltcl.c by Jan Wieck, and
* plperl.c by Mark Hollomon.
*
* The author hereby grants permission to use, copy, modify,
***************
*** 1996,2002 ****
int i,
rv;
PLyPlanObject *plan;
- char *nulls;
MemoryContext oldcontext;

if (list != NULL)
--- 1996,2001 ----
***************
*** 2018,2024 ****
if (nargs != plan->nargs)
{
char *sv;
-
PyObject *so = PyObject_Str(list);

if (!so)
--- 2017,2022 ----
***************
*** 2036,2048 ****
oldcontext = CurrentMemoryContext;
PG_TRY();
{
! nulls = palloc(nargs * sizeof(char));

for (i = 0; i < nargs; i++)
{
PyObject *elem,
*so;
- char *sv;

elem = PySequence_GetItem(list, i);
if (elem != Py_None)
--- 2034,2045 ----
oldcontext = CurrentMemoryContext;
PG_TRY();
{
! char *nulls = palloc(nargs * sizeof(char));

for (i = 0; i < nargs; i++)
{
PyObject *elem,
*so;

elem = PySequence_GetItem(list, i);
if (elem != Py_None)
***************
*** 2051,2070 ****
if (!so)
PLy_elog(ERROR, "function \"%s\" could not execute plan",
PLy_procedure_name(PLy_curr_procedure));
! sv = PyString_AsString(so);

! /*
! * FIXME -- if this elogs, we have Python reference leak
! */
! plan->values[i] =
! FunctionCall3(&(plan->args[i].out.d.typfunc),
! CStringGetDatum(sv),
! ObjectIdGetDatum(plan->args[i].out.d.typioparam),
! Int32GetDatum(-1));

! Py_DECREF(so);
! Py_DECREF(elem);

nulls[i] = ' ';
}
else
--- 2048,2073 ----
if (!so)
PLy_elog(ERROR, "function \"%s\" could not execute plan",
PLy_procedure_name(PLy_curr_procedure));
! Py_DECREF(elem);

! PG_TRY();
! {
! char *sv = PyString_AsString(so);

! plan->values[i] =
! FunctionCall3(&(plan->args[i].out.d.typfunc),
! CStringGetDatum(sv),
! ObjectIdGetDatum(plan->args[i].out.d.typioparam),
! Int32GetDatum(-1));
! }
! PG_CATCH();
! {
! Py_DECREF(so);
! PG_RE_THROW();
! }
! PG_END_TRY();

+ Py_DECREF(so);
nulls[i] = ' ';
}
else

Tags:
----
REL8_0_STABLE

Modified Files:
--------------
pgsql/src/pl/plpython:
plpython.c (r1.58.4.2 -> r1.58.4.3)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpython/plpython.c.diff?r1=1.58.4.2&r2=1.58.4.3)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Neil Conway 2005-12-29 21:54:55 Re: pgsql: Index: src/pl/plpython/plpython.c
Previous Message Neil Conway 2005-12-29 21:47:40 pgsql: Index: src/pl/plpython/plpython.c