Комментарии 2
Я создаю будущую партицию
Добавляю
CHECK NOT VALIDна эту партицию, который проверит, что в таблице нет лишних данных, не удовлетворяющих условию ограничения диапазона блоковВключаю валидацию
Прикрепляю эту партицию к главной таблице
Удаляю этот
CHECK
Констрейнт надо добавлять на default, а не на новую пустую партицию. Тогда всё будет работать и остальная статья не понадобится.
CREATE TABLE events_partition_m66_m67 (LIKE events INCLUDING ALL);
ALTER TABLE events_partition_default
ADD CONSTRAINT events_partition_default_partition_check
CHECK event_block < 66000000 NOT VALID;
ALTER TABLE events_partition_default
VALIDATE CONSTRAINT events_partition_default_partition_check;
ALTER TABLE events
ATTACH PARTITION events_partition_m66_m67 FOR VALUES FROM (66000000) TO (67000000);
ALTER TABLE events_partition_default
DROP CONSTRAINT events_partition_default_partition_check;
Я обратился к GPT, описав проблему и он мне подсказал "действенный 100%-й способ"...
Ну да ну да , кому нужна эта документация )
https://postgrespro.ru/docs/postgresql/17/ddl-partitioning
Точно так же, если в секционированной таблице есть секция DEFAULT, рекомендуется создать ограничение CHECK, которое исключает ограничение секции, подлежащей присоединению. Если этого не сделать, то секция DEFAULT будет просканирована, чтобы убедиться, что она не содержит записей, которые должны быть расположены в присоединяемой секции.

Как я распилил 1,1 ТБ default-партиции и не уронил прод