Which cursor-related warnings should be errors?
The developers are currently discussing changing several cursor-related
warnings to hard errors. If PostgreSQL were to be designed from scratch,
there would hardly be discussion about this, but now we are wondering
whether any existing users would seriously be affected by this change.
The cases under consideration are:
Fetching from a non-existent cursor:
peter=# FETCH ALL FROM non_existent;
WARNING: portal "non_existent" does not exist
FETCH 0
Closing a non-existent cursor:
peter=# CLOSE non_existent;
WARNING: portal "non_existent" does not exist
CLOSE CURSOR
Declaring a new cursor that uses a name already in use:
peter=# BEGIN;
BEGIN
peter=# DECLARE foo CURSOR FOR SELECT 1;
DECLARE CURSOR
peter=# DECLARE foo CURSOR FOR SELECT 2;
WARNING: Closing pre-existing portal "foo"
DECLARE CURSOR
So if anyone can come up with a reason that theses WARNING: messages
should not be changed to errors, please speak up.
--
Peter Eisentraut peter_e@gmx.net
Hi all,
I suppose this must be easy to figure out, but I can't find it anywhere in
the documentation.
How do I call a function that takes a rowtype for an argument as in:
CREATE FUNCTION myfunc(mytablename) RETURNS INT AS '
BEGIN
-- Do stuff
RETURN val;
END;
' LANGUAGE 'plpgsql'
How do I call this function? I haven't been able to figure it out or find
it anywhere...
Thanks in advance,
Martin
Martin Brommer <martin@brommer.nl> writes:
How do I call a function that takes a rowtype for an argument as in:
CREATE FUNCTION myfunc(mytablename) RETURNS INT AS '
SELECT myfunc(mytablename.*) FROM mytablename;
This also works at the moment, but seems less clear to me:
SELECT myfunc(mytablename) FROM mytablename;
regards, tom lane
Since no one responded to the message below (posted on pgsql-sql), I made
the change from warning to error in the indicated cases.
Fetching from a non-existent cursor:
peter=# FETCH ALL FROM non_existent;
WARNING: portal "non_existent" does not exist
FETCH 0Closing a non-existent cursor:
peter=# CLOSE non_existent;
WARNING: portal "non_existent" does not exist
CLOSE CURSORDeclaring a new cursor that uses a name already in use:
peter=# BEGIN;
BEGIN
peter=# DECLARE foo CURSOR FOR SELECT 1;
DECLARE CURSOR
peter=# DECLARE foo CURSOR FOR SELECT 2;
WARNING: Closing pre-existing portal "foo"
DECLARE CURSORSo if anyone can come up with a reason that theses WARNING: messages
should not be changed to errors, please speak up.
--
Peter Eisentraut peter_e@gmx.net