mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +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<>();
|
List<String[]> tables = new ArrayList<>();
|
||||||
Boolean isSingleTable = parseSqlReq.getTables().size() == 1;
|
Boolean isSingleTable = parseSqlReq.getTables().size() == 1;
|
||||||
for (MetricTable metricTable : parseSqlReq.getTables()) {
|
for (MetricTable metricTable : parseSqlReq.getTables()) {
|
||||||
String metricTableSql = parserSql(metricTable, isSingleTable, parseSqlReq, queryStatement);
|
QueryStatement metricTableSql = parserSql(metricTable, isSingleTable, parseSqlReq, queryStatement);
|
||||||
if (isSingleTable) {
|
if (isSingleTable && Objects.nonNull(metricTableSql.getViewSimplifySql())
|
||||||
queryStatement.setSql(metricTableSql);
|
&& !metricTableSql.getViewSimplifySql().isEmpty()) {
|
||||||
|
queryStatement.setSql(metricTableSql.getViewSimplifySql());
|
||||||
queryStatement.setParseSqlReq(parseSqlReq);
|
queryStatement.setParseSqlReq(parseSqlReq);
|
||||||
return queryStatement;
|
return queryStatement;
|
||||||
}
|
}
|
||||||
tables.add(new String[]{metricTable.getAlias(), metricTableSql});
|
tables.add(new String[]{metricTable.getAlias(), metricTableSql.getSql()});
|
||||||
}
|
}
|
||||||
if (!tables.isEmpty()) {
|
if (!tables.isEmpty()) {
|
||||||
String sql = "";
|
String sql = "";
|
||||||
@@ -113,7 +114,7 @@ public class QueryParser {
|
|||||||
return queryStatement;
|
return queryStatement;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String parserSql(MetricTable metricTable, Boolean isSingleMetricTable, ParseSqlReq parseSqlReq,
|
private QueryStatement parserSql(MetricTable metricTable, Boolean isSingleMetricTable, ParseSqlReq parseSqlReq,
|
||||||
QueryStatement queryStatement) throws Exception {
|
QueryStatement queryStatement) throws Exception {
|
||||||
MetricQueryReq metricReq = new MetricQueryReq();
|
MetricQueryReq metricReq = new MetricQueryReq();
|
||||||
metricReq.setMetrics(metricTable.getMetrics());
|
metricReq.setMetrics(metricTable.getMetrics());
|
||||||
@@ -138,7 +139,7 @@ public class QueryParser {
|
|||||||
tableSql.getErrMsg()));
|
tableSql.getErrMsg()));
|
||||||
}
|
}
|
||||||
queryStatement.setSourceId(tableSql.getSourceId());
|
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()));
|
getSqlByView(aggBuilder.getSql(), queryStatement.getViewSql(), queryStatement.getViewAlias()));
|
||||||
if (Objects.nonNull(simplifySql) && !simplifySql.isEmpty()) {
|
if (Objects.nonNull(simplifySql) && !simplifySql.isEmpty()) {
|
||||||
log.info("simplifySql [{}]", simplifySql);
|
log.info("simplifySql [{}]", simplifySql);
|
||||||
queryStatement.setSql(simplifySql);
|
queryStatement.setViewSimplifySql(simplifySql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return queryStatement;
|
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.ParseSqlReq;
|
||||||
import com.tencent.supersonic.headless.api.request.QueryStructReq;
|
import com.tencent.supersonic.headless.api.request.QueryStructReq;
|
||||||
import com.tencent.supersonic.headless.core.parser.calcite.s2sql.HeadlessModel;
|
import com.tencent.supersonic.headless.core.parser.calcite.s2sql.HeadlessModel;
|
||||||
|
import java.util.List;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.apache.commons.lang3.tuple.Triple;
|
import org.apache.commons.lang3.tuple.Triple;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class QueryStatement {
|
public class QueryStatement {
|
||||||
|
|
||||||
@@ -28,6 +27,7 @@ public class QueryStatement {
|
|||||||
private Triple<String, String, String> minMaxTime;
|
private Triple<String, String, String> minMaxTime;
|
||||||
private String viewSql = "";
|
private String viewSql = "";
|
||||||
private String viewAlias = "";
|
private String viewAlias = "";
|
||||||
|
private String viewSimplifySql = "";
|
||||||
|
|
||||||
|
|
||||||
private HeadlessModel headlessModel;
|
private HeadlessModel headlessModel;
|
||||||
|
|||||||
Reference in New Issue
Block a user