Re: RfD: more powerful "any" types
От | Hannu Krosing |
---|---|
Тема | Re: RfD: more powerful "any" types |
Дата | |
Msg-id | 1252874269.3868.4.camel@hvost1700 обсуждение исходный текст |
Ответ на | Re: RfD: more powerful "any" types (Pavel Stehule <pavel.stehule@gmail.com>) |
Ответы |
Re: RfD: more powerful "any" types
|
Список | pgsql-hackers |
On Sun, 2009-09-13 at 21:50 +0200, Pavel Stehule wrote: > Hello > > > > > ANY [TYPE] and SAME AS [TYPE OF] are syntactic sugar indeed, but they > > are much more SQL-like than needing to write "any" or anyelement(n) as > > argument type or return type > > > > I looked on possibilities in gram.y and I thing, type identifiers > > "ANY TYPE" is possible without any problems (this should be synonym for "any"), > "SAME AS" needs add "same" keyword to col_name_keywords , i.e. "same" > is prohibited for function names - it should be a problem > > regards > Pavel Stehule > > I found so pgparser provide some ref type syntax via % symbol. So we > can use following syntax: > > CREATE OR REPLACE FUNCTION foo(a ANY TYPE, b a%TYPE) > RETURNS a%TYPE ... > > It is not pretty like SAME AS, but I am sure, so this is doable > (parser knows it now) > > any other ideas? Hmm, maybe try to make lexer recognize "SAME AS" as one token and then deal with other cases of 'name AS' ? Or make the syntax a little uglier, CREATE OR REPLACE FUNCTION foo(a ANY TYPE, b TYPE OF a) CREATE OR REPLACE FUNCTION foo(ANY TYPE, TYPE OF $1) and maybe try CREATE OR REPLACE FUNCTION foo(a ANY TYPE, b TYPE OF a) RETURNS ARRAY OF TYPE OF a instead of CREATE OR REPLACE FUNCTION foo(a anyelement, b anyelement) RETURNS anyarray > > regards > Pavel Stehule -- Hannu Krosing http://www.2ndQuadrant.com PostgreSQL Scalability and Availability Services, Consulting and Training
В списке pgsql-hackers по дате отправления: