нашёл странное поведение, похоже на баг планировщика
есть табличка - выборка из pg_timezone_names, name - PK
Запросы почти равнозначны, за исключением того, что второй возвращает json:
select name from timezones
order by utc_offset
select json_agg(name order by utc_offset) from timezones
При этом их планы:
QUERY PLAN
Index Scan using tz on timezones (cost=0.27..16.27 rows=433 width=32) (actual time=0.107..0.375 rows=433 loops=1)
Buffers: shared hit=8
Planning Time: 0.194 ms
Execution Time: 0.464 ms
QUERY PLAN
Aggregate (cost=10000000010.42..10000000010.43 rows=1 width=32) (actual time=0.834..0.835 rows=1 loops=1)
Buffers: shared hit=5
-> Seq Scan on timezones (cost=10000000000.00..10000000009.33 rows=433 width=32) (actual time=0.030..0.119 rows=433 loops=1)
Buffers: shared hit=5
Planning Time: 0.191 ms
Execution Time: 0.930 ms
огромный cost и сортировка игнорируется (правда в таблице они и так в отсортированном порядке)
Как это понимать?
Версия 12.2