Re: WITH NOT MATERIALIZED and DML CTEs

From: Elvis Pranskevichus <elprans(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>
Subject: Re: WITH NOT MATERIALIZED and DML CTEs
Date: 2019-06-03 16:29:41
Message-ID: 12389707.kYbJWkIkHK@hammer.magicstack.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Monday, June 3, 2019 12:09:46 P.M. EDT Tom Lane wrote:
> > I understand why the rule exists in the first place, but I think
> > that an explicit opt-in signals the assumption of responsibility
> > and opens the possibility of using this in a well-defined
> > evaluation context, such as CASE WHEN.
>
> TBH, if you think it's well-defined, you're wrong.

The documentation seems to strongly suggest otherwise:

"When it is essential to force evaluation order, a CASE construct (see
Section 9.17) can be used. ... CASE construct used in this fashion will
defeat optimization attempts"

Are there cases where this is not true outside of the documented
exceptions (i.e. immutable early-eval and aggregates)?

Elvis

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2019-06-03 17:03:44 Re: WITH NOT MATERIALIZED and DML CTEs
Previous Message Tom Lane 2019-06-03 16:09:46 Re: WITH NOT MATERIALIZED and DML CTEs