On 6/3/21 4:21 PM, Tom Lane wrote: > Andrew Dunstan <and...@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. > >
Not sure I follow the "other datatypes" bit. Are you saying the spec won't let you have this?: create procedure divide(x int, y int, OUT q int); create procedure divide(x int, y int, OUT q float); cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com