[
https://issues.apache.org/jira/browse/CALCITE-6852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17929645#comment-17929645
]
Alessandro Solimando commented on CALCITE-6852:
-----------------------------------------------
I understood that, and it's evident that this is a subtle problem to be
expressed in natural language, a clear code example of what you tried building
(or [~suibianwanwan33] attempt) and a list of (code) assertions capturing what
you need for reproducing the issue (for instance, checking a project on top of
project, and some properties of the aliases, if I got it right).
Why am I saying this? Because if we can't reproduce the issue, there is very
little chance that any fix will be accepted (we can't verify what the changes
do), and even if we trusted the solution without tests, we have no way to avoid
regressions over time, people might break this again without noticing, because
there are no tests to warn them.
If we can't shape programmatically an expression that reproduces the issue, we
will never be able to write a test. If we can't write a test, we won't have a
fix.
> Project's digest calculation error, should include FieldNames in rowType
> -------------------------------------------------------------------------
>
> Key: CALCITE-6852
> URL: https://issues.apache.org/jira/browse/CALCITE-6852
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.39.0
> Reporter: Zhen Chen
> Assignee: Zhen Chen
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.39.0
>
> Attachments: image-2025-02-22-17-19-46-706.png,
> image-2025-02-23-16-47-22-367.png, image-2025-02-23-16-53-03-724.png
>
>
> When I was building test cases for CALCITE-6850, I found that the results did
> not meet my expectations. When debugging the code, I discovered that the
> project's digest calculation did not include column names, This leads to the
> inability to correctly find the correct project during the findBestExp
> process.
> debug picture:
> !image-2025-02-22-17-19-46-706.png|width=553,height=245!
> I think we need to add column names in computing project's degist like this:
> {code:java}
> // code now
> protected int deepHashCode0() {
> return Objects.hash(traitSet, input.deepHashCode(), exps, hints);
> }
> // should change to
> protected int deepHashCode0() {
> return Objects.hash(traitSet, input.deepHashCode(),
> exps, hints, getRowType().getFieldNames());
> }{code}
> This change will affect some cases and the results of these cases need to be
> fixed.
>
> If calcite need this change, I can pull a pr. If this issue is not fixed,
> there will be no way to find a case for issue CALCITE-6850.
>
> supplement:
> !image-2025-02-23-16-47-22-367.png|width=518,height=274!
> !image-2025-02-23-16-53-03-724.png|width=521,height=284!
> If project fields is not nested, then it wil use field name as pw key, and
> expr as pw value,but in deepHashCode(), only use pw value to compute hash
> code. So other operators has no effect. Such as Agg, it use the aggCalls as
> pw value.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)