Re: function_name.parameter_name

Поиск
Список
Период
Сортировка
От Darren Duncan
Тема Re: function_name.parameter_name
Дата
Msg-id 4C880314.1080702@darrenduncan.net
обсуждение исходный текст
Ответ на Re: function_name.parameter_name  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: function_name.parameter_name  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
Robert Haas wrote:
> On Sep 8, 2010, at 3:17 PM, Darren Duncan <darren@darrenduncan.net> wrote:
>> Bruce Momjian wrote:
>>> Sergey Konoplev wrote:
>>>> 3.
>>>> CREATE FUNCTION func_very_very_very_very_long_name() RETURNS integer AS $$
>>>> << func_alias >>
>>>> DECLARE
>>>>    var_name text := 'bla';
>>>> BEGIN
>>>>    RAISE INFO '%', func_alias.var_name;
>>>> ...
>> I suggest that it might be reasonable to introduce a new syntax, that isn't already valid for something inside a
routine,and use that as a terse way to reference the current function and/or its parameters.  This may best be a simple
constantsyntax.
 
> 
> This has been proposed in the past and Tom has rejected it, but I agree that it would be useful.  The key word in
thisproposal is "terse".
 

Absolutely.

In fact I'm not particularly enamored with my ".foo" example suggestion because 
I would actually prefer for that particular syntax to be left unused and 
available for other possible future uses that are better thought out.

I think instead that something akin to an explicit alias would both be more 
future-proofed and be the least surprising to existing users, as per #3.  If the 
alias was very short, then we have something terse for usage.

I should also say that this subject has some bearing on the topic of aliases or 
synonyms in general.  In the situations where one wants an entity to be 
referenceable by more than one name, and knows this at the time of declaring 
said entity, there could be a syntax for declaring the extra names inline with 
the original.

For example, if it wouldn't conflict with anything, one could use the "|" symbol 
(mnemonic is that means "alternation" in regular expressions) like this:
  CREATE FUNCTION func_very_very_very_very_long_name|short_name() ...

... but this could use some work since I also see that being useful for 
declaring synonyms inline, which are public names like the original, not just 
internal private names.  When used for synonyms, this would still be represented 
in the system catalog as a function named func_very... and a synonym named 
short_name, this synonym being akin to a Unix soft link or a C symbolic alias in 
semantics.

Similarly, and mainly for use with named argument syntax, a named parameter 
could have several names it could go by, declared with | also.  Example:
  CREATE FUNCTION func_name(arg_name|altnm text) ...

It doesn't have to be that syntax, but I demonstrated a principle, and I 
personally like "|" for the mnemonic.

-- Darren Duncan


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: function_name.parameter_name
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: function_name.parameter_name