Skip to content

Test coverage: physical replication / standby redo and pg_basebackup #241

Description

@ChronicallyJD

Gap

Physical/streaming replication and pg_basebackup have no test coverage. The extension WAL-logs into the relation main fork and uses custom SMGR redo (ColumnarTruncateMainFork, XLogInsert(RM_SMGR_ID…)). Standby replay requires the module loaded on the standby with the correct redo routines — a hazard the code comments in native_cancel.sh and wal_envelope.sh explicitly name. Yet wal_envelope.sh only structurally greps the C source for the WAL envelope; nothing stands up a replica and replays columnar WAL, and recovery.sh covers in-place crash redo but not base-backup + replay on a second cluster.

Why this blocks a public release

Most production PostgreSQL runs with a standby. If columnar WAL does not replay correctly on a standby (or pg_basebackup + start yields a corrupt or unreadable columnar table), that is silent divergence or data loss on failover. Acceptable in alpha only if "single-node only, no physical replication tested" is documented.

Suggested acceptance criteria

  • A suite that: starts a primary with pgcolumnar preloaded, pg_basebackup to a standby (module also preloaded), streams a columnar workload (insert/delete/compact/truncate), and asserts the standby's columnar tables match the primary after replay.
  • Cover the SMGR-truncate redo path specifically (the envelope wal_envelope.sh only greps).

Found in a release-readiness review; sibling of the pg_upgrade and format-compatibility issues.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions