Skip to content

datalake_fdw: build against the Arrow the Rocky images carry - #2166

Merged
yjhjstz merged 1 commit into
apache:mainfrom
MisterRaindrop:fix/datalake-ci-arrow-image
Oct 22, 2026
Merged

yjhjstz merged 1 commit into
apache:mainfrom
MisterRaindrop:fix/datalake-ci-arrow-image

Conversation

@MisterRaindrop

Copy link
Copy Markdown
Contributor

What does this PR do?

Since the Rocky build images were rebuilt with Arrow and Parquet C++ (#2155), all three ic-datalake-fdw jobs fail on main before anything is built, e.g. on 7facde1:

  • Rocky 9 / 10: the step installs EPEL's libarrow-devel, which conflicts with the image's arrow-devel-26.0.0 over the same headers:
    file /usr/include/arrow/api.h from install of libarrow-devel-9.0.0-15.el9 conflicts with file from package arrow-devel-26.0.0-1.el9
  • Rocky 8: the step pins arrow-devel-17.0.0-1.el8, but the image leaves the Arrow repository disabled:
    No match for argument: arrow-devel-17.0.0-1.el8

This PR:

  1. Drops the Arrow install from the "Build extension against the installed server" step, so datalake_fdw builds against the images' own Arrow (22.0.0 on Rocky 8, 26.0.0 on Rocky 9 and 10).
  2. Makes datalake_fdw build against Arrow 26:
    • Arrow 23 moved its headers to C++20, so the Makefile selects -std=c++20 -Wno-volatile for Arrow >= 23 and keeps -std=c++17 below that. -Wno-volatile is for the server's own HOLD_INTERRUPTS.
    • Arrow 26 removed the out-parameter FileReader::GetRecordBatchReader; the Result-returning form (Arrow >= 19) is used from 19 on, with the old spelling kept for older versions.

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Test Plan

Ran the ic-datalake-fdw flow locally (build and install the server, PGXS-build contrib/datalake_fdw with nothing installed, demo cluster with shared_preload_libraries='datalake_fdw', make -C contrib/datalake_fdw installcheck):

Image Arrow C++ std Result
cbdb-build-rocky8-latest (new) 22.0.0 c++17, no warnings parquet_roundtrip, iceberg_am_ddl, iceberg_am_reject, iceberg_am_acl: all pass
Rocky 9 build image + the Dockerfile's Arrow 26.0.0 install 26.0.0 c++20, no warnings same 4 tests: all pass

Rocky 10 is covered by CI only.

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck (contrib/datalake_fdw)
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Dependencies: none new; the Arrow version under test is now the build image's.

Checklist

The Rocky build images now ship Arrow and Parquet C++ themselves (apache#2155):
22.0.0 on Rocky 8 and 26.0.0 on Rocky 9 and 10, with the Arrow repository
left disabled.  The ic-datalake-fdw step still installed its own copy, so
once the images were rebuilt it failed before building anything: on Rocky
9 and 10 EPEL's libarrow-devel conflicts with the image's arrow-devel over
the same headers, and on Rocky 8 the pinned 17.0.0 is no longer reachable.
The step now installs nothing and builds against the image's Arrow.

Arrow 23 moved its headers to C++20 (std::span, std::bit_width), so the
Makefile picks -std=c++20 when Arrow is 23 or newer and keeps C++17 below
that.  C++20 deprecates ++ and -- on a volatile, which the server's own
HOLD_INTERRUPTS does, so -Wvolatile is off with it.

Arrow 26 removed the FileReader::GetRecordBatchReader overload that
returns its reader through an out parameter.  The Result-returning form
exists from Arrow 19, so the reader uses it from there and keeps the old
spelling for older versions.
@yjhjstz
yjhjstz enabled auto-merge (rebase) October 22, 2026 02:20
@tuhaihe

tuhaihe commented Oct 22, 2026

Copy link
Copy Markdown
Member

We can merge this PR first. Otherwise, other PRs may face test failures on datalake_fdw

@yjhjstz
yjhjstz merged commit 707a2ab into apache:main Oct 22, 2026
121 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants