You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implemented (real bugs / correctness / security):
- sync: pw.CloseWithError(backupErr) so a failed backup aborts the
destructive Clean:true restore instead of looking like clean EOF (data
corruption). [app/sync.go]
- backup: remove the renamed dump if WriteMeta fails (else invisible
orphan, never pruned). [app/backup.go]
- backup driver: discard pg_dump stderr directly instead of StderrPipe +
drain goroutine, which raced with cmd.Wait(). [driver/postgres/backup.go]
- DSN: single-quote + escape libpq keyword values so passwords with
spaces/quotes/backslashes parse correctly. [driver/postgres/driver.go]
- dumps: validate dump IDs (reject path separators / ..) before joining
into catalog paths — prevents path traversal from restore/inspect/verify;
Path/MetaPath also use filepath.Base defensively. [dumps/catalog.go]
- profile show: mask literal passwords; secret refs (env:) shown verbatim.
- dumps prune --apply: surface Delete errors instead of printing 'deleted'
on failure. [cli/dumps.go]
- root buildDeps: filepath.Join for the default dump dir + propagate the
UserHomeDir error instead of building a non-portable path. [cli/root.go]
- integration test: check Host/MappedPort errors (fail fast).
- doc comments: sync (always-stream in Phase B) and Capabilities.Parallel
(not wired yet) now match the code.
Regression tests: DSN special-char round-trip via pgx.ParseConfig;
catalog rejects traversal IDs.
Skipped (with reason):
- CI hardening (persist-credentials / SHA-pin): declined per maintainer
(keep floating @latest tags).
- secrets/resolver colon-in-literal parse: internal/secrets is permission-
restricted in this session; flagged for follow-up.
- config.Path() UserHomeDir error: would require an API signature change
across many callers for a near-impossible failure; XDG/APPDATA override
it anyway. Deferred.
Parallel: true, // pg_restore supports -j; pg_dump parallelism needs -Fd (see backup.go), so backups are single-stream in Phase B
31
+
Parallel: true, // capability exists in the engine, but not wired in Phase B: pg_dump -j needs -Fd (see backup.go) and RestoreOpts carries no Parallel field yet — both land in a later phase
0 commit comments