-
Notifications
You must be signed in to change notification settings - Fork 69
Description
Здравствуйте, спасибо за модуль!
Использую RANGE partitioning scheme.
Таблицу log, разбиваю по вхождению даты (log_date) в месяцы (одна партиция - один месяц)
select create_range_partitions(
'log',
'log_date',
(generate_range_bounds(
'2017-01-01'::DATE,
'1 month'::INTERVAL,
12)),
part.generate_partition_names(
'_prt',
'log',
'2017-01-01'::DATE,
'1 month'::INTERVAL, 12)
);
При вставке мне нужно складывать в специальную trash партицию записи не удовлетворяющие диапазонам существующих партиций (если значение даты придёт null или не подходит созданным партициям)
Как это можно организовать ?
Триггер BEFORE INSERT на родительской таблице не работает, т.к. INSERT выполняется уже на партиции
Если public.pathman_config.range_interval isnull, то при вставке получаю:
ERROR: cannot spawn new partition for key '2019-05-01 00:00:00'
DETAIL: default range interval is NULL
Тогда задаю
select set_interval('log', '1 month'::INTERVAL);
Вставка проходит, автоматически создаются партиции (не могу им задать произвольное имя),
срабатывает callback заданый через set_init_callback
По условию не вхождения в диапазон дат там DROP-аю неудовлетворяющие партиции, но процесс зацикливается (похоже механизм пытается пересоздать если партиция не создана).