| From: | 德哥 <digoal(at)126(dot)com> |
|---|---|
| To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | pgsql-bugs(at)postgresql(dot)org |
| Subject: | Re: BUG #14059: BUG? function in select clause called more times when use offset |
| Date: | 2016-04-02 16:13:05 |
| Message-ID: | 554c4aed.6d2e.153d7bfd205.Coremail.digoal@126.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Thanks
--
公益是一辈子的事,I'm Digoal,Just Do It.
At 2016-04-02 22:49:26, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>digoal(at)126(dot)com writes:
>> postgres=# create or replace function f() returns void as $$
>> declare
>> begin
>> raise notice 'called';
>> end;
>> $$ language plpgsql strict volatile;
>> CREATE FUNCTION
>
>> postgres=# select f(),* from ( values(1),(2),(3),(4),(5),(6) ) t(id) offset
>> 3 limit 2;
>> NOTICE: called
>> NOTICE: called
>> NOTICE: called
>> NOTICE: called
>> NOTICE: called
>> f | id
>> ---+----
>> | 4
>> | 5
>> (2 rows)
>
>> offset skip 3 tuple, but function f() called with 5 times, can we tuning
>> this .
>> or this is a bug?
>
>No, it's not a bug. OFFSET only results in the skipped tuples not being
>delivered to the client; it does not cause them not to be computed.
>
>You could probably do something with a two-level select with the OFFSET
>in the sub-select and the volatile function in the top level.
>
> regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | adudnik | 2016-04-02 20:01:06 | BUG #14060: row security policy does not work for updatable views |
| Previous Message | Tom Lane | 2016-04-02 14:49:26 | Re: BUG #14059: BUG? function in select clause called more times when use offset |