emecii opened a new pull request, #25109: URL: https://github.com/apache/datafusion/pull/25109
## Which issue does this PR close? - Part of #22330 (`ScalarUDFImpl::is_strict` slice). ## Rationale for this change A scalar UDF provider can declare that it always returns NULL when any argument is NULL. Across the FFI boundary, that declaration is currently lost and the consumer reports the default `false`, so optimizer nullability and null-rejecting reasoning cannot use the provider's strictness metadata. ## What changes are included in this PR? - Add an unconditional `is_strict` function pointer to `FFI_ScalarUDF`. - Dispatch it to the producer's `ScalarUDFImpl` and forward it from `ForeignScalarUDF`. - Reuse the existing planning-property fixture to cover forced-foreign and real cross-library round trips. ## What is the testing strategy for this PR? - `cargo fmt --all -- --check` - `cargo test -p datafusion-ffi --features integration-tests` (122 unit tests and all FFI integration targets passed) - Focused forced-foreign regression test - Focused `dlopen`/cdylib regression test Local lint note: this checkout provides Rust 1.98 while the repository pins 1.97. The unmodified dependency graph triggers six new Rust 1.98 clippy lints before/around `datafusion-ffi`; allowing only those pre-existing lints lets `cargo clippy -p datafusion-ffi --all-targets --all-features -- -D warnings` complete successfully. The exact workspace all-features lint also stalled in native `aws-lc-sys`/`protobuf-src`/`snmalloc-sys` build scripts on this macOS host. ## Are there any user-facing changes? Yes. Foreign scalar UDFs now preserve strictness metadata. Adding the function pointer changes the `FFI_ScalarUDF` layout, so this PR requires the `api change` label and must not be backported to a patch-release branch. ## AI assistance AI-generated with Codex (GPT-5). The implementation follows the existing unconditional function-pointer pattern for defaulted trait methods. No implementation unknowns are currently known; the local lint/toolchain limitations are disclosed above. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
