Re: Python setof patch - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Python setof patch
Date
Msg-id 200507051816.j65IGCT13420@candle.pha.pa.us
Whole thread Raw
In response to Re: Python setof patch  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-patches
OK, patch backed out, new and regression file removed.

---------------------------------------------------------------------------

Andrew Dunstan wrote:
>
>
> Michael Fuhr wrote:
>
> >On Tue, Jul 05, 2005 at 01:14:25PM -0400, Tom Lane wrote:
> >
> >
> >>Aside from minor problems like being broken and undocumented, there is a
> >>more serious question here: is this even the functionality we want?
> >>
> >>
> >
> >I'd rather see something akin to PL/pgSQL's RETURN NEXT or PL/Perl's
> >return_next.
> >
> >
> >
>
> Agreed. My rudimentary testing shows that plperl's shiny new return_next
> functionality not only avoids memory blowup but has a 40% speed
> improvement over the old 'return the lot at once' API.
>
> cheers
>
> andrew
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/pl/plpython/plpython.c
===================================================================
RCS file: /cvsroot/pgsql/src/pl/plpython/plpython.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -c -r1.62 -r1.63
*** src/pl/plpython/plpython.c    6 May 2005 17:24:55 -0000    1.62
--- src/pl/plpython/plpython.c    4 Jul 2005 18:59:42 -0000    1.63
***************
*** 29,35 ****
   * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
   *
   * IDENTIFICATION
!  *    $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.62 2005/05/06 17:24:55 tgl Exp $
   *
   *********************************************************************
   */
--- 29,35 ----
   * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
   *
   * IDENTIFICATION
!  *    $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.63 2005/07/04 18:59:42 momjian Exp $
   *
   *********************************************************************
   */
***************
*** 286,291 ****
--- 286,294 ----
  static PyObject *PLy_exc_fatal = NULL;
  static PyObject *PLy_exc_spi_error = NULL;

+ /* End-of-set Indication */
+ static PyObject *PLy_endofset = NULL;
+
  /* some globals for the python module
   */
  static char PLy_plan_doc[] = {
***************
*** 770,775 ****
--- 773,788 ----
              fcinfo->isnull = true;
              rv = (Datum) NULL;
          }
+         /* test for end-of-set condition */
+         else if (fcinfo->flinfo->fn_retset && plrv == PLy_endofset)
+         {
+            ReturnSetInfo *rsi;
+
+            fcinfo->isnull = true;
+            rv = (Datum)NULL;
+            rsi = (ReturnSetInfo *)fcinfo->resultinfo;
+            rsi->isDone = ExprEndResult;
+         }
          else
          {
              fcinfo->isnull = false;
***************
*** 2317,2325 ****
--- 2330,2340 ----
      PLy_exc_error = PyErr_NewException("plpy.Error", NULL, NULL);
      PLy_exc_fatal = PyErr_NewException("plpy.Fatal", NULL, NULL);
      PLy_exc_spi_error = PyErr_NewException("plpy.SPIError", NULL, NULL);
+     PLy_endofset = PyErr_NewException("plpy.EndOfSet",NULL,NULL);
      PyDict_SetItemString(plpy_dict, "Error", PLy_exc_error);
      PyDict_SetItemString(plpy_dict, "Fatal", PLy_exc_fatal);
      PyDict_SetItemString(plpy_dict, "SPIError", PLy_exc_spi_error);
+     PyDict_SetItemString(plpy_dict, "EndOfSet", PLy_endofset);

      /*
       * initialize main module, and add plpy

pgsql-patches by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: Python setof patch
Next
From: Bruce Momjian
Date:
Subject: Re: Autovacuum integration patch