Size: a a a

pgsql – PostgreSQL

2020 July 06

TS

Tagil Steel in pgsql – PostgreSQL
Коллеги, подскажите, кто сталкивался - наскольо row level security замедляет работу при select?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
очень странно. я сейчас посмотрел через 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.
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
интересно, если прописать search_path, сделать его таким же, как и на основной базе, сработает ли pg_restore?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Nikitin
а, то есть это надо было помимо pg_dump db сделать ещё pg_dumpall -g?
Нет. Содержимое extensions вообще не получится достать dump-ами, если я правильно помню.
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
понятно, спасибо!
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
дамп же должен cодержать CREATE EXTENSION, который и принесет нужный тип
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
в этом дампе про экстеншины было только вот это:
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
2; 3079 2186013017 EXTENSION - uuid-ossp
67759; 0 0 COMMENT - EXTENSION "uuid-ossp"
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
я к тому, что не факт, что я не встречусь с подобной ситуацией в дальнейшем, могу ли я как-то предсказать - хватит ли того, что находится в дампе для того, чтобы восстановиться?
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
на целевой машине должна уже быть вся потенциально необходимая экстеншен-инфраструктура
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
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 здесь), или что?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
не-не 4 и 4 это на исходной базе. просто их было видно и из дампа и из \do
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
то есть в дампе они были
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Nikitin
не-не 4 и 4 это на исходной базе. просто их было видно и из дампа и из \do
А в целевой базе (после ошибки) их нет вообще, получается?
А если посмотреть list этого дампа, они идут до этой CHECK constraint (ну или в SQL его преобразовать, если он приемлемого размера, и посмотреть)?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
он совсем неприемлемого размера :) Да, операторы 5 штук идут с 100 по 104 строчку, а constraint на 16868
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
в целевой базе данных их вообще нет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Nikitin
в целевой базе данных их вообще нет
И это же странно, нет? Раз они идут раньше, должны были уже восстановиться.
Вы как обычно восстанавливаете? Можете, на всякий случай, показать все command lines, начиная с создания базы.
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
да, я тоже считаю, что это странно. Операции производил не я, а коллега, снимал так:  C:\Program Files\PostgreSQL\11\bin>pg_dump -h 192.168.228.161 -p 5432 -U bp -d b
p_release -Fd -j 8 --blobs -v -f E:\Downloads\250620_bp_release.backup вставку производил вот так: C:\Program Files\PostgreSQL\11\bin>pg_restore -h 192.168.228.146 -p 5433 -d bp_r
elease -U bp -Fd -j 8 -vO E:\Downloads\250620_bp_release.backup
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
про начиная с создания базы - наверное нет, только это
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
сейчас заглянул в логи на тот момент, когда происходил импорт. 2020-06-27 10:17:13 MSK ОШИБКА:  нет прав на создание расширения "uuid-ossp"
2020-06-27 10:17:13 MSK ПОДСКАЗКА:  Для создания этого расширения нужно быть суперпользователем.
2020-06-27 10:17:13 MSK ОПЕРАТОР:  CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA extensions;
 
 
 
2020-06-27 10:17:13 MSK ОШИБКА:  расширение "uuid-ossp" не существует
2020-06-27 10:17:13 MSK ОПЕРАТОР:  COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)';
 
 
 
2020-06-27 10:17:16 MSK ПРЕДУПРЕЖДЕНИЕ:  атрибут оператора "function" не распознан
2020-06-27 10:17:16 MSK ОШИБКА:  должна быть указана процедура оператора
2020-06-27 10:17:16 MSK ОПЕРАТОР:  CREATE OPERATOR orafunc.<> (
     FUNCTION = orafunc.boolean_not_equals_integer,
     LEFTARG = boolean,
     RIGHTARG = integer
 );
источник