Re: CALL versus procedures with output-only arguments
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
Robert Haas <robertmhaas@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-06-03T20:21:22Z
Lists: pgsql-hackers
Andrew Dunstan <andrew@dunslane.net> writes: > So AIUI your suggestion is that ALTER/DROP ROUTINE will look for an > ambiguity. If it doesn't find one it proceeds, otherwise it complains in > which case the user will have to fall back to ALTER/DROP > FUNCTION/PROCEDURE. Is that right? It seems a reasonable approach, and I > wouldn't expect to find too many ambiguous cases in practice. Yeah, I think that practical problems would be pretty rare. My impression is that users tend not to use function/procedure name overloading too much in the first place, and none of this affects you at all till you do. Once you do, you'll possibly notice that PG's rules for which combinations of signatures are allowed are different from the spec's. I believe that we're largely more generous than the spec, but there are a few cases where this proposal isn't. An example is that (AFAICT) the spec allows having both create procedure divide(x int, y int, OUT q int) ... create procedure divide(x int, y int, OUT q int, OUT r int) ... which I want to reject because they have the same input parameters. This is perhaps annoying. But seeing that the spec won't allow you to also have divide() procedures for other datatypes, I'm having a hard time feeling that this is losing on the overloading-flexibility front. regards, tom lane
Commits
-
Reconsider the handling of procedure OUT parameters.
- e56bce5d4378 14.0 landed