with i(x) as (values (1::int)) select x from (select x from i union all select 3::int) b order by x desc limit 1;
with i(x) as (values (1::int)) select max(x) from (select x from i union select 3::int) b;
It also works with EXCEPT or INTERSECT, both with or without ALL.
The UNION ALL version fails with MIN and MAX but it works with all other aggregates that I have tested.
On Tue, Dec 13, 2016 at 4:31 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Torsten F\xC3=B6rtsch <tfoertsch123@gmail.com> writes: > postgres=# with i(x) as (values (1::int)), j(y) as (values (2::int)) select > x from (select x from i union all select y from j) b; > x > --- > 1 > 2 > (2 rows)
> postgres=# with i(x) as (values (1::int)), j(y) as (values (2::int)) select > max(x) from (select x from i union all select y from j) b; > ERROR: could not find plan for CTE "i"
Yup, sure looks like a bug to me, especially since it seems to work as expected before 9.5. No idea offhand what broke it.