No PostgreSQL 9.2 eu não tive nenhum problema em criar um índice que tivesse um tipo de geografia (postGIS) e um inteiro como um índice composto. Mas agora (9.6) ele reclama da criação do índice e não entendo a dica que está fornecendo:
As colunas e dados são todos criados corretamente, o Postgres está reclamando no índice de criação.
ERROR: data type integer has no default operator class for access method "gist"
HINT: You must specify an operator class for the index
or define a default operator class for the data type.
********** Error**********
ERROR: data type integer has no default operator class for access method "gist"
SQL state: 42704
Hint: You must specify an operator class for the index
or define a default operator class for the data type.
A definição do esquema é a seguinte:
- Table: portal.inventory
-- DROP TABLE portal.inventory;
CREATE TABLE portal.inventory
(
type character varying,
pid integer,
size bigint,
date timestamp without time zone,
path character varying,
outline geography(Polygon,4326)
)
WITH (
OIDS=FALSE
);
ALTER TABLE portal.inventory
OWNER TO postgres;
-- Index: portal.inventory_compound_idx
-- DROP INDEX portal.inventory_compound_idx;
CREATE INDEX inventory_compound_idx
ON portal.inventory
USING gist
(outline, pid);
-- Index: portal.inventory_icompound_idx
-- DROP INDEX portal.inventory_icompound_idx;
CREATE INDEX inventory_icompound_idx
ON portal.inventory
USING gist
(pid, outline);
Você precisa instalar um específico
EXTENSION
em seu banco de dados:De acordo com a documentação do PostgreSQL em btree_gist :
(ênfase minha)
btree_gist
faz parte da instalação padrão (atual) do PostgreSQL, portanto, você não precisa instalar nenhum arquivo em seu sistema.Depois de instalar esta extensão, você pode executar todas estas instruções em uma instalação limpa do PostgreSQL 9.6.2, sem falhas:
E execute todas as suas
CREATE
instruções sem falhas.NOTA: Isso também foi necessário para a versão 9.2, de acordo com o comentário de @Erwin Brandstetter. Então, provavelmente, se você fizer um dump do banco de dados da versão 9.2, a
CREATE EXTENSION btree_gist ;
instrução deve aparecer.