Обсуждение: BUG #3725: plsql does not report unknown functions at compile time
The following bug has been logged online: Bug reference: 3725 Logged by: Roger Email address: ramoloney@hotmail.com PostgreSQL version: 8.3 beta 2 Operating system: Windows/Linux Description: plsql does not report unknown functions at compile time Details: Hi, At compile time, plpgsql does not report unknown functions. For example, if I have a function. p_Func(a,b,c) and I have calls to it such as: p_Func(a) p_Func(a,b) these are not reported at compile time. They are only found at run time. I cannot stress (I've reported this now 3 times and got no reply) the importance of this. Surely, you must realize that it is not feasible to test all execution paths for a large plsql project. thanks, Roger [ PS: I would also love to see functions allowing DEFAULT parameters as exists in many other database systems. I know we have polymorphic functions but this to my mind is not as useful. Take the example where a function has 16 parameters. The polymorphic alternative is to define 16 functions. That is nasty. ]
"Roger" <ramoloney@hotmail.com> writes: > At compile time, plpgsql does not report unknown functions. For example, if > I have a function. > p_Func(a,b,c) > and I have calls to it such as: > p_Func(a) > p_Func(a,b) > these are not reported at compile time. They are only found at run time. This isn't a bug, no matter how much you complain about it. If we made plpgsql reject such cases, it would break a whole lot of things --- for example it would become impossible to create a pair of mutually recursive functions. Moreover, it's not hard to think of cases where it's simply not possible to check when the function is created, because you can't be certain what input datatypes will be involved and so it's not clear which function is to be called. regards, tom lane