Postgres表分区范围按表达式

时间:2018-08-31 02:54:06

标签: postgresql database-partitioning postgresql-10

我是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))

如果我尝试使用文字值创建分区,则可以正常工作。

我正在Linux上使用Postgres 10。

1 个答案:

答案 0 :(得分:-1)

经过反复试验,我意识到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 ...