PostGIS 3.7.0rc1 Released; SQLite FTS5 & ALTER TABLE Fixes in Trunk

This week's database ecosystem highlights include the first release candidate for PostGIS 3.7.0, offering new capabilities for spatial data within PostgreSQL. Concurrently, the SQLite source timeline reveals critical bug fixes for FTS5 related to index integrity and significant refinements to `ALTER TABLE` behavior for `WITHOUT ROWID` tables.

PostGIS 3.7.0rc1 Released (Planet PostgreSQL)

The PostGIS Team has announced the release of PostGIS 3.7.0rc1, marking a significant step towards the next stable version of the popular spatial extension for PostgreSQL. This release candidate is designed to be compatible with a wide range of PostgreSQL versions, specifically requiring PostgreSQL 14 through 19rc1, along with GEOS 3.15.0rc1. Users are encouraged to test this release candidate against their spatial applications and provide feedback to help solidify the upcoming final release. PostGIS 3.7.0rc1 also indicates best service with other components like postgis_tiger_geocoder 2025.2 and address_standardizer. Release candidates are crucial for identifying and resolving potential issues before a general availability release, ensuring stability and performance for production environments. Developers and administrators relying on advanced geographic information system (GIS) capabilities in their PostgreSQL databases should consider evaluating this version. This release reflects ongoing development to enhance PostGIS's functionality, performance, and compatibility within the broader PostgreSQL ecosystem. The team encourages testing for migration paths and new feature adoption.
Database administrators and developers utilizing PostgreSQL for spatial data should evaluate PostGIS 3.7.0rc1 to assess compatibility and performance with their applications, ahead of the stable release. This is an important precursor to a full version upgrade.

Critical FTS5 Bug Fixes Land in SQLite Trunk (SQLite Source Timeline)

The SQLite source timeline has seen recent updates addressing critical issues within the FTS5 full-text search extension. One significant fix targets a problem where full-text index entries could be lost under specific conditions. This bug occurred when combining `index=none` and `secure-delete` modes, particularly when inserts and deletes on the same token were processed within the same transaction. Such a scenario could lead to inconsistent search results or missing entries in the full-text index. This fix ensures the integrity of FTS5 indexes, preventing data loss for search tokens and maintaining reliable search functionality. The issue primarily affected specific configurations and transactional patterns, making it a subtle but impactful bug for applications that leverage FTS5's advanced features. Resolving this problem enhances the robustness and dependability of full-text search operations in SQLite. Further FTS5-related updates include avoiding an undefined signed integer overflow, fixing cases where all columns are excluded by a filter, and ensuring `fts5_vocab.term` column uses blob affinity for comparisons (items 8, 9, 10). Collectively, these changes demonstrate a continued focus on refining and stabilizing the FTS5 extension.
Developers heavily relying on SQLite's FTS5 extension, especially with `index=none` and `secure-delete` modes, should plan to update to future SQLite releases incorporating these trunk changes to avoid potential data integrity issues in their full-text indexes. The fixes improve the overall reliability of FTS5.

SQLite Strengthens ALTER TABLE Rules for WITHOUT ROWID Tables (SQLite Source Timeline)

A recent commit to the SQLite source timeline introduces a new restriction on the `ALTER TABLE` command, specifically concerning `rowid` aliases and `WITHOUT ROWID` tables. The change prohibits the use of `ALTER TABLE` to add, drop, or rename to or from a `rowid` alias, unless the table in question is explicitly a `WITHOUT ROWID` table. This modification aims to prevent potential ambiguities or incorrect schema manipulations for tables that implicitly have a `rowid`. Prior to this change, attempting such an `ALTER TABLE` operation on a regular table (which implicitly uses `rowid`) could lead to unexpected behavior or an inconsistent state. The new rule clarifies the boundaries for `rowid` alias management, enforcing that these operations are only valid for tables designed from the outset to manage their primary keys without an internal `rowid`. This update reflects SQLite's ongoing commitment to robust internal consistency and clear SQL behavior. It helps ensure that database schema modifications are explicit and well-defined, particularly for advanced table structures like `WITHOUT ROWID` tables. Developers working with `WITHOUT ROWID` tables or considering schema migrations should be aware of this new restriction.
Developers and DBAs working with SQLite schema evolution, particularly those using or planning to use `WITHOUT ROWID` tables, must understand this new `ALTER TABLE` restriction. It prevents potentially erroneous schema changes and improves the predictability of database operations.