(improvement)(headless) add simplify optimizer enable conf (#620)

This commit is contained in:
jipeli
2024-01-11 21:37:35 +08:00
committed by GitHub
parent 4322ae42ac
commit 3436b36552
3 changed files with 10 additions and 9 deletions

View File

@@ -59,13 +59,14 @@ public class QueryParser {
List<String[]> tables = new ArrayList<>();
Boolean isSingleTable = parseSqlReq.getTables().size() == 1;
for (MetricTable metricTable : parseSqlReq.getTables()) {
String metricTableSql = parserSql(metricTable, isSingleTable, parseSqlReq, queryStatement);
if (isSingleTable) {
queryStatement.setSql(metricTableSql);
QueryStatement metricTableSql = parserSql(metricTable, isSingleTable, parseSqlReq, queryStatement);
if (isSingleTable && Objects.nonNull(metricTableSql.getViewSimplifySql())
&& !metricTableSql.getViewSimplifySql().isEmpty()) {
queryStatement.setSql(metricTableSql.getViewSimplifySql());
queryStatement.setParseSqlReq(parseSqlReq);
return queryStatement;
}
tables.add(new String[]{metricTable.getAlias(), metricTableSql});
tables.add(new String[]{metricTable.getAlias(), metricTableSql.getSql()});
}
if (!tables.isEmpty()) {
String sql = "";
@@ -113,7 +114,7 @@ public class QueryParser {
return queryStatement;
}
private String parserSql(MetricTable metricTable, Boolean isSingleMetricTable, ParseSqlReq parseSqlReq,
private QueryStatement parserSql(MetricTable metricTable, Boolean isSingleMetricTable, ParseSqlReq parseSqlReq,
QueryStatement queryStatement) throws Exception {
MetricQueryReq metricReq = new MetricQueryReq();
metricReq.setMetrics(metricTable.getMetrics());
@@ -138,7 +139,7 @@ public class QueryParser {
tableSql.getErrMsg()));
}
queryStatement.setSourceId(tableSql.getSourceId());
return tableSql.getSql();
return tableSql;
}
}

View File

@@ -40,7 +40,7 @@ public class CalciteSqlParser implements SqlParser {
getSqlByView(aggBuilder.getSql(), queryStatement.getViewSql(), queryStatement.getViewAlias()));
if (Objects.nonNull(simplifySql) && !simplifySql.isEmpty()) {
log.info("simplifySql [{}]", simplifySql);
queryStatement.setSql(simplifySql);
queryStatement.setViewSimplifySql(simplifySql);
}
}
return queryStatement;

View File

@@ -4,12 +4,11 @@ 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.core.parser.calcite.s2sql.HeadlessModel;
import java.util.List;
import lombok.Data;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Triple;
import java.util.List;
@Data
public class QueryStatement {
@@ -28,6 +27,7 @@ public class QueryStatement {
private Triple<String, String, String> minMaxTime;
private String viewSql = "";
private String viewAlias = "";
private String viewSimplifySql = "";
private HeadlessModel headlessModel;