@@ -256,13 +256,14 @@ public static void replaceFromNodeForJoin(JoinInfo joinInfo, SqlSelect sqlNode)
256
256
Map <String , String > leftFieldMapping = fieldMapping .row (joinInfo .getLeftTableAlias ());
257
257
Map <String , String > rightFieldMapping = fieldMapping .row (joinInfo .getRightTableAlias ());
258
258
259
- for (SqlNode oneSelectNode : sqlNode .getSelectList ()){
259
+ /* for(SqlNode oneSelectNode : sqlNode.getSelectList()){
260
260
replaceSelectFieldTable(oneSelectNode, joinInfo.getLeftTableAlias(), newAliasName, null ,leftFieldMapping);
261
261
replaceSelectFieldTable(oneSelectNode, joinInfo.getRightTableAlias(), newAliasName, null , rightFieldMapping);
262
- }
262
+ }*/
263
263
264
264
//where中的条件属性为新的表名称和字段
265
- replaceWhereCondition ();
265
+ FieldReplaceUtil .replaceFieldName (sqlNode , joinInfo .getLeftTableAlias (), newAliasName , leftFieldMapping );
266
+ FieldReplaceUtil .replaceFieldName (sqlNode , joinInfo .getRightTableAlias (), newAliasName , rightFieldMapping );
266
267
sqlNode .setFrom (sqlBasicCall );
267
268
}
268
269
@@ -296,22 +297,18 @@ public static void getFromTableInfo(SqlNode fromTable, Set<String> tableNameSet)
296
297
297
298
/**
298
299
* 替换select 中的字段信息
299
- * 如果mappingTable 非空则从该参数获取字段的映射
300
- * 如果mappingTable 为空则根据是否存在新生成字段
301
300
* @param selectNode
302
301
* @param oldTbName
303
302
* @param newTbName
304
303
* @param fieldReplaceRef
305
- * @param mappingTable
306
304
*/
307
305
public static void replaceSelectFieldTable (SqlNode selectNode ,
308
306
String oldTbName ,
309
307
String newTbName ,
310
- HashBiMap <String , String > fieldReplaceRef ,
311
- Map <String , String > mappingTable ) {
308
+ HashBiMap <String , String > fieldReplaceRef ) {
312
309
if (selectNode .getKind () == AS ) {
313
310
SqlNode leftNode = ((SqlBasicCall ) selectNode ).getOperands ()[0 ];
314
- replaceSelectFieldTable (leftNode , oldTbName , newTbName , fieldReplaceRef , mappingTable );
311
+ replaceSelectFieldTable (leftNode , oldTbName , newTbName , fieldReplaceRef );
315
312
316
313
}else if (selectNode .getKind () == IDENTIFIER ){
317
314
SqlIdentifier sqlIdentifier = (SqlIdentifier ) selectNode ;
@@ -322,7 +319,7 @@ public static void replaceSelectFieldTable(SqlNode selectNode,
322
319
323
320
String fieldTableName = sqlIdentifier .names .get (0 );
324
321
if (oldTbName .equalsIgnoreCase (fieldTableName )){
325
- replaceOneSelectField (sqlIdentifier , newTbName , oldTbName , fieldReplaceRef , mappingTable );
322
+ replaceOneSelectField (sqlIdentifier , newTbName , oldTbName , fieldReplaceRef );
326
323
}
327
324
328
325
}else if (selectNode .getKind () == LITERAL || selectNode .getKind () == LITERAL_CHAIN ){//字面含义
@@ -369,7 +366,7 @@ public static void replaceSelectFieldTable(SqlNode selectNode,
369
366
continue ;
370
367
}
371
368
372
- replaceSelectFieldTable (sqlNode , oldTbName , newTbName , fieldReplaceRef , mappingTable );
369
+ replaceSelectFieldTable (sqlNode , oldTbName , newTbName , fieldReplaceRef );
373
370
}
374
371
375
372
}else if (selectNode .getKind () == CASE ){
@@ -380,16 +377,16 @@ public static void replaceSelectFieldTable(SqlNode selectNode,
380
377
381
378
for (int i =0 ; i <whenOperands .size (); i ++){
382
379
SqlNode oneOperand = whenOperands .get (i );
383
- replaceSelectFieldTable (oneOperand , oldTbName , newTbName , fieldReplaceRef , mappingTable );
380
+ replaceSelectFieldTable (oneOperand , oldTbName , newTbName , fieldReplaceRef );
384
381
}
385
382
386
383
for (int i =0 ; i <thenOperands .size (); i ++){
387
384
SqlNode oneOperand = thenOperands .get (i );
388
- replaceSelectFieldTable (oneOperand , oldTbName , newTbName , fieldReplaceRef , mappingTable );
385
+ replaceSelectFieldTable (oneOperand , oldTbName , newTbName , fieldReplaceRef );
389
386
390
387
}
391
388
392
- replaceSelectFieldTable (elseNode , oldTbName , newTbName , fieldReplaceRef , mappingTable );
389
+ replaceSelectFieldTable (elseNode , oldTbName , newTbName , fieldReplaceRef );
393
390
}else if (selectNode .getKind () == OTHER ){
394
391
//不处理
395
392
return ;
@@ -401,20 +398,11 @@ public static void replaceSelectFieldTable(SqlNode selectNode,
401
398
private static void replaceOneSelectField (SqlIdentifier sqlIdentifier ,
402
399
String newTbName ,
403
400
String oldTbName ,
404
- HashBiMap <String , String > fieldReplaceRef ,
405
- Map <String , String > mappingTable ){
401
+ HashBiMap <String , String > fieldReplaceRef ){
406
402
SqlIdentifier newField = sqlIdentifier .setName (0 , newTbName );
407
403
String fieldName = sqlIdentifier .names .get (1 );
408
404
String fieldKey = oldTbName + "_" + fieldName ;
409
405
410
- if (mappingTable != null ){
411
- String mappingFieldName = mappingTable .get (fieldName );
412
- Preconditions .checkNotNull (mappingFieldName , "can't get any field from mappingTable with oldFieldName " + fieldName );
413
- newField = newField .setName (1 , mappingFieldName );
414
- sqlIdentifier .assignNamesFrom (newField );
415
- return ;
416
- }
417
-
418
406
if (!fieldReplaceRef .containsKey (fieldKey )){
419
407
if (fieldReplaceRef .inverse ().get (fieldName ) != null ){
420
408
//换一个名字
0 commit comments