- 11.6
При попытке update поля по которому определены партиции и при котором запись должна перемещаться между партициями - сервер падает
SQL Error [57P03]: FATAL: the database system is in recovery mode
Я в недоумении, при этом PARTITION BY RANGE - работает нормально
Гуглю - ничего похожего не нахожу
Сталкивался ли кто?
Что делать? И возможно ли что сделать?
Для начала обновите ПГ, текущая актуальная версия - 11.10.
К сожалению, я такой свободой не обладаю Проблема именно с 11.6
Ну так объясните тем, кто обладает нужными правами, что минорная версия ПГ должна быть всегда свежей, особенно при наличии ошибок.
Так пусть это сделает тот, кто обладает. И вообще, использование не последних minor — это безграмотное администрирование. А раз проблема воспроизводится локально (на тестовом кластере, я так понимаю), обновите пока хотя бы его и попробуйте повторить.
Только что проверил на 11.10 Проблема - та же самая Инстанс падает Попробую сделать совсем чистый эксперимент Вычистить все триггеры, констрэйнты Но выглядит все странно
Другое дело. Да, попробуйте сделать repro (и написать bug report, если выяснится, что "левых" расширений и т.п. в этом не замешано). А можете \d+ таблицы и запрос (тот UPDATE) показать?
DDL выглядит страшноватым -- Drop table -- DROP TABLE public."document"; CREATE TABLE public."document" ( id uuid NOT NULL DEFAULT gen_random_uuid(), document_type text NOT NULL, document_extension text NOT NULL, document_status text NOT NULL, number_of_pages int2 NULL, creation_date timestamptz NULL, creation_user uuid NOT NULL DEFAULT 'ce2e6c29-3ff3-4fff-a61e-db7a7d80b0c7'::uuid, last_modified_date timestamptz NULL, last_modified_user uuid NULL DEFAULT '00000000-0000-0000-0000-000000000000'::uuid, org_id int2 NULL, document_name text NULL, checksum varchar NULL, is_generated bool NOT NULL DEFAULT false, meta jsonb NOT NULL DEFAULT '{}'::jsonb, file uuid NULL, is_deleted bool NOT NULL DEFAULT false, creation_user_name text NULL, last_modified_user_name text NULL, "sequence" int4 NULL, is_customs_relevant bool NULL, document_flags int8 NOT NULL DEFAULT 0, document_blobs jsonb NOT NULL DEFAULT '{}'::jsonb, document_url text NULL DEFAULT ''::text, CONSTRAINT chk_document_meta CHECK (pp_chk_document_meta(meta)), CONSTRAINT document_pkey PRIMARY KEY (id, document_type), CONSTRAINT fk_doc_creation_user FOREIGN KEY (creation_user) REFERENCES user_pp(id), CONSTRAINT fk_doc_document_status FOREIGN KEY (document_status) REFERENCES document_status(name), CONSTRAINT fk_doc_document_type FOREIGN KEY (document_type) REFERENCES document_type(name), CONSTRAINT fk_doc_extension FOREIGN KEY (document_extension) REFERENCES document_extension(name), CONSTRAINT fk_doc_org FOREIGN KEY (org_id) REFERENCES org_id(org_id) ) PARTITION BY LIST (document_type); CREATE INDEX ix_doc_file ON ONLY public.document USING btree (file) INCLUDE (document_type); CREATE INDEX ix_doc_last_modified_user_idx ON ONLY public.document USING btree (last_modified_user); CREATE INDEX ix_doc_org_id_idx ON ONLY public.document USING btree (org_id); CREATE INDEX ix_doc_status_idx ON ONLY public.document USING btree (document_status); CREATE INDEX ix_doc_type_idx ON ONLY public.document USING btree (document_type); CREATE INDEX ix_document_creation_user ON ONLY public.document USING btree (creation_user); CREATE UNIQUE INDEX ui_doc_checksum_document_type ON ONLY public.document USING btree (document_type, COALESCE(NULLIF((checksum)::text, ''::text), (id)::text)); -- Table Triggers CREATE TRIGGER trg_document_audit_del AFTER DELETE ON public.document REFERENCING OLD TABLE AS deleted FOR EACH STATEMENT EXECUTE PROCEDURE trg_document_audit(); CREATE TRIGGER trg_document_audit_ins AFTER INSERT ON public.document REFERENCING NEW TABLE AS inserted FOR EACH STATEMENT EXECUTE PROCEDURE trg_document_audit(); CREATE TRIGGER trg_document_audit_upd AFTER UPDATE ON public.document REFERENCING NEW TABLE AS inserted FOR EACH STATEMENT EXECUTE PROCEDURE trg_document_audit(); CREATE TABLE public.doc_customs PARTITION OF public.document ( CONSTRAINT chk_doc_customs_document_type CHECK ((document_type = ANY (ARRAY['customs_declaration'::text, 'customs_overview'::text]))) )FOR VALUES IN ('customs_declaration', 'customs_overview'); CREATE TABLE public.doc_dflt PARTITION OF public.document DEFAULT; CREATE TABLE public.doc_src PARTITION OF public.document ( CONSTRAINT chk_doc_src_document_type CHECK ((document_type = 'unknown'::text)) )FOR VALUES IN ('unknown'); UPDATE ломающий инстанс - любой UPDATE, который должен приводить к перемещению записи между партициями E.g UPDATE DOCUMENT SET document_type = 'unknown' WHERE id = 'e2f09363-472c-4c85-a80e-02ac5afe7dc0';
Обсуждают сегодня