proposal sql: labeled function params

Поиск
Список
Период
Сортировка
Искать
От
Pavel Stehule
Тема
proposal sql: labeled function params
Дата
Msg-id
162867790808140256w533324bj25183d476d3aa89a@mail.gmail.com
Список
Дерево обсуждения
proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Peter Eisentraut <peter_e@gmx.net>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params Decibel! <decibel@decibel.org>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Gregory Stark <stark@enterprisedb.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params Bruce Momjian <bruce@momjian.us>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Robert Haas" <robertmhaas@gmail.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Decibel! <decibel@decibel.org>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Martijn van Oosterhout <kleptog@svana.org>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Teodor Sigaev <teodor@sigaev.ru>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: Feeding results back into select (was: proposal sql: labeled function params) "D'Arcy J.M. Cain" <darcy@druid.net>
Re: Feeding results back into select Teodor Sigaev <teodor@sigaev.ru>
Re: Feeding results back into select "D'Arcy J.M. Cain" <darcy@druid.net>
Re: proposal sql: labeled function params Peter Eisentraut <peter_e@gmx.net>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Gregory Stark <stark@enterprisedb.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params "Greg Stark" <greg.stark@enterprisedb.com>
Re: proposal sql: labeled function params daveg <daveg@sonic.net>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params "Asko Oja" <ascoja@gmail.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params "Asko Oja" <ascoja@gmail.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params "Robert Haas" <robertmhaas@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Robert Haas" <robertmhaas@gmail.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params Peter Eisentraut <peter_e@gmx.net>
Re: [SPAM?]: Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params Tom Lane <tgl@sss.pgh.pa.us>
Re: proposal sql: labeled function params Peter Eisentraut <peter_e@gmx.net>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Hannu Krosing <hannu@2ndQuadrant.com>
Re: proposal sql: labeled function params "Pavel Stehule" <pavel.stehule@gmail.com>
Re: proposal sql: labeled function params Peter Eisentraut <peter_e@gmx.net>
Hello

I propose enhance current syntax that allows to specify label for any
function parameter:

fcename(expr [as label], ...)
fcename(colname, ...)

I would to allow  same behave of custom functions like xmlforest function:
postgres=# select xmlforest(a) from foo;xmlforest
-----------10
(1 row)

postgres=# select xmlforest(a as b) from foo;xmlforest
-----------10
(1 row)

Actually I am not sure what is best way for PL languages for acces to
these info. Using some system variables needed new column in pg_proc,
because collecting these needs some time and in 99% cases we don't
need it. So I prefere some system function that returns labels for
outer function call. Like

-- test
create function getlabels() returns varchar[] as $$select '{name,
age}'::varchar[]$$ language sql immutable;

create or replace function json(variadic varchar[])
returns varchar as $$
select '[' || array_to_string(    array(       select (getlabels())[i]|| ':' || $1[i]          from generate_subscripts($1,1) g(i))  ,',') || ']'
$$ language sql immutable strict;

postgres=# select json('Zdenek' as name,'30' as age);        json
----------------------[name:Zdenek,age:30]
(1 row)

postgres=# select json(name, age) from person;        json
----------------------[name:Zdenek,age:30]
(1 row)

There are two possibilities a) collect labels in parse time b) collect labels in executor time

@a needs info in pg_proc, but it is simpler, @b is little bit
difficult, but doesn't need any changes in system catalog. I thinking
about b now.

Necessary changes:
=================
labels are searched in parse tree fcinfo->flinfo->fn_expr. I need
insert label into parse tree, so I it needs special node
labeled_param, For getting column reference I need to put current
exprstate to fcinfo.  Function getlabels() should take code from
ExecEvalVar function.

Any notes, ideas?

Pavel Stehule

В списке pgsql-hackers по дате отправления
От: Jan Urbański
Дата:
От: Simon Riggs
Дата:
FAQ