Revision history for pg_ttl_index 3.0.0 2026-03-20 - NEW: Optional soft-delete mode via ttl_create_index(..., soft_delete_column) - NEW: ttl_runner() can mark rows as soft-deleted (timestamp) instead of hard delete - NEW: ttl_summary() now includes soft_delete_column and cleanup_mode - NEW: Validation for batch_size and expire_after_seconds in ttl_create_index() - NEW: Validation that soft_delete_column exists and is timestamp/timestamptz 2.0.1 (unreleased) - SECURITY: Added schema-aware TTL tracking (`schema_name`) and schema-qualified dynamic SQL - SECURITY: Hardened SQL/C function execution against search_path hijacking - NEW: `ttl_create_index` and `ttl_drop_index` now support schema-qualified table names - IMPROVED: `ttl_summary()` now returns `schema_name` - TESTS: Added multi-schema regression coverage 2.0.0 2026-01-01 - BREAKING: API changed - ttl_create_index now takes batch_size parameter - NEW: Batch deletion with configurable batch_size (default 10000) - NEW: Auto-creates index on timestamp column for fast deletes - NEW: Stats tracking (rows_deleted_last_run, total_rows_deleted) - NEW: Advisory lock concurrency control (prevents overlapping runs) - IMPROVED: Per-table error handling in ttl_runner() - IMPROVED: ttl_summary() now returns all new fields - REMOVED: C-based ttl_create_index/ttl_drop_index (now PL/pgSQL) 1.0.2 (deprecated) - Initial stable release with background worker - Basic TTL functionality 1.0 (deprecated) - Initial development version