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]

Reply via email to