On 05/04/2017 05:03 PM, Craig Ringer wrote:
> On 5 May 2017 02:52, "Tom Lane" wrote:
> I haven't been keeping close tabs either, but surely we still have
> to have
> the optimization fence in (at least) all these cases:
>
> * CTE contains INSERT/UPDATE/DELETE
> * CTE contains SELECT FOR UPDATE/SHARE (else the set of rows that get
> locked might change)
> * CTE contains volatile functions
>
> I'm willing to write off cases where, eg, a function should have been
> marked volatile and was not. That's user error and there are plenty
> of hazards of that kind already. But if the optimizer has reason
> to know that discarding the fence might change any query side-effects,
> it mustn't.
>
> I think everyone is in total agreement there.
That's great, but if so, why do we need any change in syntax at all?
Joe
--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development