FOUND with EXECUTE
Hi hackers,
Is there a technical reason we do not set the value of FOUND when
executing a dynamic statement in plpgsql?
It seems surprising that FOUND is set by SELECT, PERFORM, UPDATE,
INSERT, DELETE, etc, *except* when those statements are invoked by
EXECUTE.
I had a brief look at the code in pl/plpgsql/src/pl_exec.c, and
couldn't see any screamingly obvious reasons not to set FOUND in
exec_stmt_dynexecute in much the same way we do in exec_stmt_execsql.
Thanks for your time,
BJ
On Tue, 2007-10-16 at 11:24 +1000, Brendan Jurd wrote:
Is there a technical reason we do not set the value of FOUND when
executing a dynamic statement in plpgsql?
See prior discussion:
http://archives.postgresql.org/pgsql-bugs/2004-10/msg00001.php
It would be easy enough to have EXECUTE modify FOUND, and that might
well be worth doing. Adding an "EVAL" concept would also be useful,
though, and would avoid changing EXECUTE's behavior in a way that might
break client apps.
-Neil
On 10/16/07, Neil Conway <neilc@samurai.com> wrote:
See prior discussion:
http://archives.postgresql.org/pgsql-bugs/2004-10/msg00001.php
Thanks for the link. I did search the archives but unfortunately
terms like 'found' and 'execute' generate a lot of unwanted matches =)
It would be easy enough to have EXECUTE modify FOUND, and that might
well be worth doing. Adding an "EVAL" concept would also be useful,
though, and would avoid changing EXECUTE's behavior in a way that might
break client apps.
Hm, it seems the only thing that would be broken is a function which
runs an ordinary statement, and then waits until *after* doing an
EXECUTE to check the value of FOUND. It's tough to imagine somebody
actually relying on this behaviour, and perhaps it's fair to say that
failure to check FOUND immediately after the statement you're
interested in is bad coding practice?
Regards,
BJ
2007/10/16, Neil Conway <neilc@samurai.com>:
On Tue, 2007-10-16 at 11:24 +1000, Brendan Jurd wrote:
Is there a technical reason we do not set the value of FOUND when
executing a dynamic statement in plpgsql?See prior discussion:
http://archives.postgresql.org/pgsql-bugs/2004-10/msg00001.php
It would be easy enough to have EXECUTE modify FOUND, and that might
well be worth doing. Adding an "EVAL" concept would also be useful,
though, and would avoid changing EXECUTE's behavior in a way that might
break client apps.-Neil
It's symply. But other execute statement only will more uglyze plpgsql.
use GET DIAGNOSTICS statement a wait for sql/psm
Pavel