Yaroslav Schekin
Странно... но ладно, работает и хорошо.
И, кстати, ORDINALITY для всех остальных функций — чисто postgres-овская возможность.
В стандарте:
<collection derived table> ::=
UNNEST <left paren> <collection value expression>
[ { <comma> <collection value expression> }... ] <right paren>
[ WITH ORDINALITY ]
и всё.
Я, кажется, понял в чём проблема. По стандарту (тому драфту), unnest это не функция даже, а просто специальная синтаксическая конструкция, со своей собственной семантикой, которая из коллекции позволяет сделать таблицу. И там специально указано, что в случае с multiset не может быть никакого ordinality, что логично, ибо неопределённый порядок никому не нужен. А вот если не multiset, т.е. array (потому что других типов коллекций не определено в стандарте), то уже ordinality имеет смысл и задаётся через рекурсивный запрос. Кудрявенько конечно описано, без поллитры не разберёшься. Спасибо, что подсказали, куда копать)