Yes throwing an error would probably be good to catch these kind of mistakes which silently gives you the wrong answer otherwise.
Best Regards Dan S 2011/5/21 Tom Lane <t...@sss.pgh.pa.us> > Dan S <strd...@gmail.com> writes: > > And yes I do know that I can fix the problem by renaming the output > column > > to something else than i , I'm just curious about the behaviour and if it > > should work like this and why. > > > CREATE OR REPLACE FUNCTION dynamic_query(i int) RETURNS TABLE (i int) as > $$ > > This should probably throw an error. There is a check that disallows > having two input or two output parameters named the same, but the > comment about it says: > > /* > * As of Postgres 9.0 we disallow using the same name for two > * input or two output function parameters. Depending on the > * function's language, conflicting input and output names might > * be bad too, but we leave it to the PL to complain if so. > */ > > It looks like plpgsql didn't get the memo about checking this. > > regards, tom lane >