Não é possível carregar a tabela particionada PostGIS no QGIS

8

Particionei uma tabela (mais de 13 milhões de dados de pontos geográficos) no meu banco de dados PostgreSQL com esta instrução:

CREATE TABLE data.data_fusion (
 id                BIGINT NOT NULL,
 source            TEXT,
 id_source         VARCHAR,
 id_vn             INTEGER,
 taxref_id         INTEGER,
 ...
 geom              GEOMETRY(Point, 2154),
 equipe            VARCHAR,
 exp_excl          BOOLEAN
 )
PARTITION BY LIST (equipe);

E para cada tabela filho, criei chave primária e índices como neste exemplo.

CREATE TABLE data.data_fusion_lpo07 PARTITION OF data.data_fusion FOR VALUES IN ('lpo07');
ALTER TABLE data.data_fusion_lpo07 ADD PRIMARY KEY (id);
CREATE INDEX ON data.data_fusion_lpo07 (source);
CREATE INDEX ON data.data_fusion_lpo07 (id_vn);
CREATE INDEX ON data.data_fusion_lpo07 (taxref_id);
CREATE INDEX ON data.data_fusion_lpo07 (nom_vern);
CREATE INDEX ON data.data_fusion_lpo07 (nom_sci);
CREATE INDEX ON data.data_fusion_lpo07 USING GIST (geom);
CREATE INDEX ON data.data_fusion_lpo07 (equipe);
CREATE INDEX ON data.data_fusion_lpo07 (code_nidif_oiseau);

Na verdade, não há problema em carregar tabelas filho no meu projeto QGIS, mas não consigo carregar a tabela pai 'data.data_fusion'. Eu tenho as seguintes mensagens de erro:

  • Usando o painel do navegador:

    Layer is not valid: The layer dbname='dbwork' host=bdd.faura.org port=5432 sslmode=require authcfg=lpoaura srid=2154 type=Point table="data"."data_fusion" (geom) sql= is not a valid layer and can not be added to the map
  • Usando o menu Adicionar camada

    dbname='dbwork' host=bdd.faura.org port=5432 sslmode=require authcfg=lpoaura key='""' estimatedmetadata=true srid=2154 type=Point table="data"."data_fusion" (geom) sql= is an invalid layer - not loaded

O console do PostgreSQL indica um problema de pk (sem pk na tabela pai):

  Unexpected relation type 'p'.
  PostgreSQL layer has no primary key.

Existe uma maneira de carregar minha tabela particionada pai no QGIS (v 2.18.14)?

lpofredc
fonte

Respostas:

6

Parece que o particionamento nativo do PostgreSQL não é suportado no QGIS 2.x. Ele deve funcionar como esperado no QGIS 3. Consulte o ticket relacionado e confirme .

Como solução alternativa, você pode criar uma exibição que seja apenas a SELECT *partir da sua tabela mestre e inseri-la no QGIS.

dbaston
fonte
Obrigado! isso funcionou para mim. Mesmo com a segurança no nível da linha ativada na tabela! Na verdade, eu não posso migrar para a versão mais recente do qgis, há um problema de conexão com o PostgreSQL com o protocolo SSL seguro, como mencionada nesta edição: issues.qgis.org/issues/17672
lpofredc