@@ -151,6 +151,7 @@ public static void extractSelectFieldToFieldInfo(SqlNode fieldNode, String fromN
151151 || fieldNode .getKind () == TIMESTAMP_ADD
152152 || fieldNode .getKind () == TIMESTAMP_DIFF
153153 || fieldNode .getKind () == LIKE
154+ || fieldNode .getKind () == COALESCE
154155 ) {
155156 SqlBasicCall sqlBasicCall = (SqlBasicCall ) fieldNode ;
156157 for (int i = 0 ; i < sqlBasicCall .getOperands ().length ; i ++) {
@@ -363,6 +364,7 @@ public static void replaceSelectFieldTable(SqlNode selectNode,
363364 || selectNode .getKind () == TIMESTAMP_ADD
364365 || selectNode .getKind () == TIMESTAMP_DIFF
365366 || selectNode .getKind () == LIKE
367+ || selectNode .getKind () == COALESCE
366368
367369 ){
368370 SqlBasicCall sqlBasicCall = (SqlBasicCall ) selectNode ;
@@ -548,6 +550,7 @@ private static void replaceConditionNode(SqlNode selectNode, String oldTbName, S
548550 || selectNode .getKind () == TIMESTAMP_ADD
549551 || selectNode .getKind () == TIMESTAMP_DIFF
550552 || selectNode .getKind () == LIKE
553+ || selectNode .getKind () == COALESCE
551554
552555 ){
553556 SqlBasicCall sqlBasicCall = (SqlBasicCall ) selectNode ;
@@ -573,6 +576,7 @@ private static void replaceConditionNode(SqlNode selectNode, String oldTbName, S
573576
574577 sqlCase .getWhenOperands ().getList ().forEach (sqlNode -> replaceConditionNode (sqlNode , oldTbName , newTbName , fieldReplaceRef ));
575578 sqlCase .getThenOperands ().getList ().forEach (sqlNode -> replaceConditionNode (sqlNode , oldTbName , newTbName , fieldReplaceRef ));
579+ replaceConditionNode (sqlCase .getElseOperand (), oldTbName , newTbName , fieldReplaceRef );
576580 } else {
577581 throw new RuntimeException (String .format ("not support node kind of %s to replace name now." , selectNode .getKind ()));
578582 }
@@ -620,6 +624,7 @@ public static void getConditionRefTable(SqlNode selectNode, Set<String> fieldInf
620624 || selectNode .getKind () == TIMESTAMP_ADD
621625 || selectNode .getKind () == TIMESTAMP_DIFF
622626 || selectNode .getKind () == LIKE
627+ || selectNode .getKind () == COALESCE
623628
624629 ) {
625630 SqlBasicCall sqlBasicCall = (SqlBasicCall ) selectNode ;
@@ -645,6 +650,7 @@ public static void getConditionRefTable(SqlNode selectNode, Set<String> fieldInf
645650
646651 sqlCase .getWhenOperands ().getList ().forEach (sqlNode -> getConditionRefTable (sqlNode , fieldInfos ));
647652 sqlCase .getThenOperands ().getList ().forEach (sqlNode -> getConditionRefTable (sqlNode , fieldInfos ));
653+ getConditionRefTable (sqlCase .getElseOperand (), fieldInfos );
648654 } else {
649655 throw new RuntimeException (String .format ("not support node kind of %s to replace name now." , selectNode .getKind ()));
650656 }
0 commit comments