Postgres переоптимизирует подзапрос. Я думаю, что это ошибка, потому что отсутствует тот факт, что random()
является изменчивым.
Простое исправление - это предложение о корреляции:
select (select string_agg( chr(48 + (random() * 59)::int), '')
from generate_series(1 ,40)
where gs.i is not null
) AS string
from generate_series(1, 10) gs(i);
Я немного переписал логи c, так что это проще. Нет необходимости использовать массивы для того, что вы хотите сделать.
Здесь - это db <> скрипка.