aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-02-09 00:14:26 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-02-09 00:14:26 +0000
commit8a2cdd77ad5c0a4f8902ea86d0377336e076abcb (patch)
treec8691d85ca63b562643a5f78d6ca1570a357c68f /src
parentbbac19a973f788b3e4d211aab943456b5dfac2dc (diff)
downloadpostgresql-8a2cdd77ad5c0a4f8902ea86d0377336e076abcb.tar.gz
postgresql-8a2cdd77ad5c0a4f8902ea86d0377336e076abcb.zip
EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
rather than executing the INTO clause with non-plpgsql semantics as it was doing for the last few weeks/months. This keeps our options open for making it do the right plpgsql-ish thing in future without creating a backwards compatibility problem. There is no loss of functionality since people can get the same behavior with CREATE TABLE AS.
Diffstat (limited to 'src')
-rw-r--r--src/pl/plpgsql/src/pl_exec.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index f71ef90ef3c..92787ec270b 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -3,7 +3,7 @@
* procedural language
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.36 2001/01/22 00:50:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.37 2001/02/09 00:14:26 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -1993,7 +1993,6 @@ exec_stmt_dynexecute(PLpgSQL_execstate * estate,
switch (exec_res)
{
case SPI_OK_SELECT:
- case SPI_OK_SELINTO:
case SPI_OK_INSERT:
case SPI_OK_UPDATE:
case SPI_OK_DELETE:
@@ -2006,6 +2005,16 @@ exec_stmt_dynexecute(PLpgSQL_execstate * estate,
*/
break;
+ case SPI_OK_SELINTO:
+ /*
+ * Disallow this for now, because its behavior is not consistent
+ * with SELECT INTO in a normal plpgsql context. We need to
+ * reimplement EXECUTE to parse the string as a plpgsql command,
+ * not just feed it to SPI_exec.
+ */
+ elog(ERROR, "EXECUTE of SELECT ... INTO is not implemented yet");
+ break;
+
default:
elog(ERROR, "unexpected error %d in EXECUTE of query '%s'",
exec_res, querystr);