Olá a todos.
Deparei-me hoje com o seguinte problema: a minha instalação de QGIS 3.14 não fazia a “Identificação de feições” com layers de Postgis.
Tratava-se de um problema no Postgis: a “identificação …” usa a função ST_CurveToLine. Pelo menos no Postgis versão 3.0.1, essa função surge com 3 “signatures” diferentes, das quais 2 delas estão obsoletas, já deveriam ter sido removidas e não permitem o seu uso , que termina em erro com a mensagem:
hint: could not choose a best candidate function
Para resolver o problema, removendo as assinaturas obsoletas, basta executar:
ALTER EXTENSION postgis DROP function st_curvetoline(geometry, INTEGER)
DROP function st_curvetoline(geometry, INTEGER)
ALTER EXTENSION postgis DROP function st_curvetoline(geometry)
DROP function st_curvetoline(geometry)
Para garantir que não irão quebrar a vossa instalação, verifiquem primeiro que se manterá uma assinatura exatamente igual a esta (no schema public, atenção aos “DEFAULT”):
ST_CurveToLine(geom geometry, tol float8 DEFAULT 32, toltype integer DEFAULT 0, flags integer DEFAULT 0)
Parece que na equipa Postgis alguém se esqueceu de aplicar este changeset:
https://trac.osgeo.org/postgis/changeset/16045
Cumprimentos
Rui Cavaco