PG Bug reporting form <noreply@postgresql.org> writes:
> I have an simple CTE expression with group by and a string_aggr() function,
> and Postgresql seems to materialize it anyhow, even if 'not materialized' is
> instructed. I can't see that this is documented behaviour.
Since you haven't given a concrete example, nobody else can see whether it
is either. But in general, there is no guarantee that "NOT MATERIALIZED"
will do anything. There are multiple conditions that will prevent
inlining a CTE, either for semantic or implementation reasons.
regards, tom lane