Re: WIP patch: convert SQL-language functions to return tuplestores

Поиск
Список
Период
Сортировка
Искать
От
Robert Haas
Тема
Re: WIP patch: convert SQL-language functions to return tuplestores
Дата
Msg-id
603c8f070810291742l4026b931lebc179626bc5b937@mail.gmail.com
Ответ на
Список
Дерево обсуждения
WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Simon Riggs <simon@2ndQuadrant.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Kenneth Marshall <ktm@rice.edu>
Optimizing tuplestore usage for SRFs Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Martijn van Oosterhout <kleptog@svana.org>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores "Robert Haas" <robertmhaas@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Gregory Stark <stark@enterprisedb.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Pavel Stehule" <pavel.stehule@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Hannu Krosing <hannu@2ndQuadrant.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores Dimitri Fontaine <dfontaine@hi-media.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Robert Haas" <robertmhaas@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Pavel Stehule" <pavel.stehule@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Robert Haas" <robertmhaas@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Pavel Stehule" <pavel.stehule@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores Tom Lane <tgl@sss.pgh.pa.us>
Re: WIP patch: convert SQL-language functions to return tuplestores "Pavel Stehule" <pavel.stehule@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Robert Haas" <robertmhaas@gmail.com>
Re: WIP patch: convert SQL-language functions to return tuplestores "Robert Haas" <robertmhaas@gmail.com>
> All of this is pie-in-the-sky for PL functions, and I think properly so:
> the whole reason for supporting PLs is to enable doing things that SQL
> does poorly or not at all.  So expecting SQL to interoperate very
> closely with them seems impossible, or at least unreasonably limiting.
> The real issue at hand is what to do with SQL-language functions.
>
> I'm currently going to have a look at just what it would take to support
> both lazy and eager evaluation in functions.c (independently of what
> syntax, if any, we settle on to expose the choice to the user).  If it's
> either really awful or really easy we should know that before arguing
> further.

It occurs to me that for PL/perl and similar one could design an
interface that is similar to the one that is used for C functions -
that is, function is invoked multiple times, returns one value per
call, and is given a place to stash its state across calls.  For
example, for PL/perl, you could pass a mutable empty hash reference on
the first call and then pass the same hash reference back on each
subsequent call.  That wouldn't require being able to freeze/thaw the
whole state, just being able to maintain the contents of that hash
reference across calls.

It would probably be a lot more difficult to make something like this
work usefully for PL/pgsql, which as a language is rather underpowered
(nonetheless I use it heavily; it's awesome for the things it is good
at), but I suspect it could be applied to Python, PHP, etc. pretty
easily.

So that's at least three ways you can evaluate the function: generate
the whole thing in one fell swoop, single function call but with lazy
execution, or value-per-call mode.  I'm guessing someone could dream
up other possibilities as well.  Now, who's volunteering to implement?:-)

...Robert

В списке pgsql-hackers по дате отправления
От: Josh Berkus
Дата:
От: Koichi Suzuki
Дата:
FAQ