Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Release bump to v1.0.17 focusing on PostgreSQL-dump correctness, improved reliability/UX warnings, and updated CI/Docker tooling alignment.
Changes:
- Fix dump/comparison correctness (attstattarget type handling, multirange create-path noise removal) and improve error propagation for dump serialization.
- Add reliability warnings (connection pool sizing vs parallel dump branches; FROM/TO config targeting the same DB+schema).
- Update tooling/docs/tests (Rust CI matrix, Docker labels sourced from crate version, CLI help text, regression/ordering tests).
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| app/src/main.rs | Improves CLI help text for connection params, --scheme matching semantics, and --grants-mode explanation. |
| app/src/dump/table.rs | Casts attstattarget to int4, refactors column query builder for testability, and updates stattarget parsing. |
| app/src/dump/core.rs | Adds parallel-branch count constant + pool-size warning; replaces unwrap() serialization path with error propagation; adds arity “guard”. |
| app/src/config/core.rs | Warns when FROM and TO resolve to the same host/port/database/scheme to avoid silent empty diffs. |
| app/src/comparer/core.rs | Skips new-in-to multirange types in CREATE branch to avoid emitting no-op output. |
| app/src/comparer/core_tests.rs | Adds multirange regressions and buffer-ordering tests to pin script concatenation order. |
| app/Cargo.toml | Bumps crate version to 1.0.17. |
| app/Cargo.lock | Updates lockfile version entry for 1.0.17. |
| Dockerfile | Updates Rust toolchain image and sources version/OCI labels from PGC_VERSION build arg. |
| CHANGELOG | Adds v1.0.17 release notes. |
| .github/workflows/rust.yml | Runs CI against Rust 1.88.0 and 1.95.0; wires crate version into Docker build args for labels. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bug fixes:
attribute.
.unwrap()in the dump serializationpath with proper error propagation so a
serde_jsonfailure surfaces as a readable error instead of a
panic.
compare_typesno longer emits a stray-- Multirange … is created automaticallycomment fornew range types. PostgreSQL auto-creates the
companion multirange row when
CREATE TYPE … AS RANGEruns, so the comparer now skips new-in-
tomultiranges in the CREATE branch (symmetric to the
existing skip in the DROP branch). The skip is
deliberately scoped to the new-type branch only — an
existing multirange whose owner, comment, or ACL
differs between dumps still reaches
get_alter_scriptand emits the correspondingCOMMENT ON TYPE/ALTER TYPE … OWNER TO. Thiswas the leading cause of diffs looking "empty" on
schemas that added a new range type.
Reliability:
FILL_SIBLING_BRANCH_COUNTconstant with acompile-time arity guard against the outer
try_join!in
Dump::fill, plus a runtime warning when--max-connections/MAX_CONNECTIONSis below thenumber of parallel dump branches (pool starvation
would otherwise go unnoticed).
Config::loadnow warns whenFROM_*andTO_*resolve to the same host+port+database+schema, which
almost always means a typo in the config file and
silently produces an empty diff.
Tooling:
and 1.95.0 (matches the Dockerfile toolchain), so the
shipped Docker image toolchain is CI-validated.
version/org.opencontainers.image.versionlabels are now filled from
ARG PGC_VERSIONwiredthrough GitHub Actions from
app/Cargo.toml— nomore hard-coded version skew on release.
UX / Docs:
--serverhelp text on--portand
--scheme; documented theSIMILAR TOmatchingbehaviour of
--scheme(e.g.public|app) andexpanded
--grants-modeto describe ignore /addonly / full explicitly.
recreated_tables.insert()site documenting thecoupling with
compare_grantsdefault-ACL handlingfor dropped-and-recreated tables.
Tests:
the comparer's post-script buffers:
sequence_post_script → type_post_script →
enum_post_script → trigger_post_script.
.find().unwrap()assertions in theclear-script tests with a helper that panics with
the full script, so ordering-test failures are
actionable.
of the fix:
compare_types_multirange_not_created_independently(symptom fix) and
compare_types_multirange_comment_change_still_emits_alter(guards against over-broad skipping — a metadata
ALTER on an existing multirange must still emit).