# v0.79.0 — Code Quality, API Ergonomics & Security

> **Status:** Planned → Released  
> **Full details:** [v0.79.0.md-full.md](v0.79.0.md-full.md)

## What's in this release?

v0.79.0 is a maintainability and security polish release that reduces
accumulated technical debt between hardening arcs.

### Code Quality

- **Q-1** — Unused-import suppressions removed from `src/refresh/codegen.rs`
  and `src/refresh/merge/mod.rs` module-by-module. The `use super::*` glob is
  removed from `codegen.rs` (it was unused); `merge/mod.rs` keeps it since it
  brings in `set_effective_mode` and `classify_*` from the parent module.

- **Q-2** — Internal `create`/`alter` API implementations converted to typed
  parameter structs (`AlterStreamTableOptions`), eliminating
  `#[allow(clippy::too_many_arguments)]` from business-logic functions.
  The pg_extern wrapper functions retain individual parameters (required by pgrx).

- **Q-3** — Global `#![allow(dead_code)]` at crate root replaced with narrower
  per-module `#[allow(dead_code)]` attributes on pgrx/export boundaries where
  items are intentionally visible to SQL but not to Rust's call-graph analysis.

- **Q-4** — `consume_slot_changes()` in `src/cdc/mod.rs` is marked
  `#[deprecated]`; the function is removed from all call paths (it was already
  unused in the refresh pipeline).

### API Ergonomics

- **A-1** — Three SQL convenience helpers added:
  `create_stream_table_fast_append_only()`, `set_stream_table_refresh_policy()`,
  `set_stream_table_storage_policy()`.

- **A-2** — First-class `pause_stream_table()` wrapper added (complementing the
  existing `resume_stream_table()`).

### Security

- **S-1** — Semgrep rules for dynamic SQL strengthened: new rules flag
  `format!()` strings passed to `Spi::run_with_args` / `Spi::get_one_with_args`
  and distinguish identifier-building from literal-building patterns.

- **S-2** — Runtime `WARNING` emitted at `create_stream_table` time when any
  source table has Row Level Security enabled (already present via A45-3;
  confirmed tested in v0.79.0).

- **S-3** — CI test added: inspects every SECURITY DEFINER trigger function
  created by the extension and asserts that each has `SET search_path` pinned.

### Reliability & Test Coverage

- **D-3** — Cleanup chaos test: forces three consecutive `DELETE FROM changes_*`
  failures via a conflict trigger, asserts the stream table enters SUSPENDED
  with a relevant error, then resumes and verifies normal operation.

- **T-5** — dbt adapter compatibility matrix: covers `create`, `alter`,
  `drop`, and `rebuild` flows; tests pass against the integration dbt project.
