| From: | Marti Raudsepp <marti(at)juffo(dot)org> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | Bruce Momjian <bruce(at)momjian(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: function(contants) evaluated for every row |
| Date: | 2010-11-24 20:28:49 |
| Message-ID: | AANLkTikACkchLRvOZxJSP7_xxKZ29o4isy95NvNm7-0i@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, Nov 24, 2010 at 21:52, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Bruce Momjian <bruce(at)momjian(dot)us> writes:
>> Notice the to_date()'s were not converted to constants in EXPLAIN so
>> they are evaluated for every row. to_date() is marked STABLE.
> No. This is per expectation. Only IMMUTABLE functions can be folded to
> constants in advance of the query.
This is something that has bit me in the past.
I realize that STABLE functions cannot be constant-folded at
planning-time. But are there good reasons why it cannot called only
once at execution-time?
As long as *only* STABLE or IMMUTABLE functions are used in a query,
we can assume that settings like timezone won't change in the middle
of the execution of a function, thus STABLE function calls can be
collapsed -- right?
Regards,
Marti
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Peter Eisentraut | 2010-11-24 20:37:54 | Re: Per-column collation, work in progress |
| Previous Message | Robert Haas | 2010-11-24 20:24:43 | profiling pgbench |