mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
(improvement)(headless) add simplify optimizer enable conf (#620)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user