PostgreSQL. Too many range table entries.
Недавно столкнулся с таким багом PostgreSQL. Жил себе да поживал в продакшне джоб Pentaho, в котором в том числе вызывается всякий pl/pgsql. И внезапно начал валиться с постгресовской ошибкой "too many range table entries". Версия PostgreSQL 13.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit.
Логи выдали, что падёж происходит на элементарном апдейте типа:
update t1 set f = my_val where t1.log_id in (select distinct log_id from t2)
Код не мой, признаюсь, не хотел бы я встретиться в тёмном переулке с человеком, который пишет в in select distinct (Данил, привет).
Методом тыка выяснилось, что если этот distinct убрать, то и ошибки too many range table entries тоже не будет.
--не возникает ошибка update t1 set f = my_val where t1.log_id in (select log_id from t2)
Видимо, роляет то, что обе таблицы - и t1 и t2 - секционированные. Партиций, навскидку, по паре сотен в каждой.
P.S. Написал о баге на официальном сайте. Но эти русофобы message зарежектили. Видимо, потому что я написал об этом на русском.
P.P.S. Написал о баге в Postgres Pro - они оказались не русофобами, ответили на русском.