Диапазон разделов таблицы Postgres по выражению - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в разделах таблиц в Postgres, и я пытался что-то, что, похоже, не работает. Вот упрощенная версия проблемы:

cREATE table if not exists Location1 
PARTITION OF "Location"
FOR VALUES FROM
(extract(epoch from now()::timestamp))  
TO 
(extract(epoch from now()::timestamp)) ;

insert into "Location" ("BuyerId", "Location") 
values (416177285, point(-100, 100));

Не удается с:

ERROR:  syntax error at or near "extract"
LINE 2:     FOR VALUES FROM (extract(epoch from now()::timestamp))

Если я пытаюсь создать раздел, используя буквальные значения, он работает нормально.

Я использую Postgres 10 на Linux.

1 Ответ

0 голосов
/ 01 сентября 2018

После долгих проб и ошибок я понял, что Postgres 10 на самом деле не имеет полноценной системы секционирования из коробки. Для пригодной для использования многораздельной базы данных необходимо установить следующие модули postgres:

pg_partman https://github.com/pgpartman/pg_partman (буквально подарок от Бога)

pg_jobmon https://github.com/omniti-labs/pg_jobmon (чтобы отслеживать, что делает pg_partman)

Приведенный выше совет предназначен для новичков в сцене, чтобы помочь вам избежать многих головных болей.

Я предполагал, что автоматическое создание разделов, выполняемых postgres-core, было не сложно, но очевидно, что разработчики postgres знают то, чего я не знаю?

Если какую-либо реляционную базу данных из 80-х попросят вставить строку, то она пройдет успешно после проверки ограничений.

В последней версии Postgres 2018 предлагается вставить строку: «Извините, я не знаю, где ее разместить».

Это хорошая первая попытка, но, надеюсь, у Postgres 11 будет правильная система разбиения OOTB ...

...