PostGIS 3.7.0rc3 eleva requisitos mínimos e separa extensões de geocodificação do núcleo
O PostGIS 3.7.0rc3, terceiro candidato a release da série 3.7, roda melhor com o PostgreSQL 19 RC 1 e a GEOS 3.15.0, mas corta de vez o suporte ao PostgreSQL 12 e 13 e tira duas extensões do pacote principal.
O PostGIS 3.7.0rc3, terceiro candidato a release da série 3.7, roda melhor com o PostgreSQL↳PostgreSQL11 conteúdosPostgreSQL via SSL com GolangData · abr 20195 itens legais sobre data types do PostgreSQLData · mar 20195 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → 19 RC 1 e a GEOS 3.15.0, mas corta de vez o suporte ao PostgreSQL 12 e 13 e tira duas extensões do pacote principal.
O PostGIS 3.7.0rc3, terceiro candidato a release da série 3.7, roda melhor com o PostgreSQL 19 RC 1 e a GEOS 3.15.0, mas corta de vez o suporte ao PostgreSQL 12 e 13 e tira duas extensões do pacote principal.
O time do PostGIS publicou o terceiro release candidate da série 3.7, o PostGIS 3.7.0rc3, segundo o anúncio publicado no Planet PostgreSQL. É um release candidate, não uma versão estável: serve para quem já testa upgrades em ambiente de homologação antes do GA, e traz uma lista de mudanças que qualquer DBA responsável por dados geoespaciais precisa ler com calma antes de agendar uma janela de manutenção.
A combinação recomendada pelo projeto é PostgreSQL 19 RC 1, GEOS 3.15.0, postgis_tiger_geocoder 2025.2 e address_standardizer como peças separadas. Essa última parte já é a primeira mudança estrutural relevante: duas extensões que até a série 3.6 viviam dentro do pacote principal agora têm vida própria, e isso tem consequência direta em quem automatiza build e deploy.
Piso de compatibilidade mais alto
A versão exige GEOS 3.10 ou mais recente, PostgreSQL entre 14 e 19beta3, Proj 6.1+ e libgmp. Quem quiser todos os recursos da extensão principal precisa de GEOS 3.15+; para os recursos completos de postgis_sfcgal, o piso é SFCGAL 2.3+. Python↳Python56 conteúdosVSCode + Python + Alexa: Desenvolva e teste skills para alexa localmente com pythonDev (Back & Front) · out 2025Dominando decoradores em Python: um guia completo com exemplosDev (Back & Front) · jan 2025Desenvolvimento de software: diferenças entre Python, JavaScript e JavaGestão Dev & TI · nov 2024Ver tudo em Dev (Back & Front) → 3 também virou requisito, mas só para build da documentação, não para o runtime do banco.
O corte mais sensível em produção é a remoção de suporte ao PostgreSQL 12 e 13 (ticket #6024, de Regina Obe) e o fim da compatibilidade com GEOS anterior à 3.10 (#6079, de Sandro Santilli). Quem ainda mantém instância em PostgreSQL 12 ou 13 com PostGIS precisa planejar o pg_upgrade da engine antes mesmo de pensar na extensão: não existe caminho de instalação do 3.7 sobre essas versões de banco.
Em resumo: antes de testar o 3.7.0rc3 em qualquer ambiente, confira a saída de postgis_full_version() e a versão de GEOS instalada no sistema operacional, porque é isso que vai travar ou liberar o upgrade, não a versão do PostGIS em si.
Duas extensões saem de casa
Duas mudanças de empacotamento merecem atenção de quem usa geocodificação de endereços dos Estados Unidos:
address_standardizerfoi removida do repositório principal e passa a viver em projeto próprio no GitHub (#6053, Paul Ramsey);postgis_tiger_geocodersegue o mesmo caminho, agora mantida em repositório separado no OSGeo (#6052, Regina Obe).
Na prática, isso significa que scripts de provisionamento que hoje assumem essas extensões dentro do pacote postgis principal vão quebrar silenciosamente depois do upgrade, porque a extensão simplesmente não estará mais lá para ser habilitada com CREATE EXTENSION. Quem usa geocodificação TIGER em produção precisa localizar o novo repositório e ajustar o pipeline de build antes de migrar, não depois.
Outras quebras de compatibilidade na lista
O changelog registra mais quatro mudanças de comportamento que vale revisar linha a linha, porque nenhuma delas gera erro de instalação: elas mudam o resultado de funções que já estão em uso.
- Em topologia, as funções de construção agora interpretam tolerância
0literalmente como zero; o comportamento antigo (onde0significava "use a precisão da topologia") passa a ser acionado com-1(#5688, Sandro Santilli). Quem chama essas funções com tolerância explícita0precisa revisar o parâmetro. ST_GeoHashmudou o round trip viaST_GeomFromGeoHash(#6040, Paul Ramsey).CG_AlphaShapepassa a retornar sempreMultiPolygon, em vez do tipo anterior (GH-848, Jean Felder), código que assumePolygonna saída dessa função vai quebrar em runtime, não em compilação.- O agregado
ST_MemCollectfoi removido (#1793, Darafei Praliaskouski).
Nenhuma dessas mudanças aparece em testes de fumaça simples. Elas só aparecem quando alguém roda a bateria de regressão da aplicação contra o banco atualizado, o que reforça por que release candidate existe: para ser testado contra a carga real antes do GA.
O que o release entrega de novo
Nem tudo em um release candidate é corte. A lista de novos recursos é extensa; três merecem destaque para quem opera em produção.
O loader ganhou reforma de argumentos (#1124 e tickets relacionados, Darafei Praliaskouski): shp2pgsql agora pode criar tabelas UNLOGGED, escolher o nome da coluna de feature id, e tanto shp2pgsql quanto raster2pgsql aceitam --if-not-exists para tornar a criação idempotente, além de opções longas equivalentes às antigas flags curtas. Para quem roda carga em pipeline de CI, isso elimina scripts caseiros que faziam DROP TABLE IF EXISTS antes do import.
ST_DWithin foi otimizada com GEOSPreparedDistance e cache de geometria preparada (#2614, Paul Ramsey), o que deve reduzir custo em consultas de proximidade repetidas sobre a mesma geometria. Vale testar o plano de execução antes e depois do upgrade com EXPLAIN (ANALYZE, BUFFERS) em cargas que já usam essa função de forma intensiva, porque ganho de performance em predicado espacial costuma depender muito da seletividade do índice GiST por trás.
Também chegam ST_IsSimpleDetail (#6132, Sandro Santilli), ST_CoverageEdges (que devolve o MultiLinestring de bordas distintas de um coverage poligonal) e ST_MinimumSpanningTree como window function, ambas de Paul Ramsey. São funções de análise topológica que antes exigiam lógica própria em SQL ou processamento externo.
Um dado concreto de performance
O changelog traz um número que vale citar com a devida ressalva de origem: segundo Darafei Praliaskouski, compilar os módulos de extensão do PostgreSQL com -fno-semantic-interposition (quando disponível) permite que o LTO otimize chamadas dentro da mesma DSO sem passar pela PLT do módulo, e isso reduziu em cerca de 4% a latência do agregado ST_Collect num microbenchmark local com pgbench, rodando sobre PostgreSQL 18, em 100 mil grupos de quatro pontos.
É um ganho real, mas é um microbenchmark de um cenário específico (agregação de quatro pontos, em volume de 100 mil grupos), não uma promessa genérica de velocidade. Antes de atribuir qualquer ganho de produção a essa mudança de build, meça a carga própria: o plano de execução de cada consulta de agregação espacial muda conforme o índice e a distribuição dos dados.
Caminho de atualização e cautela de DBA
Para quem já está na série 3, o processo declarado pelo projeto continua simples na superfície:
SELECT postgis_extensions_upgrade();Quem ainda vem da série 2 usa ALTER EXTENSION postgis UPDATE;. Mas simplicidade no comando não dispensa disciplina de operação: antes de rodar qualquer um dos dois em produção, vale checklist de DBA, não só o changelog.
- Backup completo e testado (não apenas o
pg_dump, mas um restore validado em ambiente isolado) antes de tocar em qualquer extensão espacial em banco de produção. - Confirmar a versão de GEOS, Proj e SFCGAL instaladas no sistema operacional contra o piso exigido pelo 3.7, porque falha de dependência nativa costuma aparecer só na hora do
CREATE EXTENSIONou do upgrade, não antes. - Rodar a suíte de regressão da aplicação contra as quatro mudanças de comportamento listadas acima, com atenção especial a chamadas de topologia com tolerância
0e a qualquer código que trate o retorno deCG_AlphaShapecomoPolygon. - Validar, se usados, os pipelines que dependem de
address_standardizeroupostgis_tiger_geocoder, apontando para os novos repositórios antes do upgrade.
Como ainda é release candidate, a recomendação natural é testar em ambiente de homologação com carga representativa antes de pensar em produção; o changelog deste rc3 inclui correções desde o PostGIS 3.6.4 e novas funcionalidades, sem data de GA publicada na fonte. Quem administra dados geoespaciais críticos ganha mais testando agora, em paralelo, do que esperando a versão estável para descobrir as quebras de compatibilidade.
Fonte 1: Planet PostgreSQL (https://postgr.es/p/9ze)
PostGIS 3.7.0rc3 | PostGIS
Home / News PostGIS 3.7.0rc3
The PostGIS Team is pleased to release PostGIS 3.7.0rc3! Best Served with PostgreSQL 19 RC 1 , GEOS 3.15.0 , postgis_tiger_geocoder 2025.2 , and address_standardizer .
This version requires GEOS 3.10+, PostgreSQL 14-19beta3, Proj 6.1+, and libgmp. To take advantage of all postgis extension features, GEOS 3.15+ is needed. To take advantage of all postgis_sfcgal extension features SFCGAL 2.3+ is needed. Python 3 is a new requirement to build the documentation. Visual examples in the docs are off by default. To build docs with them, configure with --with-visual-examples and make sure you have a running PostgreSQL instance; they are then generated automatically when building the docs (or explicitly with make -C regress visual-examples ).
This release contains fixes since 3.7.0rc3 release.
3.7.0rc3
source download md5
NEWS
HTML Online en ja zh_Hans fr
PDF docs: en ja , zh_Hans , fr
Cheat Sheets:
postgis: en ja zh_Hans fr
postgis_raster: en ja zh_Hans fr
postgis_topology: en ja zh_Hans fr
postgis_sfcgal: en ja zh_Hans fr
This release is a release candidate of a major release, it includes bug fixes since PostGIS 3.6.4 and new features.
To build docs, first run visual examples and make sure you have a running PostgreSQL instance.
make -C regress visual-examples
Breaking Changes
#5688 , [topology] topology building functions now interpret tolerance 0 (old default) to really mean 0 and want -1 (new default) to mean “use topology precision” (Sandro Santilli)
#6024 , Remove support for PostgreSQL 12 and 13 (Regina Obe)
#6040 , ST_GeoHash round trip through ST_GeomFromGeoHash (Paul Ramsey)
#6053 , [address_standardizer] Extension removed and moved to https://github.com/postgis/address_standardizer (Paul Ramsey)
#6052 , [tiger_geocoder] Extension removed and moved to https://git.osgeo.org/postgis/postgis_tiger_geocoder (Regina Obe)
#6079 , Remove support for GEOS < 3.10 (Sandro Santilli)
#1793 , Remove ST_MemCollect aggregate (Darafei Praliaskouski)
GH-848 , CG_AlphaShape now returns a MultiPolygon (Jean Felder)
[docs] Python 3 and an SVG rasterizer (rsvg-convert preferred, GraphicsMagick or ImageMagick supported) now required for doc dynamic image rendering (Darafei Praliaskouski)
New Features
#6132 , ST_IsSimpleDetail (Sandro Santilli)
#1124 , #2935 , #3033 , #4658 , #4659 , [loader] Rework loader arguments: shp2pgsql can create UNLOGGED tables and choose the feature id column name, shp2pgsql –drop-table can emit DROP TABLE before prepare output, raster2pgsql/shp2pgsql expose loader actions as long options, both loaders accept long aliases for existing options, and
-if-not-exists makes creation actions idempotent (Darafei Praliaskouski)
#4208 , Add single-geometry variants of ST_MaxDistance and ST_LongestLine (Darafei Praliaskouski)
[topology] FindVertexSegmentPairsBelowDistance function (Sandro Santilli)
ST_CoverageEdges, returns MultiLinestring of distinct shared edges in polygonal coverage (Paul Ramsey)
ST_MinimumSpanningTree, window function to calculate MST (Paul Ramsey)
#5993 , [topology] Add max_edges parameter to TopoGeo_AddLinestring (Sandro Santilli)
#6001 , support MultiLineString in ST_MakeLine (Paul Ramsey)
#2858 , ST_MMin and ST_MMax (Paul Ramsey)
#5941 , [raster] Support GDT_Float16 pixel type (Darafei Praliaskouski)
#5992 , Optimize GiST index for repeated edge subdivision in topology (Darafei Praliaskouski)
#5702 , Allow the compiler to detect the parallelism -flto=auto (Darafei Praliaskouski)
#4798 , ST_AsGeoJSON warns about duplicate property keys (Darafei Praliaskouski)
#4222 , [raster] ST_DumpAsPolygons honours PostgreSQL interrupts (Darafei Praliaskouski)
#5889 , [topology] Include representative locations in topology build errors (Darafei Praliaskouski)
#2614 , Use GEOSPreparedDistance and caching to accelerate ST_DWithin (Paul Ramsey)
GH-839 , ST_Multi support for TIN and surfaces (Loïc Bartoletti)
#4398 , Add ST_CatmullSmoothing smoothes but retains original vertices (Paul Ramsey)
#4560 , ST_3DInterpolatePoint for M interpolation from XYZ inputs (Paul Ramsey)
#1291 , ST_MakePolygon support for curved rings (Darafei Praliaskouski)
GT-270 , Add NURBSCurve (Loïc Bartoletti)
#2863 , Add ST_XSize, ST_YSize, ST_ZSize, and ST_MSize dimension helpers (Darafei Praliaskouski)
GH-870 , CG_ApproximateMedialAxis: Add an overload to project the medial axis to the boundary. (Loïc Bartoletti)
GH-871 , Add CG_PolygonRepair (Loïc Bartoletti)
GH-872 , SFCGAL roof generation algorithms (Loïc Bartoletti)
GT-806 , #6124 –with-visual-examples opt-in configure switch to build dynamic images (Regina Obe)
Enhancements
#6140 , #6138 , #6129 , [topology] improve topology building and checking robustness (Sandro Santilli)
#2045 , pgsql2shp query dumps no longer require temporary table privileges (Darafei Praliaskouski)
#1577 , [loader] Report unsupported .zip archive input before trying to open shapefile sidecar files (Darafei Praliaskouski)
#3158 , Move geometry and geography typmod bit helpers out of the public liblwgeom header (Darafei Praliaskouski)
#3776 , [raster] Keep distinct 32-bit integer pixel values separate in ST_DumpAsPolygons (Darafei Praliaskouski)
#4678 , [raster] Move st_sum4ma neighborhood callback to C (Darafei Praliaskouski)
#2116 , [raster] Add ST_Value nearest-neighbor boundary options (Darafei Praliaskouski)
#2804 , #4315 , [raster] Support two-argument ST_MapAlgebra callbacks and pass callback call data as actual arguments (Darafei Praliaskouski)
#6062 , [topology] Stop using recursive snapping, for improved robustness (Sandro Santilli)
#6065 , Improved winding order computation robustness for rings having collapsed elements (Sandro Santilli)
#2137 , [raster] Reuse matching source raster overviews in raster2pgsql -l (Darafei Praliaskouski)
#4749 , Use point-in-polygon predicate fast paths for point-only GeometryCollections (Darafei Praliaskouski)
#2807 , [raster] Preserve missing NODATA values in ST_MapAlgebra outputs (Darafei Praliaskouski)
#2832 , [raster] Avoid padding single-tile raster2pgsql overviews when padding is not requested (Darafei Praliaskouski)
#2623 , Generate a pgsql2shp GID field when exporting geometry-only shapefiles (Darafei Praliaskouski)
#2850 , Preserve pgsql2shp numeric precision and scale in DBF metadata (Darafei Praliaskouski)
Build PostgreSQL extension modules with -fno-semantic-interposition when available so LTO can optimize same-DSO calls to exported PostGIS entry points directly instead of routing through the module PLT; in a local PostgreSQL 18 pgbench microbenchmark over 100k four-point groups this reduced ST_Collect aggregate latency by about 4% (Darafei Praliaskouski)
#5973 , Install PostGIS utilities under pg_config --bindir by default and document pg_config -derived install paths more accurately (Darafei Praliaskouski)
#2808 , Clarify postgis_full_version() output when installed component scripts are newer than core scripts (Darafei Praliaskouski)
#2838 , Emit valid X3D Coordinate nodes for 2D polygon output (Darafei Praliaskouski)
GH-899 , [raster] Honor PostgreSQL interrupts in long-running GDAL progress callbacks (Darafei Praliaskouski)
#6073 , #6074 , Stabilize geography LRS endpoint interpolation and pole centroid regressions on 32-bit systems (Darafei Praliaskouski)
#2583 , Preserve Z/ZM dimensional qualifiers in ST_AsEWKT output for TIN (Darafei Praliaskouski)
#4616 , Detect pgsql2shp query keywords case-insensitively (Darafei Praliaskouski)
#1986 , ST_GeomFromGML support for GML ArcString and curved polygon rings (Darafei Praliaskouski)
#4749 , Use point-in-polygon predicate fast paths for point-only GeometryCollections, including ST_Disjoint (Darafei Praliaskouski)
#3676 , Mark geometry and geography btree comparison support functions as leakproof (Darafei Praliaskouski)
GH-875 , Allow ST_OrderingEquals joins to use hash and merge join plans (Darafei Praliaskouski)
#1168 , [raster] Support curved geometry inputs in ST_AsRaster (Darafei Praliaskouski)
#1416 , ST_AsX3D outputs NURBSCURVE as X3D NurbsCurve and linearizes other curve geometries (Darafei Praliaskouski)
#3705 , ST_AsX3D outputs valid coordinate nodes for 2D multi-geometries and GeometryCollections (Darafei Praliaskouski)
GT-484 , Use column-level SELECT privileges for metadata views (Arthur Bazin)
#1408 , #2386 , #2557 , #2805 , #2898 , #3743 , #4323 , #4332 , #4385 , #5109 , #5532 , #5593 , #5638 , #5645 , #5950 , #6022 , #6082 , GH-1161 , GT-584 , Numerous doc enhancements (Darafei Praliaskouski)
Upgrading
After installing the binaries or after running pg_upgrade:
For PostGIS 3 series do below which will upgrade all your postgis extensions.
SELECT postgis_extensions_upgrade ();
For PostGIS 2 series:
ALTER EXTENSION postgis UPDATE ;
If you come across any issues, feel free to report via our ticket tracker or mailing list with details
View all tickets for 3.7.0rc3 milestone .
Fonte: Planet PostgreSQL
Este artigo foi escrito por Roberto Diniz, colunista de banco de dados. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.
Domain, enum, check ou tabela de referência: como escolher o guardião certo da integridade no PostgreSQL
Um post no Planet PostgreSQL mostra por que uma simples coluna de região expôs o limite de confiar só na aplicação para garantir integridade de dados no PostgreSQL.











