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
