mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
[improvement][chat]Introduce AllFieldMapper to increase parsing robustness when normal pipeline fails.
This commit is contained in:
@@ -30,6 +30,9 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
|
||||
if (parser.accept(queryStatement)) {
|
||||
log.debug("QueryConverter accept [{}]", parser.getClass().getName());
|
||||
parser.parse(queryStatement);
|
||||
if (queryStatement.getStatus() != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
mergeOntologyQuery(queryStatement);
|
||||
|
||||
@@ -45,6 +45,14 @@ public class SqlQueryParser implements QueryParser {
|
||||
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
|
||||
Ontology ontology = queryStatement.getOntology();
|
||||
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
|
||||
// check if there are fields not matched with any metric or dimension
|
||||
if (queryFields.size() > ontologyQuery.getMetrics().size()
|
||||
+ ontologyQuery.getDimensions().size()) {
|
||||
queryStatement
|
||||
.setErrMsg("There are fields in the SQL not matched with any semantic column.");
|
||||
queryStatement.setStatus(1);
|
||||
return;
|
||||
}
|
||||
queryStatement.setOntologyQuery(ontologyQuery);
|
||||
|
||||
AggOption sqlQueryAggOption = getAggOption(sqlQuery.getSql(), ontologyQuery.getMetrics());
|
||||
|
||||
Reference in New Issue
Block a user