我正在尝试为过去 30 天创建一个分区。然而,当我运行这段代码时:
create table Test_Older30day partition of Test
for values from (current_timestamp + interval'-30 day') to (current_timestamp);
我收到此错误:
syntax error at or near "current_timestamp"
我很困惑,我在这里做错了什么?
该表如下所示:
create table if not exists Test(
source_name varchar,
event_name varchar,
service_data json,
stamp timestamptz
)partition by range(stamp);
数据类型匹配,我在日期字段上使用了按范围分区。
我已经知道我可以手动插入它们
create table Test_Older30day partition of Test
for values from ('2019-08-11') to ('2019-09-11')
像那样。我试图尝试的是一种更自动化的方式。基本上,这个想法是避免每个月或每周输入一次。只是为了运行查询,它将使用当前日期。
您错误地将非文字值用于分区绑定规范。文档指出
partition_bound_spec
_也就是说,只允许使用文字或特殊
MINVALUE
关键字MAXVALUE
。current_timestamp
是一个函数,而不是文字值。正如评论中所建议的,
create table ... partition ...
如果要将函数返回值用作分区绑定,则需要动态生成语句。