Re: Window Functions patch v06

Поиск
Список
Период
Сортировка
От Hitoshi Harada
Тема Re: Window Functions patch v06
Дата
Msg-id e08cc0400810111146p6fffd3c1hb0d051cfe78a380f@mail.gmail.com
обсуждение исходный текст
Ответы Re: Window Functions patch v06  ("Ian Caulfield" <ian.caulfield@gmail.com>)
Re: Window Functions patch v06  ("David Rowley" <dgrowley@gmail.com>)
Список pgsql-hackers
I'm afraid the patch was too huge, trying to send it again without attachment...

I made up my mind to scratch former window functions and redesigned
completely new execution model, based on the discussion with Heikki.
Attached is the v06 against HEAD today.

http://umitanuki.net/pgsql/wfv06/design.html

The concrete design concept is noted in nodeWindow.c, quoted here:
* Note that the solid concept of the window functions is "they can access* arbitrary rows within the frame as they
want".As far as we keep the rule* of thumb, any kind of optimization is allowed.
 

And I threw away an idea that window functions are derived from
aggregates, then window functions are only simple single function,
which have capability to arbitrary random row access. By this mean,
aggregates are special subset of window functions so that aggregates
are treated special case in nodeWindow.c, processed in
eval_windowaggregate(), while normal window functions are in
eval_windowfunction().

By giving random row access, not only able to integrate aggregate to
window mechanism but we now have lead()/lag() support. Furthermore, I
can see FRAME clause (i.e. moving frame aggregate/cumulative
computation) can be added for 8.4 with this design though not
implemented yet.

Tom,
I added a function to tuplestore.c,
tuplestore_write_to_read_pointer(), that allows to copy write pointer
position to the one of readptrs. This is required for my case because
when the functions access randomly rows that the executor haven't read
out will be fetched (i.e. last row of the frame). And I hope you see
the nth_value() function require really arbitrary row access.

P.S.
As a volunteer, my spare time to work on this project is getting
limited, as my daily work is getting busy for the end of the year
(this is a Japanese traditional business sense -:). I don't know how
much I can work for the next commit fest but I can't believe it if
this feature would be missed in 8.4 *only* for my own tiny business
clients!

Regards,



-- 
Hitoshi Harada


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

Предыдущее
От: "Pavel Stehule"
Дата:
Сообщение: Re: patch: array_ndims
Следующее
От: Josh Berkus
Дата:
Сообщение: Re: The Axe list