Restore https://github.com/apache/calcite/pull/5025. This is the first time I've heard of this issue with Git, sorry.
Best wishes, Cancai Cancai Cai <[email protected]> 于2026年6月9日周二 11:48写道: > I'm very sorry about my mistake; it was because I didn't look carefully > enough when writing the code in the AI. I'm very sorry for that. > > Since I'm on vacation this week, I will resolve this issue next week. > Best wishes. > Cancai > > Sergey Nuyanzin <[email protected]> 于2026年6月8日周一 16:01写道: > >> Hi everyone >> >> I noticed that removal of Gandiva PR/commit[1] made extra more steps >> than probably it should >> >> for instance it implicitly completely reverted fixe for >> CALCITE-7562[2], CALCITE-7567[3], CALCITE-7578[4], CALCITE-7588[5] >> >> Was it intentional? >> >> >> [1] https://github.com/apache/calcite/pull/4992 >> [2] https://issues.apache.org/jira/browse/CALCITE-7562 >> [3] https://issues.apache.org/jira/browse/CALCITE-7567 >> [4] https://issues.apache.org/jira/browse/CALCITE-7578 >> [5] https://issues.apache.org/jira/browse/CALCITE-7588 >> >> On Thu, Jun 4, 2026 at 4:53 PM Julian Hyde <[email protected]> >> wrote: >> > >> > +1 >> > >> > > On Jun 4, 2026, at 12:57 AM, Alessandro Solimando < >> [email protected]> wrote: >> > > >> > > If it's not supported anymore it's already a good enough argument to >> > > replace it. >> > > >> > > The proposed plan looks reasonable to me. >> > > >> > > Alessandro >> > > >> > >> On Thu, Jun 4, 2026, 09:45 jensen <[email protected]> wrote: >> > >> >> > >> I vaguely recall that Arrow's official website also discourages the >> use of >> > >> Gandiva, and Gandiva is no longer maintained. If possible, I think we >> > >> should remove this dependency. >> > >> >> > >> >> > >> >> > >> Best regards, >> > >> >> > >> Zhen >> > >> >> > >> ---- Replied Message ---- >> > >> | From | Cancai Cai<[email protected]> | >> > >> | Date | 6/4/2026 14:20 | >> > >> | To | <[email protected]> | >> > >> | Subject | Subject: [DISCUSS] Removing Gandiva from the Arrow >> adapter | >> > >> Hi all, >> > >> >> > >> I would like to discuss the future of Gandiva in Calcite's Arrow >> adapter. >> > >> My preferred long-term direction is to remove the Gandiva dependency >> from >> > >> the adapter. >> > >> >> > >> The current adapter uses Arrow Java to read Arrow data, but relies on >> > >> Gandiva `Projector` and `Filter` for projection and filter execution. >> > >> Gandiva is a native LLVM-based runtime, and the Java module is a >> wrapper >> > >> around that native implementation. As a result, basic Arrow adapter >> queries >> > >> depend on native libraries, LLVM compatibility, platform packaging, >> and JDK >> > >> baseline details. >> > >> >> > >> This has become a practical maintenance problem when thinking about >> Arrow >> > >> dependency upgrades. >> > >> >> > >> The upgrade problem is not limited to Java bytecode compatibility. >> In our >> > >> experiments, newer Arrow versions failed at different layers. Arrow >> 18 >> > >> requires a newer Java baseline than Calcite currently supports in >> its JDK 8 >> > >> jobs. Arrow 17 and 16.1 still use Java 8 class files, but can hit >> Java >> > >> runtime API incompatibilities on JDK 8, such as `ByteBuffer.flip(): >> > >> ByteBuffer`. Arrow 16.0 avoids that Java runtime issue, but exposed >> Gandiva >> > >> native / LLVM symbol issues on Linux CI. >> > >> >> > >> This means that as long as `arrow-gandiva` is required for the >> adapter's >> > >> correctness path, upgrading the Arrow Java vector layer also requires >> > >> validating the native Gandiva stack across all CI platforms. Even >> when >> > >> `arrow-vector` itself is usable, `arrow-gandiva` can still block the >> > >> upgrade. >> > >> >> > >> For that reason, I think the adapter should make projection/filter >> > >> correctness independent of Gandiva first. Once the Java correctness >> path is >> > >> in place, Arrow vector upgrades can be evaluated separately from >> Gandiva >> > >> native compatibility. >> > >> >> > >> The direction I have in mind is a pure Java correctness path for the >> Arrow >> > >> adapter: >> > >> >> > >> * read Arrow data with `ArrowFileReader`, `VectorSchemaRoot`, and >> > >> `ValueVector`; >> > >> * execute simple projections by reading selected vectors directly; >> > >> * execute the simple filters currently translated by >> `ArrowTranslator` with >> > >> a Java evaluator; >> > >> * leave expressions that are not pushed into the adapter to Calcite's >> > >> normal Enumerable / code generation path. >> > >> >> > >> With that model, Gandiva would no longer be required for >> correctness. A >> > >> staged migration could be: >> > >> >> > >> 1. Move no-filter simple projection away from Gandiva. >> > >> 2. Add Java evaluation for the simple filter subset currently >> supported by >> > >> `ArrowTranslator`. >> > >> 3. Validate that existing Arrow adapter tests pass without invoking >> > >> Gandiva. >> > >> 4. Remove `arrow-gandiva` from the adapter dependency set once the >> Java >> > >> path covers the current behavior. >> > >> >> > >> The tradeoff is that Gandiva may be faster for supported >> expressions. But >> > >> for this adapter, I think correctness, portability, and dependency >> > >> stability should come first. If acceleration is needed later, it can >> be >> > >> discussed separately. >> > >> >> > >> Does this direction make sense to the community? Are there current >> use >> > >> cases that depend on Gandiva pushdown strongly enough that we should >> keep >> > >> the native dependency? >> > >> >> > >> Thanks, >> > >> Cancai >> > >> >> >> >> >> -- >> Best regards, >> Sergey >> >
