> I think there are probably other ways of fixing this query that won't have
> such dramatic effects; it doesn't really seem to need to use WITH, and I bet
> you could also tweak the WITH query to prevent inlining.  

Yes I know I can change THIS QUERY.  I've changed other ones to work around 
this.
Normally I just use a LATERAL for this.

My point is lots of people use CTEs intentionally for this kind of thing 
because they know they are materialized.

It's going to make a lot of people hesitant to upgrade if they think they need 
to revisit every CTE (that they intentionally wrote cause they thought it would 
be materialized) to throw in a MATERIALIZED keyword.

> I also think
> Andres's question about why this gets inlined in the first place is a good 
> one;
> the (m).* seems like it ought to be counted as a multiple reference.
> 
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL
> Company
Well if we can at least prevent the multiple reference thing from inlining that 
might be good enough to solve most performance regression issues that arise.

Thanks,
Regina





Reply via email to