yisha zhou created FLINK-35827:
----------------------------------
Summary: Equality bewteen a row field and a row constant is wrong
in SQL
Key: FLINK-35827
URL: https://issues.apache.org/jira/browse/FLINK-35827
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Reporter: yisha zhou
To reproduce the issue, you can add codes below in RowTypeTest
{code:java}
testAllApis(
'f2 === row(2, "foo", true),
"f2 = row(2, 'foo', true)",
"true"
) {code}
f2 is actually the same as the constant `row(2, "foo", true)`, however the
result of expression `f2 = row(2, 'foo', true)` is false.
The root cause is that `ScalarOperatorGens.generateEquals` generates code like
`$leftTerm.equals($rightTerm)` for row types. However f2 may be a
GenericRowData, the constant may be a BinaryRowData, the equality between them
are false.
And after investigating the code, I believe logic in
`EqualiserCodeGenerator.generateEqualsCode` can handle the issue here.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)