-- pg_trickle 0.57.0 -> 0.58.0 upgrade migration -- -- v0.58.0 — Security & Correctness Hardening -- -- This release contains no SQL schema changes. All changes are -- targeted security fixes and correctness improvements in Rust code: -- -- SEC-1: Add check_stream_table_ownership() to attach_outbox(), -- detach_outbox(), and attach_embedding_outbox() -- SEC-2: Add check_stream_table_ownership() to -- stream_table_to_publication() and drop_stream_table_publication() -- SEC-3: handle_alter_table() now retries on SPI error and escalates -- to pgrx::error!() to block the DDL rather than silently returning -- SEC-4: buffer_qualified_name_for_oid() now uses sql_builder::qualified() -- to properly quote the schema identifier -- COR-1: Multi-column NOT IN with nullable elements now falls back to -- subquery-based delta computation instead of an incorrect anti-join -- COR-2: pg_trickle.ivm_recursive_max_depth GUC now applies to both -- DIFFERENTIAL and IMMEDIATE modes (was IMMEDIATE only) -- COR-3: poll_source_changes() acquires pg_advisory_xact_lock keyed on -- the source OID to prevent TOCTOU race with slot drops -- COR-4: compact_change_buffer() returns CompactionResult::Contended -- (observable) instead of Ok(0) when lock cannot be acquired; -- new counter pg_trickle_cdc_compact_contended_total in Prometheus