_SPI_cursor_operation forgot to check for failure return from
authorTom Lane <[email protected]>
Tue, 23 Sep 2003 15:11:41 +0000 (15:11 +0000)
committerTom Lane <[email protected]>
Tue, 23 Sep 2003 15:11:41 +0000 (15:11 +0000)
_SPI_begin_call.  Per gripe from Tomasz Myrta.

src/backend/executor/spi.c

index b20d85204fa3609298c127e3f027d2d9721fe7a3..6cbd7f815c6bfed9c500b3ef4dec8c02f8516fe0 100644 (file)
@@ -1387,7 +1387,8 @@ _SPI_cursor_operation(Portal portal, bool forward, int count,
                elog(ERROR, "invalid portal in SPI cursor operation");
 
        /* Push the SPI stack */
-       _SPI_begin_call(true);
+       if (_SPI_begin_call(true) < 0)
+               elog(ERROR, "SPI cursor operation called while not connected");
 
        /* Reset the SPI result */
        SPI_processed = 0;
@@ -1468,8 +1469,7 @@ _SPI_procmem()
 }
 
 /*
- * _SPI_begin_call
- *
+ * _SPI_begin_call: begin a SPI operation within a connected procedure
  */
 static int
 _SPI_begin_call(bool execmem)
@@ -1486,6 +1486,11 @@ _SPI_begin_call(bool execmem)
        return 0;
 }
 
+/*
+ * _SPI_end_call: end a SPI operation within a connected procedure
+ *
+ * Note: this currently has no failure return cases, so callers don't check
+ */
 static int
 _SPI_end_call(bool procmem)
 {