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.
switch (exec_res)
{
case SPI_OK_SELECT:
- case SPI_OK_SELINTO:
case SPI_OK_INSERT:
case SPI_OK_UPDATE:
case SPI_OK_DELETE:
*/
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);