Skip to content

Releases: ShutenOishi/pgcli-sharp

Phase 2 - pg_restore + pg_dumpall / pg_restore・pg_dumpall 型付きラッパー

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:11
f843bde

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_restore and pg_dumpall based on official application documentation and REL_10_STABLE through REL_18_STABLE upstream source.
  • Machine-readable compatibility specifications at spec/postgresql/pg_restore.json and spec/postgresql/pg_dumpall.json.
  • Source-level option inventory audits, alias/spelling tracking, per-major resolved inventories, constraints, defaults, and explicit API bindings.
  • Tool-specific PgRestoreOptions and PgDumpAllOptions APIs rather than a public common-options base.
  • Typed mutually exclusive models including PgRestoreMode, PgRestoreContentMode, PgRestoreTransactionMode, PgDumpAllScope, and PgDumpAllContentMode.
  • Dedicated PgRestoreInput modeling 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-key security-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_dump custom/directory archive relationships with pg_restore, while preserving pg_dumpall as 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_restore script-output behavior differs before/after PostgreSQL 12; PgCliSharp normalizes stream output with --file=-.
  • pg_restore --no-reconnect remains accepted as an upstream compatibility no-op.
  • pg_restore --create + --single-transaction becomes an explicit hard error from PostgreSQL 12 onward and is not projected backward.
  • PostgreSQL 17 adds pg_restore --filter and --transaction-size; PostgreSQL 18 adds data/schema/statistics controls.
  • pg_dumpall -d/--dbname is a libpq connection string, while -l/--database chooses 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_dump same-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_dump custom/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 型付きラッパー

Choose a tag to compare

@github-actions github-actions released this 18 Sep 09:18
ee3c422

Phase 1 - pg_dump / pg_dump 型付きラッパー

English

Phase 1 adds the first complete typed PostgreSQL CLI wrapper: pg_dump.

Included

  • PostgreSQL 10-18 pg_dump option 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_STABLE through REL_18_STABLE.
  • Complete typed PgDumpOptions coverage 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-key option.
  • 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 PgDumpResult metadata 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-key is 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 / 基盤

Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 05:03
7f17a6d

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 の対象コミットから作成したソース ZIP
  • PgCliSharp.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.slnx solution 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 --version parsing, caching, and major-version validation.
  • Linux, Windows, and macOS CI.
  • Windows .NET Framework 4.8 compatibility execution against the netstandard2.0 library 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.