3.x: Upgrade bundled orafce from 4.9.2 to 4.16.13

オープン
#2,174 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

@tuhaihe がすでに取り組んでいます。

2026年10月27日 から。

  • #2208 @tuhaihe による — オープン

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
c, git, postgresql, sql
領域
databases

調査の方向性

Start with gpcontrib/orafce/README.gp and the current regression schedule in gpcontrib/orafce; identify which of the 21 SQL tests can run in MPP before expanding coverage. Then compare the local patches with upstream tag VERSION_4_16_13 and preserve applicable changes. Done means the update chain, fresh install, upgrade and pg_upgrade paths pass, licensing checks stay green, and release notes describe user-visible changes.

索引モデルが issue の本文から書いたものです。

説明

Summary

The bundled gpcontrib/orafce is 4.9.2 (META.json:5; orafce.control default_version = '4.9', imported 2024-07). Propose upgrading it to 4.16.13 — the current release of the upstream series that supports PostgreSQL 16 — as part of 3.0.

orafce is the Oracle-compatibility layer many migration workloads depend on, so refreshing it is user-visible content for a major release, not just dependency hygiene.

Current state

  • 4.9.2 is roughly seven minor releases and 2+ years behind upstream (4.10 → 4.16.x). 4.16.13 is currently packaged for PG16 by PGDG and distributions.
  • The module is imported as a git subtree of orafce/orafce (workflow documented in gpcontrib/orafce/README.gp), so the upgrade is a git subtree pull to tag VERSION_4_16_13, with local patches applied explicitly afterwards.
  • PG16 compatibility today is fine: there are 9 #if PG_VERSION_NUM >= 160000 guards in the code, and CI runs gpcontrib/orafce:installcheck as part of the required ic-gpcontrib check. This issue is about refreshing content, not fixing a build.
  • Test coverage is thin: Makefile:76,92 runs REGRESS = orafce plus --schedule=parallel_schedule, but the schedule only lists init, dbms_pipe_session_A, dbms_pipe_session_B — that is 4 of the 21 SQL test files (~19%). The dbms_alert tests are commented out as MPP-unsuitable.
  • Local delta that must survive the upgrade:
    • regexp_not_like() added to orafce--4.8--4.9.sql and orafce--4.9.sql (7bda69676d5);
    • MPP test adaptations (gp_distributed_by, gp_partition_by, nlssort) and rebranding (b64d461e37c);
    • locale handling change in others.c (4af1cf5a09b).

Why this belongs in 3.0

  • A major release is the natural window to refresh a bundled dependency; doing it now avoids turning this into a multi-year jump.
  • orafce is user-facing: accumulated upstream fixes and compatibility improvements can be summarized as a concrete 3.0 highlight in the release notes.
  • It keeps future refreshes cheap — the next one can target a handful of minor releases instead of seven.

Work items

  • Prerequisite: expand orafce regression coverage — move as many of the 21 test files into the schedule as can run single-node/MPP, keeping dbms_alert skipped with an explicit reason. Without this, behavior changes from the upgrade are invisible.
  • git subtree pull orafce/orafce at tag VERSION_4_16_13 (per README.gp).
  • Re-apply the local delta: regexp_not_like() (check whether upstream 4.16 has adopted it — drop the patch if so), MPP test adaptations, others.c locale handling, rebranding.
  • Ship the full upgrade chain from 4.9 to 4.16.13 (orafce--4.9--4.10.sql … orafce--4.16.13.sql) plus the new base install script; bump orafce.control default_version and META.json.
  • Verify the extension update path: CREATE EXTENSION orafce VERSION '4.9'; ALTER EXTENSION orafce UPDATE;, and a pg_upgrade from a 2.x cluster (pg_upgrade's update_extensions.sql emits ALTER EXTENSION orafce UPDATE).
  • Check licensing: orafce is 0BSD (COPYRIGHT.orafce), registered under LICENSE:542 + licenses/LICENSE-orafce.txt; confirm copyright/NOTICE text is still accurate after the update and RAT stays green.
  • Run the required ic-gpcontrib check plus broader ICW; prepare a short "user-visible changes" section for the 3.0 release notes.

Acceptance criteria

  • \dx orafce reports 4.16.13; fresh install, update from 4.9, and a 2.x → 3.0 pg_upgrade all succeed.
  • Existing orafce behavior is unchanged except for documented upstream fixes/features; the expanded test suite passes.
  • regexp_not_like() and the other Cloudberry-specific behavior remain available.
  • License/NOTICE and RAT checks stay green; CI ic-gpcontrib is green.
  • A user-visible changes section is ready for the 3.0 release notes.

Risks

  • Compatibility-layer semantics changes may alter results for Oracle-migration workloads; needs release-note attention.
  • Local SQL patches complicate the subtree merge and the upgrade-script chain.
  • Expanding tests in an MPP environment may require per-test expected-output adaptation — scope the prerequisite before starting the merge.

References

主要言語
C
スター
1.4k
フォーク
265
平均マージ
3日 18時間
マージ済み PR(30日)
70

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/cloudberry のほかの issue

apache/cloudberry の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。