@@ -294,7 +294,7 @@ private JoinInfo dealNestJoin(SqlJoin joinNode,
294294 SqlBasicCall buildAs = TableUtils .buildAsNodeByJoinInfo (joinInfo , null , null );
295295
296296 if (rightIsSide ){
297- addSideInfoToExeQueue (queueInfo , joinInfo , joinNode , parentSelectList , parentGroupByList , parentWhere , tableRef );
297+ addSideInfoToExeQueue (queueInfo , joinInfo , joinNode , parentSelectList , parentGroupByList , parentWhere , tableRef , fieldRef );
298298 }
299299
300300 SqlNode newLeftNode = joinNode .getLeft ();
@@ -307,7 +307,7 @@ private JoinInfo dealNestJoin(SqlJoin joinNode,
307307
308308 //替换leftNode 为新的查询
309309 joinNode .setLeft (buildAs );
310- replaceSelectAndWhereField (buildAs , leftJoinNode , tableRef , parentSelectList , parentGroupByList , parentWhere );
310+ replaceSelectAndWhereField (buildAs , leftJoinNode , tableRef , fieldRef , parentSelectList , parentGroupByList , parentWhere );
311311 }
312312
313313 return joinInfo ;
@@ -330,7 +330,8 @@ public void addSideInfoToExeQueue(Queue<Object> queueInfo,
330330 SqlNodeList parentSelectList ,
331331 SqlNodeList parentGroupByList ,
332332 SqlNode parentWhere ,
333- Map <String , String > tableRef ){
333+ Map <String , String > tableRef ,
334+ Map <String , String > fieldRef ){
334335 //只处理维表
335336 if (!joinInfo .isRightIsSideTable ()){
336337 return ;
@@ -342,7 +343,7 @@ public void addSideInfoToExeQueue(Queue<Object> queueInfo,
342343 //替换左表为新的表名称
343344 joinNode .setLeft (buildAs );
344345
345- replaceSelectAndWhereField (buildAs , leftJoinNode , tableRef , parentSelectList , parentGroupByList , parentWhere );
346+ replaceSelectAndWhereField (buildAs , leftJoinNode , tableRef , fieldRef , parentSelectList , parentGroupByList , parentWhere );
346347 }
347348
348349 /**
@@ -357,6 +358,7 @@ public void addSideInfoToExeQueue(Queue<Object> queueInfo,
357358 public void replaceSelectAndWhereField (SqlBasicCall buildAs ,
358359 SqlNode leftJoinNode ,
359360 Map <String , String > tableRef ,
361+ Map <String , String > fieldRef ,
360362 SqlNodeList parentSelectList ,
361363 SqlNodeList parentGroupByList ,
362364 SqlNode parentWhere ){
@@ -370,23 +372,22 @@ public void replaceSelectAndWhereField(SqlBasicCall buildAs,
370372 }
371373
372374 //替换select field 中的对应字段
373- HashBiMap <String , String > fieldReplaceRef = HashBiMap .create ();
374375 for (SqlNode sqlNode : parentSelectList .getList ()){
375376 for (String tbTmp : fromTableNameSet ) {
376- TableUtils .replaceSelectFieldTable (sqlNode , tbTmp , newLeftTableName , fieldReplaceRef );
377+ TableUtils .replaceSelectFieldTable (sqlNode , tbTmp , newLeftTableName , fieldRef );
377378 }
378379 }
379380
380381 //TODO 应该根据上面的查询字段的关联关系来替换
381382 //替换where 中的条件相关
382383 for (String tbTmp : fromTableNameSet ){
383- TableUtils .replaceWhereCondition (parentWhere , tbTmp , newLeftTableName , fieldReplaceRef );
384+ TableUtils .replaceWhereCondition (parentWhere , tbTmp , newLeftTableName , fieldRef );
384385 }
385386
386387 if (parentGroupByList != null ){
387388 for (SqlNode sqlNode : parentGroupByList .getList ()){
388389 for (String tbTmp : fromTableNameSet ) {
389- TableUtils .replaceSelectFieldTable (sqlNode , tbTmp , newLeftTableName , fieldReplaceRef );
390+ TableUtils .replaceSelectFieldTable (sqlNode , tbTmp , newLeftTableName , fieldRef );
390391 }
391392 }
392393 }
@@ -444,16 +445,15 @@ private void extractTemporaryQuery(SqlNode node, String tableAlias,
444445 queueInfo .offer (sqlBasicCall );
445446
446447 //替换select中的表结构
447- HashBiMap <String , String > fieldReplaceRef = HashBiMap .create ();
448448 for (SqlNode tmpSelect : parentSelectList .getList ()){
449449 for (String tbTmp : fromTableNameSet ) {
450- TableUtils .replaceSelectFieldTable (tmpSelect , tbTmp , tableAlias , fieldReplaceRef );
450+ TableUtils .replaceSelectFieldTable (tmpSelect , tbTmp , tableAlias , fieldRef );
451451 }
452452 }
453453
454454 //替换where 中的条件相关
455455 for (String tbTmp : fromTableNameSet ){
456- TableUtils .replaceWhereCondition (parentWhere , tbTmp , tableAlias , fieldReplaceRef );
456+ TableUtils .replaceWhereCondition (parentWhere , tbTmp , tableAlias , fieldRef );
457457 }
458458
459459 for (String tbTmp : fromTableNameSet ){
0 commit comments