Skip to content

Releases

v3.0.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 14:59
405f25f

What's Changed

Full Changelog: v3.0.0...v3.0.1

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 13:03

What's Changed

  • chore: stop tracking the linkedin-social binary by @DamilShahzad7 in #195
  • chore(deps-dev): bump the frontend-dependencies group across 1 directory with 6 updates by @dependabot[bot] in #196
  • fix: close four trust boundaries in rewrite, validator, fix lifecycle and evidence by @DamilShahzad7 in #197
  • Fix a query-rewrite bug and a handful of other trust issues by @DamilShahzad7 in #206
  • docs: rebuild documentation architecture and close factual drift by @DamilShahzad7 in #204
  • chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in #203
  • chore(deps-dev): bump the frontend-dependencies group in /frontend with 2 updates by @dependabot[bot] in #202
  • chore(deps-dev): bump @playwright/test from 1.62.1 to 1.63.0 in /test/playwright in the playwright-dependencies group by @dependabot[bot] in #201
  • refactor: reorganize repository layout and internal packages by @DamilShahzad7 in #271

Full Changelog: v2.2.0...v3.0.0

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 21:06
45eaa60

Evidence honesty, plus result verification that is both cheaper and stronger.

Breaking

  • POST /api/v1/queries/explain/compare renames the cost row and changes its format.
    Total cost … −26.9× is now Planner cost (estimate) … −96.3%. Planner cost is an
    abstract quantity in scaled page-fetch units — not proportional to elapsed time, and not
    reliably comparable across two plans — so rendering it as a fold change beside an
    execution-time row implied a speedup the number cannot support. Anything parsing that
    row's evidence string, or expecting × in its change, needs updating.

Added

  • timing_runs (1–5) on compare. Above 1, each side runs that many times under ANALYZE
    and the row reports the median with the observed range — 28ms (5 runs, 26ms–40ms).
    Median rather than mean, so a single cold or contended run cannot drag the figure to a
    number no execution actually produced.
  • Noise detection. When the run-to-run spread is at least as large as the gap between
    medians, the result is reported as inside the measurement noise rather than as a speedup.
  • caveat on comparison metrics, rendered beside the number and carried into exported
    reports.
  • EXPLAIN (SETTINGS) on every plan. Non-default planner configuration changes both
    the plan chosen and every cost shown, so a comparison is only meaningful when both sides
    were produced under the same settings.

Changed

  • Result verification is roughly twice as cheap and no longer capped. It previously ran
    four executions and, past 1000 rows, sorted the entire result to sample it. It is now one
    aggregate pass per side — count + sum + bit_xor over a per-row hash — with no sort
    and three scalars on the wire. All three aggregates are commutative, so row order cannot
    affect the answer. VerifiedEqual now means every row was compared, at any result
    size.
  • Execution time is labelled as the single sample it is when timing_runs is 1.
  • The demo seeds 300k rows instead of 8000, so the before/after difference is larger
    than the timing noise. Seeding takes about two seconds.

Fixed

  • The "no rewrite offered" message omitted a supported pattern and overstated another; it
    now lists them accurately and explains that declining is the normal outcome.
  • Release signature verification requires cosign v3 or newer — v2 cannot read Sigstore
    v0.3 bundles and fails in a way that resembles a bad signature.

Install

docker pull ghcr.io/pgquery-narrative/pgquerynarrative:2.2.0

Binaries for linux and darwin on amd64 and arm64 are attached, with checksums.txt, an
SBOM, and a .cosign.bundle for each. Upgrading from 2.0.x requires running migrations
first — the schema gate is version 56.

Full changelog: https://github.com/pgquery-narrative/pgquerynarrative/blob/main/CHANGELOG.md

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 11:39
741ebb9

What's Changed

  • chore(deps): bump the npm_and_yarn group across 1 directory with 4 updates by @dependabot[bot] in #50
  • chore(deps): bump Go modules to clear Dependabot high alerts by @DamilShahzad7 in #54
  • fix(queryrunner): bound result slice capacity to clear CodeQL alert by @DamilShahzad7 in #56
  • feat: StrictMode hardening, isolation MVP, and pilot readiness by @DamilShahzad7 in #74
  • chore(deps): bump the github-actions group across 1 directory with 17 updates by @dependabot[bot] in #77
  • chore(deps): bump the frontend-dependencies group across 1 directory with 12 updates by @dependabot[bot] in #76
  • docs: add MkDocs Material local preview via make docs by @DamilShahzad7 in #78
  • feat: query investigation workflow, plan compare, and guided demo by @DamilShahzad7 in #81
  • docs: fix README workflow GIF and badge links by @DamilShahzad7 in #85
  • docs: replace README GIF with live Playwright walkthrough by @DamilShahzad7 in #88
  • fix: harden investigation compare for credible README demo by @DamilShahzad7 in #90
  • docs: slow README GIF and burn in step captions by @DamilShahzad7 in #92
  • docs: tighten README GIF with zoom/scroll by @DamilShahzad7 in #94
  • docs: restructure README and investigation-first docs hub by @DamilShahzad7 in #97
  • feat: suggest DATE_TRUNC rewrites and expose index advice by @DamilShahzad7 in #98
  • feat: rank rewrite candidates with dry EXPLAIN by @DamilShahzad7 in #99
  • feat: collapse repeated partition-level findings in reports by @DamilShahzad7 in #109
  • fix: restore PostgreSQL evidence and align investigation PDF/HTML reports by @DamilShahzad7 in #112
  • feat: propose rewrites, hypopg index rank, and open from regressions by @DamilShahzad7 in #105
  • chore(deps-dev): bump @playwright/test from 1.61.1 to 1.62.1 in /test/playwright in the playwright-dependencies group across 1 directory by @dependabot[bot] in #82
  • chore(deps): bump the github-actions group across 1 directory with 9 updates by @dependabot[bot] in #114
  • chore(deps): bump the frontend-dependencies group across 1 directory with 12 updates by @dependabot[bot] in #113
  • feat(investigate): verdict-first diagnosis, collapse plan-finding noise by @DamilShahzad7 in #116
  • feat(rewrite): parameterized-query rewrites + GENERIC_PLAN explain by @DamilShahzad7 in #118
  • feat(investigate): sample bind values for parameterized compare by @DamilShahzad7 in #120
  • feat(poller): rolling baseline + self-observation filter + fix lifecycle (P1 + P2) by @DamilShahzad7 in #122
  • feat(investigate): keep every tested candidate (P3 — candidate history) by @DamilShahzad7 in #127
  • feat(reports): Markdown / JSON / SQL report export (P3 — report export) by @DamilShahzad7 in #126
  • feat(rewrite): LEFT JOIN … IS NULL anti-join → NOT EXISTS (P3 — more rewrite patterns) by @DamilShahzad7 in #129
  • build: one committed codegen tree — go build works on a clean clone (P4) by @DamilShahzad7 in #131
  • test: metrics calculator + service decision-logic coverage, with CI floors (P5) by @DamilShahzad7 in #133
  • feat(pdf): embedded Unicode font for report PDF export by @DamilShahzad7 in #135
  • build: generate frontend API types from the OpenAPI spec by @DamilShahzad7 in #137
  • build(security): bump x/crypto + CI Go toolchain to clear govulncheck (#149) by @DamilShahzad7 in #150
  • fix(rewrite): misaligned DATE_TRUNC equality + NULL-safe OR→UNION (#1, #2) by @DamilShahzad7 in #138
  • fix(queryrunner): harden textual bind substitution against injection (#4) by @DamilShahzad7 in #139
  • feat(regression): detect on poll-to-poll interval deltas, not cumulative counters (#9) by @DamilShahzad7 in #151
  • feat(compare): gate result verification on ActionQuery; 5-state equivalence (#3, #5, #6) by @DamilShahzad7 in #140
  • feat(poller): per-connection polling, leader election, one-open-alert unique index (#10, #11, #12) by @DamilShahzad7 in #152
  • feat(explain): honest timing fields + real "Rows scanned" metric (#7, #13) by @DamilShahzad7 in #141
  • feat(db): cross-org integrity for investigation children; org-wide visibility (#15, #16) by @DamilShahzad7 in #153
  • feat(investigate): estimate-only EXPLAIN by default; honest candidate ranking (#8, #14) by @DamilShahzad7 in #142
  • fix(security): Security & Trust page reports real per-connection state by @DamilShahzad7 in #155
  • feat(deploy): one deployment model, branch-protection and release-gate docs by @DamilShahzad7 in #157
  • fix(demo): live scenario dates; guard stale/dirty migration state by @DamilShahzad7 in #159
  • test: raise coverage floors, add hero-path and HypoPG boundary gates by @DamilShahzad7 in #161
  • build: gate docs on mkdocs --strict, stop OpenAPI example churn by @DamilShahzad7 in #163
  • release: prepare v2.1.0 by @DamilShahzad7 in #165
  • fix(ci): re-pin download-artifact to a real SHA; guard every action pin by @DamilShahzad7 in #167
  • chore: stop tracking frontend/node_modules and frontend/dist by @DamilShahzad7 in #169
  • docs: add a security policy and publish the documentation site by @DamilShahzad7 in #171
  • fix(queryrunner): collapse partition findings that carry no schema prefix by @DamilShahzad7 in #173
  • fix(frontend): correct plan-finding collapse and add the missing plan-tree helper by @DamilShahzad7 in #175
  • docs: give the README real install paths and fix the equivalence vocabulary by @DamilShahzad7 in #177
  • fix(deploy): migrate as a role that may create extensions and alter roles by @DamilShahzad7 in #179
  • fix(release): sign artifacts with a cosign bundle path by @DamilShahzad7 in #181
  • fix(release): register QEMU for the arm64 image, build the SPA natively by @DamilShahzad7 in #183

New Contributors

Full Changelog: v2.0.0...v2.1.0

v2.0.0 — Postgres-native query intelligence

Choose a tag to compare

@DamilShahzad7 DamilShahzad7 released this 28 Jun 09:28

Highlights

  • Postgres-first repositioning: secure read-only SQL, EXPLAIN plan analysis, 10M-row partitioned benchmark
  • Parser-based validation (pg_query_go), pg_stat_statements dashboard, RLS demo, pgvector semantic search
  • Case study: 1.1s to 145ms covering index optimization on 10M rows

See CHANGELOG.md and docs/case-studies/01-query-optimization.md on main.

v1.0.0 — Analytics narratives on PostgreSQL

Choose a tag to compare

@pgquery-narrative pgquery-narrative released this 05 Mar 08:30

First stable release: natural-language analytics narratives over a read-only PostgreSQL connection.

Highlights

  • Read-only SQL execution with validation, timeouts, and row caps
  • Metrics engine: aggregates, time series, period-over-period comparison, correlations, cohorts
  • Anomaly detection (z-score and Isolation Forest) and trend summaries
  • LLM-generated report narratives with HTML and PDF export
  • Saved queries, scheduled runs, and webhook delivery
  • API-key auth with role-based access and rate limiting

Full detail in CHANGELOG.md.