1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-02 04:21:28 +03:00

plpgsql's PERFORM statement now sets FOUND depending on whether any

rows were returned by the performed query.  Per recent pgsql-general
discussion.
This commit is contained in:
Tom Lane
2002-06-24 23:12:06 +00:00
parent e11f167718
commit 6918df16a5
2 changed files with 13 additions and 11 deletions

View File

@@ -3,7 +3,7 @@
* procedural language
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.55 2002/03/25 07:41:10 tgl Exp $
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.56 2002/06/24 23:12:06 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -969,9 +969,11 @@ exec_stmt_assign(PLpgSQL_execstate * estate, PLpgSQL_stmt_assign * stmt)
else
{
/*
* PERFORM: evaluate query and discard result. This cannot share
* code with the assignment case since we do not wish to
* constraint the discarded result to be only one row/column.
* PERFORM: evaluate query and discard result (but set FOUND
* depending on whether at least one row was returned).
*
* This cannot share code with the assignment case since we do not
* wish to constrain the discarded result to be only one row/column.
*/
int rc;
@@ -985,6 +987,8 @@ exec_stmt_assign(PLpgSQL_execstate * estate, PLpgSQL_stmt_assign * stmt)
if (rc != SPI_OK_SELECT)
elog(ERROR, "query \"%s\" didn't return data", expr->query);
exec_set_found(estate, (estate->eval_processed != 0));
exec_eval_cleanup(estate);
}