From 8a2cdd77ad5c0a4f8902ea86d0377336e076abcb Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 9 Feb 2001 00:14:26 +0000 Subject: [PATCH] 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. --- src/pl/plpgsql/src/pl_exec.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index f71ef90ef3..92787ec270 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);