Re: New feature: accumulative functions. - Mailing list pgsql-general

From pasman pasmański
Subject Re: New feature: accumulative functions.
Date
Msg-id CAOWY8=b8SdVyd7OHyFhhsvv0gXQggWExYJ=6AUshbybjeLQrcQ@mail.gmail.com
Whole thread Raw
In response to Re: New feature: accumulative functions.  (Pavel Stehule <pavel.stehule@gmail.com>)
Responses Re: New feature: accumulative functions.  (pasman pasmański <pasman.p@gmail.com>)
List pgsql-general
For single argument strict increasing function f(x), estimation is
simple: it is f(estimation of x).

2011/9/25, Pavel Stehule <pavel.stehule@gmail.com>:
> 2011/9/25 pasman pasmański <pasman.p@gmail.com>:
>> See that setting flag on function need less work than create new gist
>> operator. Of course if postgresql's developers do biggest work before.
>
> any feature in pg should to have a general usage - with real use cases
> and real performance advantages.
>
> I am not sure, if monotonically functions should be useful - this
> request is relative strong. This feature should be interesting, but
> should be a source of bugs if somebody use it wrong. Some similar
> searching is possible with multidimensional indexes.
>
> note: a searching is one task - second task is design of estimations.
>
> Pavel
>
>>
>>
>> 2011/9/25, Pavel Stehule <pavel.stehule@gmail.com>:
>>> 2011/9/25 pasman pasmański <pasman.p@gmail.com>:
>>>> I found second use case. Look at expression:
>>>>
>>>> where left(str,n)='value'
>>>>
>>>> function left(str,n) increase monotonically for str and n. With this
>>>> feature it can use index on str.
>>>>
>>>> Classic index needs recreating.
>>>>
>>>
>>> these use cases are just theory - for example - this case should be
>>> solved with immutable functions
>>>
>>> I can use a functional index left(str, const) and use a query
>>>
>>> where left(str, const) = left('value', const) and left(str, n) = 'value'
>>>
>>> There are a theoretical cases, but these cases should be solved via
>>> special data type and GiST index
>>>
>>> Pavel
>>>
>>>> 2011/9/25, Pavel Stehule <pavel.stehule@gmail.com>:
>>>>> Hello
>>>>>
>>>>> what is a real use case?
>>>>>
>>>>> Regards
>>>>>
>>>>> Pavel
>>>>>
>>>>> 2011/9/25 pasman pasmański <pasman.p@gmail.com>:
>>>>>> My english is not perfect, by accumulative i think about monotonically
>>>>>> increasing function.
>>>>>>
>>>>>> It works that for clause WHERE f(x)=const:
>>>>>> 1. Read root page of index_on_x and get x1 ... Xn
>>>>>> 2. Calculate f(x1) ... f(xn) for this page
>>>>>> 3. When f(x1)<=const<= f(xn) then x1 <= searched x <= xn and we can
>>>>>> test smaller range (xlower, xgreater).
>>>>>> 4. Otherwise no rows satisfy condition.
>>>>>>
>>>>>> Step 3 we repeat for current index's page and subpages until xlower =
>>>>>> searched x = xgreater
>>>>>>
>>>>>>
>>>>>> 2011/9/25, Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>> =?ISO-8859-2?Q?pasman_pasma=F1ski?= <pasman.p@gmail.com> writes:
>>>>>>>> I propose to add "accumulative" flag to a function definition. This
>>>>>>>> flag would be set for function f(x) which is accumulative and
>>>>>>>> immutable.
>>>>>>>
>>>>>>> Maybe you'd better define what you mean by "accumulative" ...
>>>>>>>
>>>>>>>> This flag allows to use an index on  x for clauses containing f(x):
>>>>>>>> where f(x) = const
>>>>>>>> where f(x) > const
>>>>>>>
>>>>>>> ... because it's sure not clear how you would get that to work.
>>>>>>>
>>>>>>>                       regards, tom lane
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> ------------
>>>>>> pasman
>>>>>>
>>>>>> --
>>>>>> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
>>>>>> To make changes to your subscription:
>>>>>> http://www.postgresql.org/mailpref/pgsql-general
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> ------------
>>>> pasman
>>>>
>>>
>>
>>
>> --
>> ------------
>> pasman
>>
>


--
------------
pasman

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: In which case PG_VERSION file updates ?
Next
From: Scott Marlowe
Date:
Subject: Re: In which case PG_VERSION file updates ?