Usando Postgres 9.6
Estou tentando criar um índice em um tipo adt_flds com um campo também chamadoadt_flds
create type adt_flds as
(
created_at timestamp
, updated_at timestamp
, created_by text
, updated_by text
, created_by_client_addr inet
, updated_by_client_addr inet
, created_by_client_cmptr text
, updated_by_client_cmptr text
);
Minha tentativa é a seguinte para
esquema = documento
tabela = training_complete_history
campo = adt_flds
coluna de campo = created_at
SQL
create index training_complete_history_adt_flds_index
on document.training_complete_history ((adt_flds).created_at);
Infelizmente, minha tentativa produz o seguinte erro.
[42601] ERRO: erro de sintaxe em ou próximo a ")" Posição: 114.
Como eu indexaria corretamente created_at
dentro adt_flds
?
Você precisa de um par extra de parênteses em torno do termo indexado se não for uma coluna ou uma chamada de função.
Nas palavras da documentação :
Eu acho que é uma má ideia usar um tipo composto se você quiser usar partes dele em uma
WHERE
condição de junção. Viola a primeira forma normal.