Revision history for pg_integrity_checksums CLI

0.5.0   2026-11-15

    - verify and update check that the baseline matches the server
      (PostgreSQL major version, and for physical baselines the cluster and
      database) before checksumming anything, instead of after scanning the
      whole database.  The exit code (3) is unchanged.
    - Saving a baseline fsyncs the directory after the rename, so a crash
      right after a successful save cannot bring back the old file.

    - Fix: schema_hash changed after a dump/restore, so verify reported
      schema_changed for a correctly restored database.  Constraints were
      hashed in OID order, which a restore does not reproduce; they are now
      ordered by name.  The hash also depended on the connection's
      search_path and quote_all_identifiers, which change how format_type(),
      pg_get_expr() and pg_get_constraintdef() spell names; they are now
      pinned to pg_catalog and off while the hashes are computed.  Baselines
      record schema_hash_version 2.  Hashes of older baselines are not
      comparable: verify and diff compare data only and print a warning until
      the baseline is re-captured (update --yes).
    - Fix: verify --changed-since could reuse a stale checksum forever.  The
      table statistics were read inside the snapshot transaction, after its
      snapshot, so a change committed in between was counted but not
      checksummed, and later runs saw unchanged counters.  The statistics are
      now read before the snapshot is taken: a change in between only forces
      a recomputation on the next run.

    - verify --changed-since is ignored on a standby, with a warning, and
      every object is checksummed.  WAL replay does not update the table
      statistics the shortcut relies on.  They are normally zero on a
      standby, which already forced full checksums, but a standby with
      non-zero counters (for example cloned from a cleanly stopped primary)
      could reuse a stale checksum for a changed table.

0.4.0   2026-11-09

    - Add capture --hash fnv64 and the v2 baseline format with an explicit
      checksum algorithm.
    - Keep fnv32/v1 as the default and continue reading v1 baselines.
    - Verify and update inherit the hash algorithm from the baseline.
    - Reject diff comparisons between baselines that use different hashes.

0.3.1   2026-11-09

    - Publish the 0.3.0 init and config commands after the failed 0.3.0
      release tag.
    - Fix the cosign bundle format used by the release workflow.

0.3.0   2026-11-08

    - Add init to generate a .pgics.yaml with a default profile.
    - Add config validate and config show with DSN masking.

0.2.0   2026-11-07

    - Add .pgics.yaml profiles with environment-referenced DSNs and
      config-relative baseline/output paths.
    - Add shell-style glob filters for schemas and tables.
    - Add --dsn, --connect-timeout and --application-name.
    - Add --output and JUnit output for verify, diff and update.
    - Add doctor preflight checks for SELECT privileges and RLS.
    - Add --fail-on schema-changed.
    - Write gzip baselines automatically for .gz output paths.
    - Add shell completion generation for bash, zsh, fish and PowerShell.
    - Add a standalone CLI Docker image and a composite GitHub Action.

0.1.0   2026-11-07

    - First standalone release of the Go CLI.
    - Add capture, verify, diff, show, update and doctor commands.
    - Add versioned JSON baseline format v1 and its JSON Schema.
    - Use one repeatable-read read-only transaction for consistent snapshots.
    - Support logical and physical checksums, schema filters and CI exit codes.
    - Add schema signatures and report schema changes separately from data
      changes.
    - Add --changed-since for logical verification using table statistics as a
      documented heuristic.
    - Add gzip baseline reading and atomic baseline writes.
    - Add integration coverage for PostgreSQL 12 through 19.
    - Release independently from the extension with cli-v* tags.
