Alexander Nikitin
очень странно. я сейчас посмотрел через pg_restore -l содержимое дампа, там в числе прочих есть и 26959; 2617 2186013012 OPERATOR orafunc = postgres
26960; 2617 2186013013 OPERATOR orafunc = postgres
26961; 2617 2186013014 OPERATOR orafunc = postgres
26962; 2617 2186013015 OPERATOR orafunc = postgres, через \do я вижу эти операторы в исходной БД. orafunc | = | boolean | bigint | boolean |
orafunc | = | boolean | integer | boolean |
orafunc | = | boolean | smallint | boolean |
orafunc | = | integer | boolean | boolean |
orafunc | = | smallint | boolean | boolean |
и тут, действительно есть тот, который производит сравнение boolean и чисел. В search_path в исходной БД стоит bp, extensions, orafunc, public. В новой же БД этих схем нет и в search_path стоит "$user", public.
> там в числе прочих есть и
Значит, это не из extension операторы (иначе бы их просто не было в дампе).
> В search_path в исходной БД стоит bp, extensions, orafunc, public.
И вот это, как раз, в старых версиях PostgreSQL (до 11 или 12, не помню) pg_dump не записывает (я "ALTER DATABASE SET search_path = ..." и т.п. имею в виду).
> В новой же БД этих схем нет и в search_path стоит "$user", public.
Т.е. там это делается pg_dumpall.
> интересно, если прописать search_path, сделать его таким же, как и на основной базе, сработает ли pg_restore?
По идее, search_path, начиная с каких-то minors (!), при dump/restore вообще сбрасывается, да и в том, что Вы показывали, были указаны явные схемы.
Так я не понял — какого-то конкретного оператора не хватает (вроде там 4 и 4 здесь), или что?