I think, there is a difference between optional parameters and default parameter values. So, my suggestion would be something like this. SELECT default_test(1,3, DEFAULT); -- match function number 1
SELECT default_test(1,3); -- match the function number 2
SELECT default_test(1); -- ERROR Regards
This would break at least 4 major applications which I personally have worked on, and the benefit to users is unclear at best.
One of the main reasons to *have* default parameters is to allow adding new parameters to existing functions without breaking old application code. So, -1 from me.
me too.
The OP's statement that there is a difference between default params and optional params doesn't compute. The only way params are optional is that they have a default. Treating these as somehow independent is a nonsense.
Furthermore, if we dropped function 2, then
select default_test(1,3)
would be a call to function 1. Then, if we followed this proposal, creating function 2 would magically steer that call to function 2 instead. Talk about a footgun, and possibly a security risk too.
more overloaded functions with similar type signature is just dangerous and bad practice.