@@ -73,7 +73,7 @@ public Queue<Object> getExeQueue(String exeSql, Set<String> sideTableSet, String
73
73
Queue <Object > queueInfo = Queues .newLinkedBlockingQueue ();
74
74
SqlNode sqlNode = flinkPlanner .getParser ().parse (exeSql );
75
75
76
- parseSql (sqlNode , sideTableSet , queueInfo , null , null , null , scope );
76
+ parseSql (sqlNode , sideTableSet , queueInfo , null , null , null , scope , Sets . newHashSet () );
77
77
queueInfo .offer (sqlNode );
78
78
return queueInfo ;
79
79
}
@@ -94,31 +94,32 @@ public Object parseSql(SqlNode sqlNode,
94
94
SqlNode parentWhere ,
95
95
SqlNodeList parentSelectList ,
96
96
SqlNodeList parentGroupByList ,
97
- String scope ){
97
+ String scope ,
98
+ Set <String > joinTableNames ){
98
99
SqlKind sqlKind = sqlNode .getKind ();
99
100
switch (sqlKind ){
100
101
case WITH : {
101
102
SqlWith sqlWith = (SqlWith ) sqlNode ;
102
103
SqlNodeList sqlNodeList = sqlWith .withList ;
103
104
for (SqlNode withAsTable : sqlNodeList ) {
104
105
SqlWithItem sqlWithItem = (SqlWithItem ) withAsTable ;
105
- parseSql (sqlWithItem .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
106
+ parseSql (sqlWithItem .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
106
107
queueInfo .add (sqlWithItem );
107
108
}
108
- parseSql (sqlWith .body , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
109
+ parseSql (sqlWith .body , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
109
110
break ;
110
111
}
111
112
case INSERT :
112
113
SqlNode sqlSource = ((SqlInsert )sqlNode ).getSource ();
113
- return parseSql (sqlSource , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
114
+ return parseSql (sqlSource , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
114
115
case SELECT :
115
116
SqlNode sqlFrom = ((SqlSelect )sqlNode ).getFrom ();
116
117
SqlNode sqlWhere = ((SqlSelect )sqlNode ).getWhere ();
117
118
SqlNodeList selectList = ((SqlSelect )sqlNode ).getSelectList ();
118
119
SqlNodeList groupByList = ((SqlSelect ) sqlNode ).getGroup ();
119
120
120
121
if (sqlFrom .getKind () != IDENTIFIER ){
121
- Object result = parseSql (sqlFrom , sideTableSet , queueInfo , sqlWhere , selectList , groupByList , scope );
122
+ Object result = parseSql (sqlFrom , sideTableSet , queueInfo , sqlWhere , selectList , groupByList , scope , joinTableNames );
122
123
if (result instanceof JoinInfo ){
123
124
return TableUtils .dealSelectResultWithJoinInfo ((JoinInfo ) result , (SqlSelect ) sqlNode , queueInfo );
124
125
}else if (result instanceof AliasInfo ){
@@ -140,7 +141,7 @@ public Object parseSql(SqlNode sqlNode,
140
141
Map <String , String > tableRef = Maps .newHashMap ();
141
142
Map <String , String > fieldRef = Maps .newHashMap ();
142
143
return joinNodeDealer .dealJoinNode ((SqlJoin ) sqlNode , sideTableSet , queueInfo ,
143
- parentWhere , parentSelectList , parentGroupByList , joinFieldSet , tableRef , fieldRef , scope );
144
+ parentWhere , parentSelectList , parentGroupByList , joinFieldSet , tableRef , fieldRef , scope , joinTableNames );
144
145
case AS :
145
146
SqlNode info = ((SqlBasicCall )sqlNode ).getOperands ()[0 ];
146
147
SqlNode alias = ((SqlBasicCall ) sqlNode ).getOperands ()[1 ];
@@ -149,7 +150,7 @@ public Object parseSql(SqlNode sqlNode,
149
150
if (info .getKind () == IDENTIFIER ){
150
151
infoStr = info .toString ();
151
152
} else {
152
- infoStr = parseSql (info , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope ).toString ();
153
+ infoStr = parseSql (info , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames ).toString ();
153
154
}
154
155
155
156
AliasInfo aliasInfo = new AliasInfo ();
@@ -162,12 +163,12 @@ public Object parseSql(SqlNode sqlNode,
162
163
SqlNode unionLeft = ((SqlBasicCall )sqlNode ).getOperands ()[0 ];
163
164
SqlNode unionRight = ((SqlBasicCall )sqlNode ).getOperands ()[1 ];
164
165
165
- parseSql (unionLeft , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
166
- parseSql (unionRight , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
166
+ parseSql (unionLeft , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
167
+ parseSql (unionRight , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
167
168
break ;
168
169
case ORDER_BY :
169
170
SqlOrderBy sqlOrderBy = (SqlOrderBy ) sqlNode ;
170
- parseSql (sqlOrderBy .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
171
+ parseSql (sqlOrderBy .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
171
172
172
173
case LITERAL :
173
174
return LITERAL .toString ();
0 commit comments