ставит добавление в очередь, а SELECT который после UNION ALL смотрит в MVCC представление где еще нет такой записи??
Хочу понять почему такое поведение
Весь запрос (включая его CTE) выполняется в одном snapshot. Это описано тут: https://www.postgresql.org/docs/current/queries-with.html#QUERIES-WITH-MODIFYING Там есть нюансы, конечно (при использовании volatile функций, которые могут "брать" свои snapshots; или SELECT ... FOR UPDATE в read committed, кажется)... но общий принцип такой.
Обсуждают сегодня