Postgres-XLとPostgreSQLの最新かつ最高のリリースとの統合に向けて取り組んでいるため、数か月忙しいです。 Postgres-XLはPostgreSQLのオープンソースフォークであり、OLTPとビジネスインテリジェンスにスケーラブルなプラットフォームを提供します。 Postgres-XLの現在のリリースはPostgreSQL9.2に基づいているため、過去3年間にPostgreSQLに対して行われたすべての改善が欠けています。
2ndQuadrantおよびその他の企業は、分散スケーラビリティをPostgreSQLコアに導入し、コア外でツールと拡張機能を構築することに取り組んでいます。その一環として、Postgres-XLにはコアPostgreSQLに戻したい多くの機能があるため、2ndQuadrantは、最初のステップとしてPostgres-XLコードベースを最新のPostgreSQLリリースに更新するタスクを採用しました。 3か月以上の作業の後、PostgreSQL 9.5はまだアルファ段階にあるため、作業の進行状況に関する進捗レポートを提供したいと思いました。また、魔法の言葉を言う必要があります。Postgres-XLに関するこの進行中の作業は、助成金契約318633の下で欧州連合によって資金提供されたAXLEプロジェクトの一部です。
マージの準備
PostgreSQLとPostgres-XLはどちらもソース管理システムとしてGITを使用しているため、GITはプロセスを支援する多くのツールを提供するため、マージプロセスがはるかに簡単になります。しかし、マージを試みるとすぐに、最初のハードルに直面しました。
現在のPostgres-XLリポジトリは、PostgreSQLの古いマイナー9.2リリースに基づいていることがわかりました。つまり、Postgres-XLマスターブランチにコミットと変更があり、PostgreSQLのマスターブランチに対して行われたことがないか、コミットIDが異なっていたということです。そのため、PostgreSQLマスターブランチとのマージにより、他の予想よりもはるかに多くの競合が発生しました。したがって、最初に実行する必要があるタスクは、Postgres-XL9.2リポジトリを後のコミットポイントにリベースすることでした。これには明らかに注意深い踏み込みが必要であり、プロセス中に何も壊れないようにします。基本的なリベースが完了したら、すべてのPostgres-XLバグ修正と拡張機能をマージし、Postgres-XL 9.2安定ブランチを作成し、9.2ブランチを最新の利用可能なPostgreSQL9.2マイナーリリースとマージしました。
マージ中に直面する課題
PostgreSQLマスターブランチとの実際のマージも簡単な作業ではありませんでした。 PostgreSQLの3つのメジャーリリースをジャンプしていたことに注意してください。これは、ほぼ3年間の開発作業を占めています。ありがたいことに、git-mergetoolは、このような大規模なマージに非常に便利です。お気に入りのエディター(この場合はvimdiff)を使用して、マージの競合を適切に確認し、解決することができます。競合の中には単純で微調整が必要なものもありますが、多くの場合、コードを注意深く読んで理解する必要があります。すべての新機能をサポートすることは簡単ではありませんが、可能な限り維持するように努め、非常に成功しています。
もう1つの大きな課題は、ドキュメントの変更をマージすることでした。 Postgres-XLプロジェクトは既存のSGMLドキュメントのコピーを作成したため、マスターブランチとのGITマージでは、コピーの更新は行われませんでした。これには手動マージが必要でした。今後のマージでこれが再び必要にならないようにするために、ドキュメントをその場で変更します。
次は何ですか?
Postgres-XL 9.5を一般にリリースする前に完了する必要のあることがたくさんあります:
- Postgres-XLの回帰テストの対象範囲を拡大する
- バグを修正し、新機能のサポートを追加します
- 体系的なパフォーマンステストと調整を行う
- Postgres-XL 9.5ブランチを作成し、最新のPostgreSQL9.5安定ブランチとマージします
Postgres-XLのレビューの準備はまだできていませんが、Postgres-XL9.5BetaはPostgreSQL9.5Betaとほぼ同じ時期に準備が整うと予想しています。
次の更新のために、約1か月後に次のブログ投稿を探してください。