Regina Obe:PostGIS 3.7.0beta2

Regina Obe:PostGIS 3.7.0beta2

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

PostGIS 团队发布 3.7.0beta2 版本,需配合 PostgreSQL 19 Beta2 和 GEOS 3.15.0beta2 使用,支持 PostgreSQL 14-19beta2、GEOS 3.10+ 及 Proj 6.1+。此版本修复了多个 bug,包括内存泄漏、FlatGeobuf 验证、GSERIALIZED 处理及安全加固,并增强了 ST_AsX3D 输出和 Linux/arm64 构建支持。升级需运行 postgis_extensions_upgrade()。

🔎

延伸解读

升级注意事项

升级到 3.7.0beta2 后,需要运行 postgis_extensions_upgrade() 来更新所有 PostGIS 扩展。对于 PostGIS 2 系列,需先执行 ALTER EXTENSION postgis UPDATE。该版本还修复了升级脚本在事务内运行 ANALYZE 可能导致与 autovacuum 死锁的问题,因此升级过程更稳定。

安全加固与稳定性

此版本针对安全性和稳定性进行了多项修复,包括加固扩展安装和升级 SQL 以防止攻击者控制对象解析,修复 FlatGeobuf 缓冲区验证、GSERIALIZED 处理中的内存泄漏和越界读取等问题。这些修复有助于提升在处理复杂地理数据时的可靠性和安全性。

新功能与平台支持

增强 ST_AsX3D 输出,支持 NURBSCURVE 和 2D 多几何体,并新增 Linux/arm64 构建支持。这些改进扩展了 PostGIS 在三维数据导出和不同硬件平台上的适用性,但需注意部分功能需要 GEOS 3.15+ 或 SFCGAL 2.3.0+ 才能完全发挥。

Q&A

PostGIS 3.7.0beta2 需要哪些版本的 PostgreSQL、GEOS 和 Proj?

PostGIS 3.7.0beta2 需要 PostgreSQL 14 到 19beta2、GEOS 3.10 或更高版本(建议使用 GEOS 3.15+ 以使用所有功能),以及 Proj 6.1 或更高版本。

如何从旧版本升级到 PostGIS 3.7.0beta2?

安装二进制文件或运行 pg_upgrade 后,对于 PostGIS 3 系列,执行 SELECT postgis_extensions_upgrade(); 即可升级所有 PostGIS 扩展。对于 PostGIS 2 系列,需要先执行 ALTER EXTENSION postgis UPDATE; 然后再执行 SELECT postgis_extensions_upgrade();。

PostGIS 3.7.0beta2 修复了哪些主要的安全问题?

修复了多个安全问题,包括加固扩展安装和升级 SQL 以防止攻击者控制的对象解析(GT-671),验证 FlatGeobuf 大小前缀缓冲区和变长属性值(GT-669),拒绝畸形 GSERIALIZED NURBS 和截断的编码折线输入,以及修复 BOX2D_out 和 BOX2D_expand 中的越界堆读取(#6109)。

PostGIS 3.7.0beta2 在功能上有什么增强?

增强了 ST_AsX3D 输出,支持将 NURBSCURVE 输出为 X3D NurbsCurve,并线性化其他曲线几何;同时为 2D 多几何体和 GeometryCollections 输出有效的坐标节点。此外,增加了 Linux/arm64 构建支持。

PostGIS 3.7.0beta2 修复了哪些内存泄漏问题?

修复了 ST_GeometryN 和 ST_DWithin 中的内存泄漏(GT-677)。

PostGIS 3.7.0beta2 对 FlatGeobuf 支持做了哪些改进?

修复了 FlatGeobuf 在解码前未验证大小前缀缓冲区和变长属性值的问题(GT-669),并修复了在大端平台上 FlatGeobuf 几何、属性和空间索引的字节序问题(GT-545)。

🏷️

标签

➡️

继续阅读