kz930 opened a new pull request, #8488:
URL: https://github.com/apache/texera/pull/8488

   ### What changes were proposed in this PR?
   
   The runtime now tells an executor what each input port was declared to 
carry, and `TableOperator` falls back to that when a port finishes with no rows.
   
   `Operator` gains an `input_schemas` mapping, keyed by port index. 
`DataProcessor` writes the finishing port's schema into it just before calling 
`on_finish`, reading it from the input manager's own port; a source has no 
input port to ask, so it is left alone. `TableOperator.on_finish` uses it only 
when there are no tuples to read column names off, which is the only case where 
the tuples do not already say the same thing. `Table.empty_of` builds that 
frame through Arrow, so each column carries the dtype it would have had with 
rows in it rather than object.
   
   ### Any related issues, documentation, discussions?
   
   Closes #8487
   
   ### How was this PR tested?
   
   A new case in `TestTableOperator`, 
`test_on_finish_with_no_rows_keeps_the_declared_columns`, gives a port an 
INTEGER and a STRING column, finishes it with no rows, and asserts the operator 
receives both columns, an empty frame, and `int32` for the integer one. 
Removing the fallback turns it red on the missing columns.
   
   The rest of `amber/src/test/python/core` passes unchanged, 1107 tests. The 
one failure is `test_iceberg_rest_catalog_integration`, which needs a running 
catalog and fails the same way without this change.
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Claude Opus 5)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


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