Repository navigation
Releases: ShutenOishi/pgcli-sharp
Release list
Phase 2 - pg_restore + pg_dumpall / pg_restore・pg_dumpall 型付きラッパー
Phase 2 - pg_restore + pg_dumpall / pg_restore・pg_dumpall 型付きラッパー
English
Phase 2 completes PgCliSharp's initial PostgreSQL backup/restore trio by adding fully typed pg_restore and pg_dumpall wrappers alongside Phase 1's pg_dump.
Included
- Independent PostgreSQL 10-18 research for
pg_restoreandpg_dumpallbased on official application documentation andREL_10_STABLEthroughREL_18_STABLEupstream source. - Machine-readable compatibility specifications at
spec/postgresql/pg_restore.jsonandspec/postgresql/pg_dumpall.json. - Source-level option inventory audits, alias/spelling tracking, per-major resolved inventories, constraints, defaults, and explicit API bindings.
- Tool-specific
PgRestoreOptionsandPgDumpAllOptionsAPIs rather than a public common-options base. - Typed mutually exclusive models including
PgRestoreMode,PgRestoreContentMode,PgRestoreTransactionMode,PgDumpAllScope, andPgDumpAllContentMode. - Dedicated
PgRestoreInputmodeling for archive file, directory, and stdin sources. - Dedicated restore/script/list and cluster-script output abstractions that preserve stdout as bytes.
- PostgreSQL 17+ filter stdin support for both tools and pg_restore archive-stdin/filter-stdin conflict validation.
- Centralized version availability catalogs, including exact
--restrict-keysecurity-backport boundaries: 13.22+, 14.19+, 15.14+, 16.10+, 17.6+, and 18.0+. - Version-aware hard-error validation without turning upstream accepted/ignored combinations into wrapper errors.
- Deterministic shell-free argument generation, canonical alias spellings, invariant numeric formatting, and caller-order preservation for repeatable options.
- Reuse of the established version probe, cancellation, timeout, process-tree termination, stderr, environment, and non-zero-exit execution infrastructure.
- Spec-to-public-API and spec-to-runtime-availability coverage checks.
- Backup/restore trio tests covering
pg_dumpcustom/directory archive relationships withpg_restore, while preservingpg_dumpallas SQL-script output. - English/Japanese XML documentation, localized diagnostics, and updated README/architecture/roadmap documentation.
- Linux, macOS, and Windows CI coverage, including .NET Framework 4.8 execution against the
netstandard2.0/CliWrap asset.
Compatibility research highlights
pg_restorescript-output behavior differs before/after PostgreSQL 12; PgCliSharp normalizes stream output with--file=-.pg_restore --no-reconnectremains accepted as an upstream compatibility no-op.pg_restore --create+--single-transactionbecomes an explicit hard error from PostgreSQL 12 onward and is not projected backward.- PostgreSQL 17 adds
pg_restore --filterand--transaction-size; PostgreSQL 18 adds data/schema/statistics controls. pg_dumpall -d/--dbnameis a libpq connection string, while-l/--databasechooses the initial catalog database; these semantics are intentionally modeled separately.- PostgreSQL 12 removes
pg_dumpall --oids; PostgreSQL 17 adds filters; PostgreSQL 18 adds data/schema/statistics controls and--sequence-data. - pg_dumpall's sibling-
pg_dumpsame-version requirement remains an upstream invariant and surfaces through the ordinary process failure path.
Attached artifacts
pgcli-sharp-phase-2.zip— source snapshot for the exact Phase 2 merge commit.PgCliSharp.0.1.0-alpha.0.nupkg— NuGet package produced from that commit.PgCliSharp.0.1.0-alpha.0.snupkg— symbol package produced from that commit.
This Phase Release records a development milestone. It does not by itself publish the package to nuget.org.
日本語
Phase 2 では、Phase 1 の pg_dump に pg_restore と pg_dumpall を加え、PgCliSharp の初期バックアップ/リストア3ツールを型付き API として完成させました。
主な内容
- PostgreSQL 10〜18 の
pg_restore/pg_dumpallを、公式アプリケーション文書とREL_10_STABLE〜REL_18_STABLEの上流ソースで個別に調査。 spec/postgresql/pg_restore.jsonとspec/postgresql/pg_dumpall.jsonに保存した機械可読な互換性仕様。- source option inventory、alias/spelling、メジャー別 resolved inventory、制約、既定値、API binding の監査。
- 公開共通 Options 基底を作らず、ツール固有の
PgRestoreOptions/PgDumpAllOptionsを実装。 PgRestoreMode、PgRestoreContentMode、PgRestoreTransactionMode、PgDumpAllScope、PgDumpAllContentModeなど、相互排他状態を型で表現。- archive file / directory / stdin を区別する
PgRestoreInput。 - restore/script/list と cluster SQL script の出力を専用型で表現し、stdout を文字列化せずバイト列のまま扱う I/O。
- PostgreSQL 17 以降の両ツールの filter stdin と、pg_restore の archive stdin / filter stdin 競合検証。
--restrict-keyのセキュリティバックポート境界 13.22+ / 14.19+ / 15.14+ / 16.10+ / 17.6+ / 18.0+ を含む、集中管理された availability catalog。- 上流の hard error を事前検証しつつ、上流が受理・無視する組み合わせを過剰に拒否しない version-aware validation。
- shell を介さない決定的な引数生成、canonical alias、invariant な数値書式、repeatable option の順序保持。
- 既存の executable version probe、cancellation、timeout、process tree 終了、stderr、environment、non-zero exit の実行基盤を再利用。
- spec と公開 API、spec と runtime availability の同期を検証するテスト。
pg_dumpcustom/directory archive とpg_restoreの関係、およびpg_dumpallが SQL script 出力であることを固定する trio テスト。- 公開 API の英語・日本語 XML コメント、ローカライズ診断、README / architecture / roadmap の更新。
- Linux / macOS / Windows CI。Windows では .NET Framework 4.8 から
netstandard2.0/ CliWrap asset も検証。
互換性調査の主な差分
pg_restoreの script 出力条件は PostgreSQL 12 前後で異なるため、PgCliSharp の stream 出力は--file=-で統一。pg_restore --no-reconnectは上流互換性のための no-op として受理。pg_restore --create+--single-transactionの明示的 hard error は PostgreSQL 12 以降に限定。- PostgreSQL 17 で
pg_restore --filter/--transaction-size、PostgreSQL 18 で data/schema/statistics 制御を追加。 pg_dumpall -d/--dbnameは libpq 接続文字列、-l/--databaseは初期 catalog DB であり、意味を分離してモデル化。- PostgreSQL 12 で
pg_dumpall --oidsを廃止、17 で filter、18 で data/schema/statistics 制御と--sequence-dataを追加。 - pg_dumpall が sibling
pg_dumpと同一バージョンを要求する点は上流 invariant とし、通常のプロセス失敗経路で保持。
添付ファイル
pgcli-sharp-phase-2.zip— Phase 2 の正確な merge commit から作成したソース ZIP。PgCliSharp.0.1.0-alpha.0.nupkg— 同じコミットから生成した NuGet パッケージ。PgCliSharp.0.1.0-alpha.0.snupkg— シンボルパッケージ。
この Release は開発マイルストーンの記録です。この Release だけで nuget.org に公開されるわけではありません。
Phase 1 - pg_dump / pg_dump 型付きラッパー
Phase 1 - pg_dump / pg_dump 型付きラッパー
English
Phase 1 adds the first complete typed PostgreSQL CLI wrapper: pg_dump.
Included
- PostgreSQL 10-18
pg_dumpoption research based on each major version's official documentation. - Machine-readable compatibility specification at
spec/postgresql/pg_dump.json. - Source-level inventory verification against
REL_10_STABLEthroughREL_18_STABLE. - Complete typed
PgDumpOptionscoverage for normal dump execution, with explicit bindings for output, version probing, and utility commands. - Enums for finite values and value objects for structured values such as compression and restrict keys.
- Ordered collections for repeatable schema, table, section, extension, foreign-data, child-table, and filter options.
- Version availability metadata, including exact patch-level requirements for the security-backported
--restrict-keyoption. - Version-aware compression handling for PostgreSQL 10-15 and PostgreSQL 16-18.
- Pre-execution validation for option availability, values, output formats, dependencies, and incompatible combinations.
- Explicit output modeling for stdout, files, and directory-format archives.
- Binary-safe stdout streaming and PostgreSQL 17+
--filter=-stdin streaming. - Explicit executable version validation before normal pg_dump execution.
- Structured
PgDumpResultmetadata without buffering the dump payload. - English/Japanese public XML documentation and localized PgCliSharp validation diagnostics.
- Linux, macOS, and Windows CI coverage, including .NET Framework 4.8 execution of the
netstandard2.0/CliWrap backend. - Regression coverage for argument generation, PostgreSQL 10-18 availability differences, patch-level availability, repeatable options, incompatible combinations, binary I/O, cancellation, timeout propagation, and executable version mismatch.
Compatibility research highlights
- PostgreSQL 12 removes
--oids. - PostgreSQL 15 removes
--no-synchronized-snapshots. - PostgreSQL 16 introduces the structured
method[:detail]compression model and canonical large-object spellings. - PostgreSQL 17 adds filter files/stdin and sync-method support.
- PostgreSQL 18 adds data/schema/statistics selection controls.
--restrict-keyis patch-level availability rather than a simple major boundary: 13.22+, 14.19+, 15.14+, 16.10+, 17.6+, and 18.0+.
Attached artifacts
pgcli-sharp-phase-1.zip— source snapshot for the exact Phase 1 commit.PgCliSharp.0.1.0-alpha.0.nupkg— NuGet package produced from that commit.PgCliSharp.0.1.0-alpha.0.snupkg— symbol package produced from that commit.
This Phase Release records a development milestone. It does not by itself publish the package to nuget.org.
日本語
Phase 1 では、最初の完全な型付き PostgreSQL CLI ラッパーとして pg_dump を実装しました。
主な内容
- PostgreSQL 10〜18 の各メジャーバージョン公式資料を個別に比較した
pg_dumpオプション調査。 spec/postgresql/pg_dump.jsonに保存した機械可読な互換性仕様。REL_10_STABLE〜REL_18_STABLEの公式ソースとの option inventory 照合。- 通常のダンプ実行を網羅する型付き
PgDumpOptionsと、output・version probe・utility command の明示的な binding。 - 有限値の enum と、compression / restrict key など構造値の value object。
- schema、table、section、extension、foreign data、children、filter など複数回指定可能なオプションの順序保持 collection。
- バージョン別 availability metadata と、セキュリティ修正でバックポートされた
--restrict-keyの正確なパッチバージョン検証。 - PostgreSQL 10〜15 と 16〜18 の差を考慮した compression。
- option availability、値、出力形式、依存関係、相互排他を pg_dump 起動前に検証。
- stdout / file / directory archive を区別する出力モデル。
- バイナリセーフな stdout と、PostgreSQL 17 以降の
--filter=-用 stdin ストリーミング。 - 通常実行前の pg_dump 実行ファイルバージョン検証。
- ダンプ本体をメモリへ強制格納しない
PgDumpResult。 - 公開 API の英語・日本語 XML コメントと、PgCliSharp 側 validation diagnostic の英日ローカライズ。
- Linux / macOS / Windows CI。Windows では .NET Framework 4.8 から
netstandard2.0/ CliWrap backend も実行。 - argument generation、PostgreSQL 10〜18 の差異、パッチ版 availability、repeatable option、非互換な組み合わせ、バイナリ I/O、cancellation、timeout、実行ファイル version mismatch の回帰テスト。
互換性調査の主な差分
- PostgreSQL 12 で
--oidsが廃止。 - PostgreSQL 15 で
--no-synchronized-snapshotsが廃止。 - PostgreSQL 16 で
method[:detail]compression と canonical な large-object 名称を導入。 - PostgreSQL 17 で filter file/stdin と sync-method を追加。
- PostgreSQL 18 で data/schema/statistics の選択制御を追加。
--restrict-keyは単純なメジャーバージョン境界ではなく、13.22+ / 14.19+ / 15.14+ / 16.10+ / 17.6+ / 18.0+ で利用可能。
添付ファイル
pgcli-sharp-phase-1.zip— Phase 1 の対象コミットから作成したソース ZIP。PgCliSharp.0.1.0-alpha.0.nupkg— 同じコミットから生成した NuGet パッケージ。PgCliSharp.0.1.0-alpha.0.snupkg— シンボルパッケージ。
この Release は開発マイルストーンの記録です。この Release だけで nuget.org に公開されるわけではありません。
Phase 0 - Foundation / 基盤
Phase 0 - Foundation / 基盤
日本語
Phase 0 では、PgCliSharp の各 PostgreSQL CLI ラッパーから共通利用する基盤を実装しました。
主な内容
PgCliSharp.slnxへの移行と .NET 10 SDK の固定- 対象フレームワーク
netstandard2.0;net8.0;net10.0の確定 - Nullable、Analyzer、XML ドキュメント、SourceLink、NuGet メタデータの基盤整備
- 英語・日本語のランタイム診断と構造化例外
- PostgreSQL 10〜18 のバージョン/ライフサイクル情報
- シェルを介さないプロセス実行
- キャンセル、タイムアウト、stderr 取得、バイナリ stdout ストリーミング
- 現代 .NET での BCL によるプロセスツリー終了
netstandard2.0向け CliWrap 互換バックエンド- 実行ファイルの
--version解析、キャッシュ、メジャーバージョン検証 - Linux / Windows / macOS の CI
- .NET Framework 4.8 から
netstandard2.0アセットを実行する互換性テスト - 子プロセスツリー終了とバイナリ出力保持の回帰テスト
添付ファイル
pgcli-sharp-phase-0.zip— Phase 0 の対象コミットから作成したソース ZIPPgCliSharp.0.1.0-alpha.0.nupkg— 同じコミットから生成した NuGet パッケージPgCliSharp.0.1.0-alpha.0.snupkg— シンボルパッケージ
この Release は開発マイルストーンの記録です。この Release だけで nuget.org に公開されるわけではありません。
English
Phase 0 establishes the reusable foundation for PgCliSharp.
Included
PgCliSharp.slnxsolution format and .NET 10 SDK pinning.- Accepted target framework matrix:
netstandard2.0;net8.0;net10.0. - Strict nullable/analyzer configuration, XML documentation, SourceLink, and NuGet metadata.
- English/Japanese localized runtime diagnostics and structured exception types.
- PostgreSQL 10-18 version/lifecycle metadata.
- Shell-free process execution with cancellation, timeout handling, binary stdout streaming, and stderr capture.
- Modern .NET process-tree termination through the BCL.
- Conditional CliWrap compatibility backend for
netstandard2.0. - Executable
--versionparsing, caching, and major-version validation. - Linux, Windows, and macOS CI.
- Windows .NET Framework 4.8 compatibility execution against the
netstandard2.0library asset. - Regression coverage for process-tree termination and binary output preservation.
Attached artifacts
pgcli-sharp-phase-0.zip— source snapshot for the exact Phase 0 commit.PgCliSharp.0.1.0-alpha.0.nupkg— NuGet package produced from that commit.PgCliSharp.0.1.0-alpha.0.snupkg— symbol package produced from that commit.
This Phase Release records a development milestone. It does not by itself publish the package to nuget.org.