[Fix](Nereids) fix leading hint with update of alias name (#34434) (#35046)

Problem:
when using leading like leading(tbl1 tbl2) in
"select * from (select tbl1.c1 from t1 as tbl1 join t2 as tbl2) join t3 as tbl2 on tbl2.c3 != 101;",
in which tbl2.c3 means t3.c3 but not t2.c3
Causes and solved:
when finding columns in condition, leading hint would find tbl2.c3's RelationId, and when we collect RelationId and aliasName
we should update it if aliasName is repeat
This commit is contained in:
LiBinfeng
2024-05-20 10:40:10 +08:00
committed by GitHub
parent 7c29a964e5
commit 5ac4ea2cd9
4 changed files with 60 additions and 17 deletions

View File

@ -216,6 +216,10 @@ public class LeadingHint extends Hint {
pair.second = relationIdTableNamePair.second;
isUpdate = true;
}
if (pair.second.equals(relationIdTableNamePair.second)) {
pair.first = relationIdTableNamePair.first;
isUpdate = true;
}
}
if (!isUpdate) {
relationIdAndTableName.add(relationIdTableNamePair);