Skip to content

release: 0.11.0 — psql compatibility polish, describe fixes, help text cleanup - #818

Merged
NikolayS merged 13 commits into
mainfrom
release/0.11.0
Apr 14, 2026
Merged

release: 0.11.0 — psql compatibility polish, describe fixes, help text cleanup#818
NikolayS merged 13 commits into
mainfrom
release/0.11.0

Conversation

@NikolayS

@NikolayS NikolayS commented Apr 13, 2026

Copy link
Copy Markdown
Owner

Summary

Release prep for 0.11.0. Depends on #817 merging first.

This PR is not just a version bump. It also includes user-visible psql compatibility fixes in describe commands and \? help output.

Included in 0.11.0

psql compatibility fixes

  • \dO: fix collation listing compatibility across PG15–PG18
    • include pg_catalog collations when a pattern is given (for example \dO *)
    • use the correct locale columns by PG version
    • add missing output columns matching psql more closely
  • \dF, \dFd, \dFp, \dFt: include pg_catalog built-ins like psql does
  • \dAc: show operator class names correctly, improve pattern filtering, and add missing verbose columns

Help text (\?) fixes

  • Add 5 missing describe commands: \dX, \dRp, \dRs, \drg, \ddp
  • Remove stale /dba ash entry (standalone /ash, not a /dba subcommand)
  • Remove stale /dba indexes entry (actual commands: unused-idx, invalid-idx, redundant-idx, missing-fk-idx)
  • Add regression tests for help text coverage

Release/docs cleanup

  • Cargo.toml version 0.10.20.11.0
  • README.md version refs updated to v0.11.0
  • README.md wording updated around psql compatibility / connect banner
  • Full [0.11.0] - 2026-04-13 changelog entry
  • Convert bare (#NNN) changelog references into clickable markdown links

Why 0.11.0

This release is centered on psql compatibility polish: describe-command correctness, built-in catalog visibility, output-column parity, and help text accuracy.

Test plan

  • cargo test — local pass before PR creation
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo fmt --check
  • CI rerun after PG-version fix for \dO

🤖 Generated with Claude Code

Nik Samokhvalov and others added 5 commits April 13, 2026 13:50
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All (#NNN) references are now clickable markdown links
- Emphasize that psql regression tests run continuously in CI on
  every push/PR and gate merges
- Add #788 reference for the CI regression test infrastructure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
102 references across all changelog entries now link to
github.com/NikolayS/rpg/pull/NNN or /issues/NNN.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add \dX, \dRp, \dRs, \drg, \ddp to the \? help output — these were
implemented in metacmd.rs / describe.rs but missing from help_text().
Remove stale /dba ash (standalone /ash, not a subcommand) and /dba
indexes (actual commands are unused-idx, invalid-idx, etc.).

Includes three new unit tests covering all changes (TDD red/green).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@NikolayS NikolayS changed the title chore: bump version to 0.11.0 chore: bump version to 0.11.0, changelog, help text fixes Apr 13, 2026
@NikolayS

Copy link
Copy Markdown
Owner Author

0.11.0 Manual QA Test Results

5 parallel test agents ran all new features against local PostgreSQL 18.3.


WASM Build — 4/4 PASS

Test Result
cargo check --target wasm32-unknown-unknown PASS (0 errors, 130 expected warnings)
WASM entry point (src/wasm/entry.rs) PASS
docs/WASM.md (215 lines) PASS
wasm/ directory (build scripts, proxy, HTML demo) PASS

Welcome Banner, /plan, Help Text — 5/5 PASS

Test Result Notes
Welcome banner (connection info + SSL) PASS Shows db, user, host, port, AI status, help hint
/plan mode PASS Correctly prepends EXPLAIN in interactive mode
\? help text completeness PASS All 5 new \d commands present; stale /dba ash and /dba indexes absent
AI config hint PASS Shows ~/.config/rpg/config.toml when key missing
/version PASS Shows 0.11.0+25-c72cf4ee

EXPLAIN Highlighting & Compat — 4/5 PASS

Test Result Notes
EXPLAIN syntax highlighting FAIL (by design) Highlighting only active in interactive REPL, not -c mode. Same as psql (no highlighting at all). Not a regression.
standard_conforming_strings tracking PASS E'hello\nworld' handled correctly
Wrapped format PASS Byte-identical with psql
Error location prefix PASS rpg:file:line: matches psql pattern
NOTICE ordering PASS Deterministic order 1, 2, 3

/dba & /ash — 8/8 PASS

Test Result Notes
/dba help PASS All 17 subcommands listed; no stale ash or indexes
/dba activity PASS 8 backend processes shown
/dba config PASS 17 non-default params
/dba bloat PASS 0 rows (fresh DB, expected)
/dba vacuum PASS 24 rows
/dba progress PASS 6 categories, all empty (expected)
/ash (non-interactive) PASS Clean TUI enter/exit, no crash
/ash sample_timeout config PASS Fully wired: config → accessor → sampler, tests cover default/explicit/0/merge

New Describe Commands — 5/13 PASS, 8/13 FAIL

The 5 commands added to help text all pass:

Command Result
\dX (extended statistics) PASS — matches psql exactly
\dRp (publications) PASS — matches psql
\dRs (subscriptions) PASS — matches psql
\drg (role grants) PASS — matches psql
\ddp (default privileges) PASS — matches psql

The 8 new describe commands have issues:

Command Issue
\dP Minor: shows non-search-path schemas; \dP+ missing "Access method" column
\dA Minor: base mode includes extra "Handler" column (psql only shows it in \dA+)
\dAc Significant: shows operator family names instead of operator class names; pattern filtering broken
\dO Significant: pg_catalog collations invisible; \dO * returns 0 rows (psql: hundreds)
\dF Significant: pg_catalog configs invisible; \dF english returns 0 rows
\dFd Significant: pg_catalog dictionaries invisible
\dFp Significant: pg_catalog parsers invisible; 0 rows vs psql's 1 row
\dFt Significant: pg_catalog templates invisible; 0 rows vs psql's 5 rows

Root causes:

  1. pg_catalog objects invisible (5 commands): \dO, \dF, \dFd, \dFp, \dFt — schema filtering excludes pg_catalog, which psql includes by default
  2. Wrong column data (\dAc): shows operator family names instead of operator class names
  3. Column set differences (\dA, \dP): extra/missing columns vs psql

These are pre-existing implementation gaps in the new describe commands, not regressions.


Issues Filed

Summary

Area Passed Failed Total
WASM build 4 0 4
Banner / plan / help 5 0 5
EXPLAIN / compat 4 1 (by design) 5
/dba & /ash 8 0 8
Describe (help-text group) 5 0 5
Describe (new 0.11.0) 0 8 8
Total 26 9 35

The 8 describe command failures are implementation gaps in the new commands (pg_catalog visibility, column accuracy). All other 0.11.0 features work correctly.

Nik Samokhvalov and others added 8 commits April 13, 2026 14:56
…port from features

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Include pg_catalog schema so built-in collations are visible
- Add Collate, Ctype, Deterministic columns matching psql output
- Add tests for pg_catalog inclusion and column presence

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…commands

psql includes pg_catalog objects by default for text search describe
commands. rpg was filtering them out, causing 0 rows for built-in
configurations, dictionaries, parsers, and templates.

Remove the pg_catalog exclusion filter from all four text search
list functions so they match psql behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Select c.opcname ("Operator class") instead of of.opfname ("Operator family")
- Split pattern on whitespace: first arg filters am.amname, second filters c.opcname
- Add "Operator family", "Owner" columns in verbose (\dAc+) mode
- Rename "Default" column to "Default?" to match psql

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…triangle in README

- \dO * now drops pg_collation_is_visible() filter along with the
  pg_catalog exclusion, so catalog collations appear on minimal
  Docker images where pg_catalog is not in search_path
- Remove ▶ emoji from <details> summaries to avoid double-triangle

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@NikolayS NikolayS changed the title chore: bump version to 0.11.0, changelog, help text fixes release: 0.11.0 — psql compatibility polish, describe fixes, help text cleanup Apr 13, 2026
@NikolayS

Copy link
Copy Markdown
Owner Author

REV review (SOC2 skipped as requested)

Overall: looks good now after the PG-version fix for \dO.

What I checked:

  • release framing/title/body now match the actual content
  • CI is fully green, including Integration Tests and Coverage
  • \dO fix is now version-aware (PG15–16 colliculocale, PG17+ colllocale/collicurules)
  • help-text cleanup matches implemented commands better
  • pg_catalog inclusion changes for text-search/collation describe commands are directionally correct for psql compatibility
  • \dAc change now targets operator class naming instead of operator family naming

No blocking findings from this review round.

Minor nit only (non-blocking): the doc comment above list_collations() still says Locale (PG 16+) / ICU Rules (PG 16+), but the code now correctly treats those as PG17+.

Verdict: mergeable from my side.

@NikolayS
NikolayS merged commit 0c58b6e into main Apr 14, 2026
21 checks passed
@NikolayS
NikolayS deleted the release/0.11.0 branch April 14, 2026 02:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant