On Mon, 2008-09-01 at 11:15 +0200, Pavel Stehule wrote:
> 2008/9/1 Magnus Hagander <magnus@hagander.net>:
> > Pavel Stehule wrote:
> >> Hello
> >>
> >> 2008/8/31 Hannu Krosing <hannu@2ndquadrant.com>:
> >>>
> >>> hannu=# create or replace function ffa(a int, a int) returns int
> >>> language plpgsql as $$begin return a + a; end;$$;
> >>> CREATE FUNCTION
> >>> hannu=# select ffa(1,2);
> >>> ffa
> >>> -----
> >>> 2
> >>> (1 row)
> >>>
> >>> Is this defined by some standard or just an oversight ?
> >>>
> >>
> >> what is problem? You have two diferent functions. I don't see anything wrong.
> >
> > Take a look at the second function again. It's certainly not behaviour
> > that I would expect :-) (I would expect a syntax error)
>
> I see it now - it's really bug
There are a few places, where repeating labels are allowed, for example
select can produce such record
hannu=# select 1 as a, 2 as a;a | a
---+---1 | 2
(1 row)
But it is not allowed in TYPE or table definitions
hannu=# create type aa as (a int, a int);
ERROR: column "a" specified more than once
hannu=# create table aa (a int, a int);
ERROR: column "a" specified more than once
It probably is also not allowed in function/procedure argument list, but
I was not sure that any standard would not require it.
So, should this be fixed at calling / SQL side (by not allowing
repeating argument names) or at pl side for each pl separately ?
--------------
Hannu