From: | Steve Pritchard <steve(dot)pritchard(at)bto(dot)org> |
---|---|
To: | Jim Mlodgenski <jimmy76(at)gmail(dot)com> |
Cc: | Pgsql Performance <pgsql-performance(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Want function to be called only once in query |
Date: | 2021-09-16 11:07:53 |
Message-ID: | CAF7Aqmz_go1rOEBAm6Wz87zXd82TxEpRrLd5_RxVaaKkv2ALog@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
> Add the MATERIALIZED keyword to the WITH statement
Many thanks Jim, that's just what I needed - that does the trick.
It's hard to keep abreast of these SQL changes. Thank goodness for mailing
lists!
Steve
On Thu, 16 Sept 2021 at 11:56, Jim Mlodgenski <jimmy76(at)gmail(dot)com> wrote:
> On Thu, Sep 16, 2021 at 4:51 AM Steve Pritchard <steve(dot)pritchard(at)bto(dot)org>
> wrote:
> >
> > I have a PL/pgSQL function that I want to call within a query, but the
> function is fairly expensive to execute so I only want it executed once
> within the query. However the planner seems to reorganize my query so that
> it calls the function for every row.
> >
> > We were previously on Pg 9.6 and this wasn't a problem then. But now
> that we have upgraded to Pg 13, the behaviour has changed.
> >
>
> The behavior for planning a CTE changed in PG12.
>
> > There must be a "proper" way to get the planner to call a function only
> once.
> >
> Add the MATERIALIZED keyword to the WITH statement
>
--
Steve Pritchard
Database Developer
British Trust for Ornithology, The Nunnery, Thetford, Norfolk IP24 2PU, UK
Tel: +44 (0)1842 750050, fax: +44 (0)1842 750030
Registered Charity No 216652 (England & Wales) No SC039193 (Scotland)
Company Limited by Guarantee No 357284 (England & Wales)
From | Date | Subject | |
---|---|---|---|
Next Message | Ulf Lohbrügge | 2021-09-19 10:05:25 | Query executed during pg_dump leads to excessive memory usage |
Previous Message | Jim Mlodgenski | 2021-09-16 10:56:05 | Re: Want function to be called only once in query |