Skip to content

PG compatibility: reviewed witnesses and report generation (Tasks 7-8) #46

Description

@renecannao

Context

This issue tracks Tasks 7-8 from docs/superpowers/plans/2026-06-11-postgresql-libpg-query-compatibility.md and follows #51.

Task 7: reviewed witnesses and metadata validation

Implemented on PR #50 in commit 1f9122e test: add reviewed PostgreSQL syntax witnesses.

Added

  • tests/pg_compat/witnesses.sql
  • tests/pg_compat/witnesses.json
  • tests/pg_compat/structural_dispositions.json

Updated

  • scripts/pg_compat/baseline.py
  • tests/pg_compat/test_baseline.py

Behavior

  • Parses witness SQL through a target pg_compat runner via load_reviewed_witnesses().
  • Validates metadata count against parsed SQL statement count.
  • Rejects duplicate witness IDs.
  • Rejects unsupported first_postgresql_major values above the target major.
  • Requires structural_feature_ids to be present and a list of strings.
  • Rejects oracle node mismatches against expected_oracle_node.
  • Reports empty feature links as unlinked_witnesses for later refresh review.

Seed witnesses

  • pg-json-object-constructor: SQL/JSON constructor through SELECT.
  • pg-merge-statement: PostgreSQL MERGE statement currently surfaced by ParserSQL as TYPE_MISMATCH.

Task 8: Markdown compatibility reports

Implemented on PR #50 in commit 7663f51 feat: generate PostgreSQL compatibility reports.

Added

  • scripts/pg_compat/generate_report.py
  • tests/pg_compat/test_generate_report.py

Report content

  • PostgreSQL target-version header.
  • Generation timestamp.
  • ParserSQL commit.
  • Previous and target libpg_query branches, SHAs, and PostgreSQL patch versions.
  • Result totals for all six compatibility outcomes.
  • PG18 backlog excluding DEEP_SUPPORTED.
  • CLASSIFIED_ONLY routing coverage.
  • PG17-to-PG18 release delta outcomes.
  • Newly supported and regressed baseline transitions.
  • Structural feature witness links.
  • Unwitnessed structural features.
  • Unlinked witnesses.
  • Reproduction commands.

Determinism

  • Statement rows sort by result, oracle node, and statement ID.
  • Structural feature rows sort by kind, symbol, and feature ID.
  • SQL shown in Markdown is normalized and limited to 200 characters; complete SQL remains in JSONL inputs.

Verification

  • PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests/pg_compat -p "test_baseline.py" -v: 13 tests passed.
  • Actual PG18 runner accepted both seed witnesses; SQL/JSON was DEEP_SUPPORTED, MERGE was TYPE_MISMATCH.
  • PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests/pg_compat -p "test_generate_report.py" -v: 2 tests passed.
  • PYTHONDONTWRITEBYTECODE=1 PG_COMPAT_RUNNER=/tmp/parsersql-pg-compat-test/bin/pg_compat-18 python3 -m unittest discover -s tests/pg_compat -p "test_*.py" -v: 79 tests passed.

Status

Implementation is complete on PR #50. The issue will close when that PR merges.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions