Estou tentando criar uma partição nos últimos 30 dias. No entanto, quando executo este código:
create table Test_Older30day partition of Test
for values from (current_timestamp + interval'-30 day') to (current_timestamp);
Eu recebo este erro:
syntax error at or near "current_timestamp"
Estou confuso, o que estou fazendo de errado aqui?
a tabela fica assim:
create table if not exists Test(
source_name varchar,
event_name varchar,
service_data json,
stamp timestamptz
)partition by range(stamp);
os tipos de dados correspondem e eu usei a partição por intervalo no campo de data.
Já sei que posso inseri-los manualmente
create table Test_Older30day partition of Test
for values from ('2019-08-11') to ('2019-09-11')
Curtiu isso. O que estou tentando tentar é uma maneira mais automatizada de fazer isso. Basicamente, a ideia é evitar digitá-lo todos os meses ou semanas. Apenas para executar a consulta e usaria a data atual.
Você está usando incorretamente valores não literais para especificações vinculadas à partição. A documentação diz que
partition_bound_spec
éou seja, apenas literais ou palavras-chave especiais
MINVALUE
sãoMAXVALUE
permitidos.current_timestamp
é uma função, não um valor literal.Conforme sugerido nos comentários, você precisará gerar sua
create table ... partition ...
instrução dinamicamente se quiser usar o valor de retorno da função como o limite da partição.