use of com.dtstack.taier.develop.sql.hive.node.OtherNodeParser in project Taier by DTStack.
the class AstNodeParser method getParseResult.
/**
* 进行语法树转换 和 血缘解析的具体类
*
* @param originSql
* @param currentDb
* @param tableColumnsMap
* @param parseResult
* @param root
* @return
*/
private ParseResult getParseResult(String originSql, String currentDb, Map<String, List<Column>> tableColumnsMap, ParseResult parseResult, ASTNode root) {
NodeParser nodeParser = ASTNodeLineageParser.ParserProxy.getParser((ASTNode) root.getChild(0), originSql);
if (Objects.isNull(nodeParser)) {
return parseResult;
}
if (nodeParser instanceof OtherNodeParser) {
((OtherNodeParser) nodeParser).getSqlType((ASTNode) root.getChild(0), parseResult);
return parseResult;
}
com.dtstack.taier.develop.sql.node.Node node = nodeParser.parseSql((ASTNode) root.getChild(0), currentDb, tableColumnsMap, new HashMap<>());
if (Objects.isNull(node)) {
return parseResult;
}
LineageParser lineageParser = LineageParser.HiveParserProxy.getParser(node, currentDb, tableColumnsMap);
if (lineageParser != null) {
List<ColumnLineage> columnLineages = getColumnLineages(node, lineageParser);
parseResult.setColumnLineages(columnLineages);
}
getMainTable(node, parseResult, root);
try {
Set<Table> tables = new HashSet<>();
nodeParser.parseSqlTable(node, tables);
parseResult.setTables(new ArrayList<>(tables));
} catch (Exception e) {
e.printStackTrace();
}
return parseResult;
}
Aggregations