summaryrefslogtreecommitdiff
path: root/src/backend/executor/spi.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-08-12 02:52:06 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-08-12 02:52:06 +0000
commit7a3e30e608a25800a1f7fdfaaca4da3f0ac0fb07 (patch)
tree215adabe95d76123f6120fc22e4b51b5a1baf4cd /src/backend/executor/spi.c
parent5c9e9c0c42904648af5a03fe90db8050e31d603f (diff)
Add INSERT/UPDATE/DELETE RETURNING, with basic docs and regression tests.
plpgsql support to come later. Along the way, convert execMain's SELECT INTO support into a DestReceiver, in order to eliminate some ugly special cases. Jonah Harris and Tom Lane
Diffstat (limited to 'src/backend/executor/spi.c')
-rw-r--r--src/backend/executor/spi.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 93394e2fa10..c1f39f7c4f7 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.153 2006/08/08 01:23:15 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.154 2006/08/12 02:52:04 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -955,6 +955,7 @@ SPI_cursor_open(const char *name, void *plan,
PortalStart(portal, paramLI, snapshot);
Assert(portal->strategy == PORTAL_ONE_SELECT ||
+ portal->strategy == PORTAL_ONE_RETURNING ||
portal->strategy == PORTAL_UTIL_SELECT);
/* Return the created portal */
@@ -1521,17 +1522,15 @@ _SPI_pquery(QueryDesc *queryDesc, long tcount)
switch (operation)
{
case CMD_SELECT:
- res = SPI_OK_SELECT;
if (queryDesc->parsetree->into) /* select into table? */
- {
res = SPI_OK_SELINTO;
- queryDesc->dest = None_Receiver; /* don't output results */
- }
else if (queryDesc->dest->mydest != DestSPI)
{
/* Don't return SPI_OK_SELECT if we're discarding result */
res = SPI_OK_UTILITY;
}
+ else
+ res = SPI_OK_SELECT;
break;
case CMD_INSERT:
res = SPI_OK_INSERT;