Skip to content

Commit d71e916

Browse files
committed
[fix-32711][core] fix side table as alias check error.
1 parent c22c7cc commit d71e916

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

core/src/main/java/com/dtstack/flink/sql/side/SideSqlExec.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -319,23 +319,23 @@ private List<String> convertPrimaryAlias(AbstractSideTableInfo sideTableInfo) {
319319
* @param conditionNode
320320
* @param joinScope
321321
*/
322-
public void checkConditionFieldsInTable(SqlNode conditionNode, JoinScope joinScope, Map<String, AbstractSideTableInfo> sideTableMap) {
322+
public void checkConditionFieldsInTable(SqlNode conditionNode, JoinScope joinScope, AbstractSideTableInfo sideTableInfo) {
323323
List<SqlNode> sqlNodeList = Lists.newArrayList();
324324
ParseUtils.parseAnd(conditionNode, sqlNodeList);
325325
for (SqlNode sqlNode : sqlNodeList) {
326326
if (!SqlKind.COMPARISON.contains(sqlNode.getKind())) {
327-
throw new RuntimeException("not compare operator.");
327+
throw new RuntimeException("It is not comparison operator.");
328328
}
329329

330330
SqlNode leftNode = ((SqlBasicCall) sqlNode).getOperands()[0];
331331
SqlNode rightNode = ((SqlBasicCall) sqlNode).getOperands()[1];
332332

333333
if (leftNode.getKind() == SqlKind.IDENTIFIER) {
334-
checkFieldInTable((SqlIdentifier) leftNode, joinScope, conditionNode, sideTableMap);
334+
checkFieldInTable((SqlIdentifier) leftNode, joinScope, conditionNode, sideTableInfo);
335335
}
336336

337337
if (rightNode.getKind() == SqlKind.IDENTIFIER) {
338-
checkFieldInTable((SqlIdentifier) rightNode, joinScope, conditionNode, sideTableMap);
338+
checkFieldInTable((SqlIdentifier) rightNode, joinScope, conditionNode, sideTableInfo);
339339
}
340340

341341
}
@@ -347,7 +347,7 @@ public void checkConditionFieldsInTable(SqlNode conditionNode, JoinScope joinSco
347347
* @param joinScope
348348
* @param conditionNode
349349
*/
350-
private void checkFieldInTable(SqlIdentifier sqlNode, JoinScope joinScope, SqlNode conditionNode, Map<String, AbstractSideTableInfo> sideTableMap) {
350+
private void checkFieldInTable(SqlIdentifier sqlNode, JoinScope joinScope, SqlNode conditionNode, AbstractSideTableInfo sideTableInfo) {
351351
String tableName = sqlNode.getComponent(0).getSimple();
352352
String fieldName = sqlNode.getComponent(1).getSimple();
353353
JoinScope.ScopeChild scopeChild = joinScope.getScope(tableName);
@@ -364,7 +364,6 @@ private void checkFieldInTable(SqlIdentifier sqlNode, JoinScope joinScope, SqlNo
364364
ArrayList<String> allFieldNames = new ArrayList(
365365
Arrays.asList(fieldNames)
366366
);
367-
AbstractSideTableInfo sideTableInfo = sideTableMap.get(tableName);
368367
// HBase、Redis这种NoSQL Primary Key不在字段列表中,所以要加进去。
369368
if (sideTableInfo != null) {
370369
List<String> pks = sideTableInfo.getPrimaryKeys();
@@ -497,7 +496,8 @@ private void joinFun(Object pollObj,
497496
joinScope.addScope(rightScopeChild);
498497

499498
HashBasedTable<String, String, String> mappingTable = ((JoinInfo) pollObj).getTableFieldRef();
500-
checkConditionFieldsInTable(joinInfo.getCondition(), joinScope, sideTableMap);
499+
// 检查JOIN等式字段是否在原表中
500+
checkConditionFieldsInTable(joinInfo.getCondition(), joinScope, sideTableInfo);
501501

502502
//获取两个表的所有字段
503503
List<FieldInfo> sideJoinFieldInfo = ParserJoinField.getRowTypeInfo(joinInfo.getSelectNode(), joinScope, true);

0 commit comments

Comments
 (0)