A table operator handed a port that carried no rows loses every column
维护者通常 1 天内回复
@kz930 已经在做这个了。
开始于 2026年9月10日。
评估
这个 Issue 还没有评估数据。
描述
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'
- 主要语言
- Scala
- 星标
- 322
- 派生
- 195
- 平均合并
- 2 天 14 小时
- 30 天内合并 PR
- 126
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/texera 的其他 Issue
-
Search bar autocomplete stops working after a model appears in the suggestions可能已有人在做 @aglinxinyuan 于 24 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
JSONL File Scan reads a JSON null as the text "null"可能已有人在做 @CaroFernando 于 22 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 86/100
apache/texera#8674 · 1 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
LARGE_BINARY test leaves a real S3 object behind on every S3-reachable run可能已有人在做 @ShawnGarello 于 7 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
Missing workflow returns 500 from workflow type endpoint可能重新可做 @VuMartin 于 46 天前认领,目前没有进行中的 PR。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
相似的 Issue
-
难度 1/5 1-3 小时 新手友好度 91/100
com-vitthalmirji/toon4s#117 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
propensive/soundness#2294 ·
维护者通常 1 天内回复
-
area:scale audit priority:P2
难度 2/5 1-3 小时 新手友好度 76/100
KD5UJC-XYZ/scarab#231 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
SpinalHDL/VexiiRiscv#198 ·
维护者通常 3 天内回复
-
nativeLink relinks every build: IO.write leaves stale trailing bytes in build-checksum可能已有人在做 @kimmoeklund 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
scala-native/scala-native#5111 ·
维护者通常 1 天内回复