Re: Sample of user-define window function and other things - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Sample of user-define window function and other things
Date
Msg-id 14815.1231423529@sss.pgh.pa.us
Whole thread Raw
In response to Re: Sample of user-define window function and other things  ("Hitoshi Harada" <umi.tanuki@gmail.com>)
List pgsql-hackers
"Hitoshi Harada" <umi.tanuki@gmail.com> writes:
> 2009/1/8 Tom Lane <tgl@sss.pgh.pa.us>:
>> You mean set_mark?  It's just to save an extra calculation of the
>> absolute location of the fetched row.  See leadlag_common for an
>> example use: we can truncate the tuplestore if the offset is constant.

> Yeah, I mean set_mark :P) I already checked leadlag_common example but
> abs_pos can be very simply calculated by WinGetCurrentPosition() -
> offset. So the simpler API is winner to me rather than saving few
> cycle cpu cost.

In this particular case it's not hard, but in the general case where you
are using any of the seekpos values it could require a significant
amount of code.  More to the point: the available examples suggest
to me that truncating at the row you fetch is likely to be a pretty
common behavior; in fact *every one* of the existing callers of
WinGetFuncArgInPartition or WinGetFuncArgInFrame does that, at least
conditionally.  So I think it's reasonable to have an extra parameter
instead of making a lot of callers reinvent the same wheel.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: PQexecParams() returns PGRES_COMMAND_OK for empty query
Next
From: Cédric Villemain
Date:
Subject: Re: ONLY with parentheses