englefly commented on PR #67549:
URL: https://github.com/apache/doris/pull/67549#issuecomment-6142082495

   按这几轮的讨论,先落地**第一批**(低风险、可独立验证):commit e9c2f7c8c5f。
   
   **1) 每一个"没有指纹"的节点现在都会说明原因**(走已有的 `KEY_HBO_STRUCT_SKIP` 机制):
   - `unsupported=<算子>`(topn/limit/union/cte/generate…)
   - `sharing=group <id> reached twice`(CTE producer 被两个 consumer 消费)
   - `delimiter in table name <table>`(名字里含 `,`/`}`,打印出来读不回去)
   - `arity=<n> of <算子>`(unary plan 的 memo expression 孩子数不符)
   - `no logical expression in group <id>`(只有物理表达式)
   - 父节点会**沿用子节点**的原因(第一个原因胜出),所以用户看到的那个节点上就能看到根因;宽度超限的消息不变,只是改从同一条路径产生(旧的 
summary-only 访问器删掉)。
   
   **2) `LogicalSort` / `LogicalWindow` 与 `LogicalProject` 一样透明**:都不改变行数,sort 
key / window frame 也不影响行数 → 它们上面的 join/agg 不再丢指纹(实测:window 夹在两个 join 之间时,上层 
join 以前没有指纹,现在有了)。join 链的下钻也一并穿过它们,保证"两个 join 之间夹一个 sort"不会在不同 expression 
里被区别对待。
   
   验证:单测 4/4 通过;本地实测 window 夹 join 的上层 join 恢复指纹、CTE 双消费者报 `skipped: 
unsupported=LogicalCTEConsumer`。**`query_p0/hbo` 全量与注解逐字节对比这一轮没能复跑**:本地 BE 
又崩了(这台环境已知的 brpc load-stream 崩溃),而套件在失败前已把表 drop 掉,需要先重建 
fixture;崩溃前那次对比里,参考查询集的注解除新增的 `skipped` 行外没有任何变化。
   
   后续批次(按讨论的顺序,尚未提交):
   - **改用 chosen group expression**(消掉"代表 expression 落在 TopN 下推/window 
等形态"造成的假阴性)——需要 `appendPlan` 同时接受物理算子;
   - **允许重复访问 group**(CTE 与"写两遍"共用一把 key,契约从"物理形状"放宽为"逻辑形状 + 数据状态";已核对 
pinned/learned 两个守卫在"两侧一致"前提下自洽);
   - 与它配套的**链信息记忆化**(`ctx.visited` 不再需要 → 阻塞解除,链遍历 O(n²)→O(n));
   - **身份模式的字面量编码**(不折叠)→ 一起接上 `limit/topn`、`Generate` 的表函数参数、set-op 
的比较列;`Repeat` 按"多套 group key"支持(常量在 group key 里不影响行数,现有折叠安全);
   - 以及 review 里那条同源项:J/A 的 key 常量敏感。
   


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