A table operator handed a port that carried no rows loses every column
Maintainers usually reply within 1 day
@kz930 is already working on this.
Since Sep 10, 2026.
Assessment
This issue has not been assessed yet.
Description
What happened?
A port can finish having carried no rows. An upstream filter that matches nothing still ends its channel, and DataProcessor calls on_finish either way. TableOperator then builds its table out of no tuples, and since Table.from_tuple_likes reads the column names off the tuples it is given, the operator is handed a DataFrame with no columns at all rather than the declared columns with no rows under them.
Every table operator that names one of its own columns raises KeyError on that column. Sort is the plainest case, but this reaches the visualization operators and any user-written UDFTableOperator as well. The expected behaviour is the one the schema already describes: the port's declared columns, empty.
How to reproduce?
Build a workflow of CSV File Scan, then Filter with a condition no row satisfies, then Sort on one of the scanned columns, and run it. Sort fails with KeyError naming the sort column, even though that column exists on the link.
The same thing shows without the engine, from the Python worker's own models. Table(Table.from_tuple_likes([])) reports columns: [], and calling sort_values(by=["x"]) on it raises KeyError: 'x'. Building the frame from the port's schema instead, through pyarrow.Table.from_pylist([], schema=schema.as_arrow_schema()).to_pandas(), gives columns ['x', 'name'] with dtypes int32 and object, and the same sort succeeds with shape (0, 2).
Part of #8325: the export's verification runs each operator on an empty table too, and a Python operator's engine-side run cannot be compared until this is fixed. The bug itself is not about the export, and reaches Sort, the visualization operators and any user-written UDFTableOperator in an ordinary run.
Version/Branch
1.4.0-incubating-SNAPSHOT (main)
Commit Hash (Optional)
1fbd34627
Relevant log output
KeyError: 'x'
- Dominant language
- Scala
- Stars
- 316
- Forks
- 192
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 131
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/texera
-
inner.py carries an ASF header over MIT third-party code and is missing from LICENSEPossibly taken @mengw15 claimed this 5 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
apache/texera#8775 · 1 comment ·
Maintainers usually reply within 1 day
-
Search bar autocomplete stops working after a model appears in the suggestionsPossibly taken @aglinxinyuan claimed this 8 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/texera#8700 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
apache/texera#8682 · 5 comments ·
Maintainers usually reply within 1 day
-
JSONL File Scan reads a JSON null as the text "null"Possibly taken @CaroFernando claimed this 6 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
apache/texera#8674 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
Similar issues
-
area:expressions area:ffi bug good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
apache/datafusion-comet#6592 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
chipsalliance/chisel#5504 ·
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 2/5 Half a day Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Homebrew formula 2.1.26: 'cs completions bash' fails (exit 127) because bin/cs is not executableOpen
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
smart-data-lake/smart-data-lake#1166 ·
Maintainers usually reply within 1 day