Estou tendo um problema com o scaffolding PostgreSQL DB porque o npgsql não lida bem com tabelas com dois índices na mesma coluna. Aqui está um link para o meu projeto no github .
Estou tentando encontrar esses índices/tabelas para poder excluí-los do meu comando de scaffolding.
Exemplo:
CREATE TABLE public.altreproc (
apcod integer NOT NULL,
aptip character(3),
apcam character(3),
CONSTRAINT altreproc_pkey PRIMARY KEY (apcod)
);
CREATE INDEX ialtreproc1
ON public.altreproc
USING btree
(aptip COLLATE pg_catalog."default");
CREATE INDEX ialtreproc2
ON public.altreproc
USING btree
(apcam COLLATE pg_catalog."default");
CREATE INDEX ialtreproc3
ON public.altreproc
USING btree
(aptip COLLATE pg_catalog."default" DESC);
Meu problema é quando uma tabela tem 2 índices diferentes com a mesma coluna (um ASC
e um DESC
); Estou tentando consultar tabelas/índices como este no db que estou tentando scaffold.
Meu objetivo é encontrar tabelas que contenham mais de um índice na mesma coluna.
Esta consulta recupera uma lista completa de índices construídos na(s) mesma(s) coluna(s) da tabela na mesma ordem:
pg_index.indkey
é tipo de dadoint2vector
e contém, citando o manual :Portanto, a correspondência nesta coluna afirma as mesmas colunas na mesma ordem.
Ordem de classificação, classe de operador, agrupamento ou qualquer outro decorador pode diferir.
Restrições:
A parte: o índice
ialtreproc3
no seu exemplo é frete morto, você deve removê-lo. O Postgres pode escanear índices em ambas as direções com praticamente a mesma velocidade. Exceção: índices de várias colunas com ordem de classificação mista. Ver:Embora a única diferença seja a ordem de classificação, não faz sentido manter vários índices btree na mesma coluna.