mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-14 13:47:09 +00:00
(improvement)(headless) refator query code (#658)
This commit is contained in:
@@ -7,6 +7,7 @@ import com.tencent.supersonic.headless.api.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.api.request.MetricQueryReq;
|
||||
import com.tencent.supersonic.headless.api.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.request.SqlExecuteReq;
|
||||
import com.tencent.supersonic.headless.core.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.core.utils.ComponentFactory;
|
||||
import java.util.ArrayList;
|
||||
@@ -54,6 +55,12 @@ public class QueryParser {
|
||||
|| Strings.isNullOrEmpty(queryStatement.getSourceId())) {
|
||||
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
|
||||
}
|
||||
String querySql =
|
||||
Objects.nonNull(queryStatement.getEnableLimitWrapper()) && queryStatement.getEnableLimitWrapper()
|
||||
? String.format(SqlExecuteReq.LIMIT_WRAPPER,
|
||||
queryStatement.getSql())
|
||||
: queryStatement.getSql();
|
||||
queryStatement.setSql(querySql);
|
||||
return queryStatement;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.tencent.supersonic.headless.core.parser.calcite.sql.node;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.enums.EngineType;
|
||||
import com.tencent.supersonic.headless.api.request.MetricQueryReq;
|
||||
@@ -265,8 +264,15 @@ public class DataSourceNode extends SemanticNode {
|
||||
boolean isAllMatch = true;
|
||||
sourceMeasure.retainAll(measures);
|
||||
if (sourceMeasure.size() < measures.size()) {
|
||||
log.info("baseDataSource not match all measure");
|
||||
isAllMatch = false;
|
||||
log.info("baseDataSource measures not match all measure");
|
||||
// check dimension again
|
||||
Set<String> dimensionMeasures = new HashSet<>();
|
||||
dimensionMeasures.addAll(dimension);
|
||||
dimensionMeasures.retainAll(measures);
|
||||
if (sourceMeasure.size() + dimensionMeasures.size() < measures.size()) {
|
||||
log.info("baseDataSource not match all measure");
|
||||
isAllMatch = false;
|
||||
}
|
||||
}
|
||||
measures.removeAll(sourceMeasure);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ public class QueryStatement {
|
||||
private String viewSql = "";
|
||||
private String viewAlias = "";
|
||||
private String viewSimplifySql = "";
|
||||
private Boolean enableLimitWrapper = false;
|
||||
|
||||
|
||||
private SemanticModel semanticModel;
|
||||
|
||||
Reference in New Issue
Block a user