public static SqlNode replaceJoinConditionTabName(SqlNode conditionNode, HashBasedTable<String, String, String> mappingTable, String tabAlias) {
        if (conditionNode.getKind() == SqlKind.AND && ((SqlBasicCall) conditionNode).getOperandList().size() == 2) {
            SqlNode[] operands = ((SqlBasicCall) conditionNode).getOperands();
            Arrays.stream(operands).forEach(op -> replaceJoinConditionTabName(op, mappingTable, tabAlias));
        } else {
            SqlNode[] operands = ((SqlBasicCall) conditionNode).getOperands();
            for (int i = 0; i < operands.length; i++) {
                SqlNode sqlNode = operands[i];
                SqlNode replaceNode = replaceNodeInfo(sqlNode, mappingTable, tabAlias);
                operands[i] = replaceNode;
            }
        }
        return conditionNode;
    }
parse multi join table name, child query RealTabName is null
@param leftJoin
@param aliasAndRealTabName
core/src/main/java/com/dtstack/flink/sql/util/ParseUtils.java