Zerolzj opened a new pull request, #29605:
URL: https://github.com/apache/flink/pull/29605

   ## What is the purpose of the change
   
   Fix PyFlink result collection for NULL values inside nested ROW, ARRAY and 
MAP values. PythonBridgeUtils already encodes these values as empty byte 
arrays, but the recursive Python decoder currently raises EOFError or 
IndexError instead of returning None.
   
   JIRA: https://issues.apache.org/jira/browse/FLINK-41199
   
   ## Brief change log
   
   - Decode the existing NULL marker at the recursive converter entry.
   - Delegate top-level fields to the same converter instead of duplicating 
NULL handling in CloseableIterator.
   - Add focused converter regressions and a SQL collect regression for nested 
and top-level NULL values.
   
   No dependency, packaging, Java bridge or wire-format changes. Row(*fields), 
already fixed by FLINK-37616, is unchanged.
   
   ## Verifying this change
   
   - New converter tests: seven tests, nine NULL-related errors without the 
fix, all passing with the fix.
   - The same seven tests pass in an isolated CPython 3.10 environment 
installed from public packages.
   - Flake8 using the repository's flink-python/tox.ini passes for all four 
modified files.
   - Repeated the seven converter tests and Flake8 after updating to community 
master ea07f2cc79edff9133ddd873dc51b970dac67386 on 2026-10-26.
   - Added StreamTableEnvironmentTests.test_collect_nullable_nested_values as 
an SQL collect regression; it has not yet been verified against a complete 
community-master JVM build.
   - Full Maven and Python integration verification have not completed locally. 
The focused checks above are the passing local validation; no full-suite 
success is claimed.
   
   ## Does this pull request potentially affect one of the following parts:
   
   - Dependencies: no.
   - Public API: no; the converter is internal and method signatures are 
unchanged.
   - Serializers: only client-side result decoding of the existing NULL 
sentinel; no wire-format or state-serializer changes.
   - Runtime per-record code paths: only the Python result-collection decoder; 
no TaskManager execution changes.
   - Deployment or recovery: no.
   - S3 connector: no.
   
   ## Documentation
   
   No new feature. This restores expected NULL handling during result 
collection.
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes (please specify the tool below)
   
   Generated-by: OpenAI Codex (desktop)
   


-- 
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]

Reply via email to