@@ -71,7 +71,7 @@ public Queue<Object> getExeQueue(String exeSql, Set<String> sideTableSet, String
7171 FlinkPlannerImpl flinkPlanner = FlinkPlanner .getFlinkPlanner ();
7272 SqlNode sqlNode = flinkPlanner .parse (exeSql );
7373
74- parseSql (sqlNode , sideTableSet , queueInfo , null , null , null , scope );
74+ parseSql (sqlNode , sideTableSet , queueInfo , null , null , null , scope , Sets . newHashSet () );
7575 queueInfo .offer (sqlNode );
7676 return queueInfo ;
7777 }
@@ -92,31 +92,32 @@ public Object parseSql(SqlNode sqlNode,
9292 SqlNode parentWhere ,
9393 SqlNodeList parentSelectList ,
9494 SqlNodeList parentGroupByList ,
95- String scope ){
95+ String scope ,
96+ Set <String > joinTableNames ){
9697 SqlKind sqlKind = sqlNode .getKind ();
9798 switch (sqlKind ){
9899 case WITH : {
99100 SqlWith sqlWith = (SqlWith ) sqlNode ;
100101 SqlNodeList sqlNodeList = sqlWith .withList ;
101102 for (SqlNode withAsTable : sqlNodeList ) {
102103 SqlWithItem sqlWithItem = (SqlWithItem ) withAsTable ;
103- parseSql (sqlWithItem .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
104+ parseSql (sqlWithItem .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
104105 queueInfo .add (sqlWithItem );
105106 }
106- parseSql (sqlWith .body , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
107+ parseSql (sqlWith .body , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
107108 break ;
108109 }
109110 case INSERT :
110111 SqlNode sqlSource = ((SqlInsert )sqlNode ).getSource ();
111- return parseSql (sqlSource , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
112+ return parseSql (sqlSource , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
112113 case SELECT :
113114 SqlNode sqlFrom = ((SqlSelect )sqlNode ).getFrom ();
114115 SqlNode sqlWhere = ((SqlSelect )sqlNode ).getWhere ();
115116 SqlNodeList selectList = ((SqlSelect )sqlNode ).getSelectList ();
116117 SqlNodeList groupByList = ((SqlSelect ) sqlNode ).getGroup ();
117118
118119 if (sqlFrom .getKind () != IDENTIFIER ){
119- Object result = parseSql (sqlFrom , sideTableSet , queueInfo , sqlWhere , selectList , groupByList , scope );
120+ Object result = parseSql (sqlFrom , sideTableSet , queueInfo , sqlWhere , selectList , groupByList , scope , joinTableNames );
120121 if (result instanceof JoinInfo ){
121122 return TableUtils .dealSelectResultWithJoinInfo ((JoinInfo ) result , (SqlSelect ) sqlNode , queueInfo );
122123 }else if (result instanceof AliasInfo ){
@@ -138,7 +139,7 @@ public Object parseSql(SqlNode sqlNode,
138139 Map <String , String > tableRef = Maps .newHashMap ();
139140 Map <String , String > fieldRef = Maps .newHashMap ();
140141 return joinNodeDealer .dealJoinNode ((SqlJoin ) sqlNode , sideTableSet , queueInfo ,
141- parentWhere , parentSelectList , parentGroupByList , joinFieldSet , tableRef , fieldRef , scope );
142+ parentWhere , parentSelectList , parentGroupByList , joinFieldSet , tableRef , fieldRef , scope , joinTableNames );
142143 case AS :
143144 SqlNode info = ((SqlBasicCall )sqlNode ).getOperands ()[0 ];
144145 SqlNode alias = ((SqlBasicCall ) sqlNode ).getOperands ()[1 ];
@@ -147,7 +148,7 @@ public Object parseSql(SqlNode sqlNode,
147148 if (info .getKind () == IDENTIFIER ){
148149 infoStr = info .toString ();
149150 } else {
150- infoStr = parseSql (info , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope ).toString ();
151+ infoStr = parseSql (info , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames ).toString ();
151152 }
152153
153154 AliasInfo aliasInfo = new AliasInfo ();
@@ -160,12 +161,12 @@ public Object parseSql(SqlNode sqlNode,
160161 SqlNode unionLeft = ((SqlBasicCall )sqlNode ).getOperands ()[0 ];
161162 SqlNode unionRight = ((SqlBasicCall )sqlNode ).getOperands ()[1 ];
162163
163- parseSql (unionLeft , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
164- parseSql (unionRight , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
164+ parseSql (unionLeft , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
165+ parseSql (unionRight , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
165166 break ;
166167 case ORDER_BY :
167168 SqlOrderBy sqlOrderBy = (SqlOrderBy ) sqlNode ;
168- parseSql (sqlOrderBy .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope );
169+ parseSql (sqlOrderBy .query , sideTableSet , queueInfo , parentWhere , parentSelectList , parentGroupByList , scope , joinTableNames );
169170
170171 case LITERAL :
171172 return LITERAL .toString ();
0 commit comments