Skip to content

Commit f3ee3ce

Browse files
author
xuchao
committed
初步重构 sql语句解析逻辑;
字段替换和重命名相关的逻辑在解析阶段完成; 目标:经过解析sql之后的所有sql是确定的。
1 parent 8e2e91d commit f3ee3ce

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

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

+21-17
Original file line numberDiff line numberDiff line change
@@ -185,24 +185,9 @@ public void extractJoinNeedSelectField(SqlNode leftNode,
185185
Set<Tuple2<String, String>> joinFieldSet,
186186
Map<String, String> fieldRef,
187187
JoinInfo tableInfo){
188-
Set<String> fromTableNameSet = Sets.newHashSet();
189-
TableUtils.getFromTableInfo(leftNode, fromTableNameSet);
190-
Set<String> extractCondition = Sets.newHashSet();
191-
extractWhereCondition(fromTableNameSet, (SqlBasicCall) parentWhere, extractCondition);
192-
Set<String> extractSelectField = extractSelectFields(parentSelectList, fromTableNameSet, tableRef);
193-
Set<String> fieldFromJoinCondition = extractSelectFieldFromJoinCondition(joinFieldSet, fromTableNameSet, tableRef);
194188

195-
extractSelectField.addAll(extractCondition);
196-
extractSelectField.addAll(fieldFromJoinCondition);
197-
198-
Set<String> rightFromTableNameSet = Sets.newHashSet();
199-
TableUtils.getFromTableInfo(rightNode, rightFromTableNameSet);
200-
Set<String> extractRightCondition = Sets.newHashSet();
201-
extractWhereCondition(rightFromTableNameSet, (SqlBasicCall) parentWhere, extractRightCondition);
202-
Set<String> rightExtractSelectField = extractSelectFields(parentSelectList, rightFromTableNameSet, tableRef);
203-
Set<String> rightFieldFromJoinCondition = extractSelectFieldFromJoinCondition(joinFieldSet, rightFromTableNameSet, tableRef);
204-
rightExtractSelectField.addAll(extractRightCondition);
205-
rightExtractSelectField.addAll(rightFieldFromJoinCondition);
189+
Set<String> extractSelectField = extractField(leftNode, parentWhere, parentSelectList, tableRef, joinFieldSet);
190+
Set<String> rightExtractSelectField = extractField(rightNode, parentWhere, parentSelectList, tableRef, joinFieldSet);
206191

207192
//重命名right 中和 left 重名的
208193
Map<String, String> leftTbSelectField = Maps.newHashMap();
@@ -231,6 +216,25 @@ public void extractJoinNeedSelectField(SqlNode leftNode,
231216
tableInfo.setRightSelectFieldInfo(rightTbSelectField);
232217
}
233218

219+
public Set<String> extractField(SqlNode sqlNode,
220+
SqlNode parentWhere,
221+
SqlNodeList parentSelectList,
222+
Map<String, String> tableRef,
223+
Set<Tuple2<String, String>> joinFieldSet){
224+
Set<String> fromTableNameSet = Sets.newHashSet();
225+
TableUtils.getFromTableInfo(sqlNode, fromTableNameSet);
226+
Set<String> extractCondition = Sets.newHashSet();
227+
228+
extractWhereCondition(fromTableNameSet, (SqlBasicCall) parentWhere, extractCondition);
229+
Set<String> extractSelectField = extractSelectFields(parentSelectList, fromTableNameSet, tableRef);
230+
Set<String> fieldFromJoinCondition = extractSelectFieldFromJoinCondition(joinFieldSet, fromTableNameSet, tableRef);
231+
232+
extractSelectField.addAll(extractCondition);
233+
extractSelectField.addAll(fieldFromJoinCondition);
234+
235+
return extractSelectField;
236+
}
237+
234238

235239
/**
236240
* 处理多层join

0 commit comments

Comments
 (0)