(improvement)(headless) refator query code (#658)

This commit is contained in:
jipeli
2024-01-19 17:11:18 +08:00
committed by GitHub
parent 3ba9073a1b
commit 6b5d84a13f
11 changed files with 171 additions and 169 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -28,6 +28,7 @@ public class QueryStatement {
private String viewSql = "";
private String viewAlias = "";
private String viewSimplifySql = "";
private Boolean enableLimitWrapper = false;
private SemanticModel semanticModel;