(improvement)(headless)Remove unnecessary sourceId from TranslateResp.

This commit is contained in:
jerryjzhang
2024-07-09 10:35:08 +08:00
parent c9c049a20f
commit 7a376bd9a3
9 changed files with 21 additions and 49 deletions

View File

@@ -16,8 +16,7 @@ import java.io.Serializable;
public class TranslateResp implements Serializable {
private String sql;
private String sourceId;
private boolean isOk;
private String errMsg;
}

View File

@@ -34,10 +34,6 @@ public class JdbcExecutor implements QueryExecutor {
}
SqlUtils sqlUtils = ContextUtils.getBean(SqlUtils.class);
if (StringUtils.isEmpty(queryStatement.getSourceId())) {
log.warn("data base id is empty");
return null;
}
log.info("executing SQL: {}", StringUtils.normalizeSpace(queryStatement.getSql()));
Database database = queryStatement.getSemanticModel().getDatabase();
SemanticQueryResp queryResultWithColumns = new SemanticQueryResp();

View File

@@ -4,6 +4,7 @@ import com.tencent.supersonic.headless.api.pojo.QueryParam;
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
import com.tencent.supersonic.headless.core.translator.calcite.s2sql.SemanticModel;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Triple;
@@ -14,10 +15,8 @@ public class QueryStatement {
private Long dataSetId;
private List<Long> modelIds;
private String sql = "";
private String sourceId = "";
private String errMsg = "";
private Boolean ok;
private String sql;
private String errMsg;
private QueryParam queryParam;
private MetricQueryParam metricQueryParam;
private DataSetQueryParam dataSetQueryParam;
@@ -26,20 +25,17 @@ public class QueryStatement {
private List<ImmutablePair<String, String>> timeRanges;
private Boolean enableOptimize = true;
private Triple<String, String, String> minMaxTime;
private String dataSetSql = "";
private String dataSetAlias = "";
private String dataSetSimplifySql = "";
private String dataSetSql;
private String dataSetAlias;
private String dataSetSimplifySql;
private Boolean enableLimitWrapper = false;
private SemanticModel semanticModel;
private SemanticSchemaResp semanticSchemaResp;
private Integer limit = 1000;
private Boolean isTranslated = false;
public boolean isOk() {
this.ok = "".equals(errMsg) && !"".equals(sql);
return ok;
return StringUtils.isBlank(errMsg) && StringUtils.isNotBlank(sql);
}
public boolean isTranslated() {

View File

@@ -28,9 +28,8 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
try {
parse(queryStatement);
optimize(queryStatement);
queryStatement.setOk(true);
} catch (Exception e) {
queryStatement.setOk(false);
queryStatement.setErrMsg(e.getMessage());
}
}
@@ -63,8 +62,7 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
queryStatement.getMetricQueryParam().setNativeQuery(queryParam.getQueryType().isNativeAggQuery());
doParse(queryStatement);
}
if (StringUtils.isEmpty(queryStatement.getSql())
|| StringUtils.isEmpty(queryStatement.getSourceId())) {
if (StringUtils.isEmpty(queryStatement.getSql())) {
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
}
if (StringUtils.isNotBlank(queryStatement.getSql())
@@ -156,7 +154,6 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
throw new Exception(String.format("parser table [%s] error [%s]", metricTable.getAlias(),
tableSql.getErrMsg()));
}
queryStatement.setSourceId(tableSql.getSourceId());
return tableSql;
}

View File

@@ -35,7 +35,6 @@ public class CalciteQueryParser implements QueryParser {
aggBuilder.explain(queryStatement, isAgg);
EngineType engineType = EngineType.fromString(semanticSchema.getSemanticModel().getDatabase().getType());
queryStatement.setSql(aggBuilder.getSql(engineType));
queryStatement.setSourceId(aggBuilder.getSourceId());
if (Objects.nonNull(queryStatement.getEnableOptimize()) && queryStatement.getEnableOptimize()
&& Objects.nonNull(queryStatement.getDataSetAlias()) && !queryStatement.getDataSetAlias().isEmpty()) {
// simplify model sql with query sql

View File

@@ -266,10 +266,7 @@ public class ChatQueryServiceImpl implements ChatQueryService {
TranslateSqlReq<Object> translateSqlReq = TranslateSqlReq.builder().queryReq(semanticQueryReq)
.queryTypeEnum(QueryMethod.SQL).build();
TranslateResp explain = semanticLayerService.translate(translateSqlReq, user);
if (StringUtils.isNotBlank(explain.getSql())) {
parseInfo.getSqlInfo().setQuerySQL(explain.getSql());
parseInfo.getSqlInfo().setSourceId(explain.getSourceId());
}
parseInfo.getSqlInfo().setQuerySQL(explain.getSql());
} else {
log.info("rule begin replace metrics and revise filters!");
//remove unvalid filters

View File

@@ -175,7 +175,6 @@ public class S2SemanticLayerService implements SemanticLayerService {
if (Objects.nonNull(queryStatement) && Objects.nonNull(semanticQueryReq.getSqlInfo()) && StringUtils.isNotBlank(
semanticQueryReq.getSqlInfo().getQuerySQL())) {
queryStatement.setSql(semanticQueryReq.getSqlInfo().getQuerySQL());
queryStatement.setSourceId(semanticQueryReq.getSqlInfo().getSourceId());
queryStatement.setDataSetId(semanticQueryReq.getDataSetId());
queryStatement.setIsTranslated(true);
}
@@ -233,14 +232,11 @@ public class S2SemanticLayerService implements SemanticLayerService {
T queryReq = translateSqlReq.getQueryReq();
QueryStatement queryStatement = buildQueryStatement((SemanticQueryReq) queryReq, user);
semanticTranslator.translate(queryStatement);
String sql = "";
String sorceId = "";
if (Objects.nonNull(queryStatement)) {
sql = queryStatement.getSql();
sorceId = queryStatement.getSourceId();
}
return TranslateResp.builder().sql(sql).sourceId(sorceId).build();
return TranslateResp.builder()
.sql(queryStatement.getSql())
.isOk(queryStatement.isOk())
.errMsg(queryStatement.getErrMsg())
.build();
}
public List<ItemResp> getDomainDataSetTree() {

View File

@@ -3,7 +3,6 @@ package com.tencent.supersonic.headless.server.utils;
import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.headless.api.pojo.SqlInfo;
import com.tencent.supersonic.headless.api.pojo.enums.ChatWorkflowState;
import com.tencent.supersonic.headless.api.pojo.enums.QueryMethod;
import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq;
@@ -127,19 +126,13 @@ public class ChatWorkflowEngine {
TranslateSqlReq<Object> translateSqlReq = TranslateSqlReq.builder().queryReq(semanticQueryReq)
.queryTypeEnum(QueryMethod.SQL).build();
TranslateResp explain = queryService.translate(translateSqlReq, chatQueryContext.getUser());
String querySql = explain.getSql();
if (StringUtils.isBlank(querySql)) {
return;
}
SqlInfo sqlInfo = parseInfo.getSqlInfo();
sqlInfo.setQuerySQL(querySql);
sqlInfo.setSourceId(explain.getSourceId());
parseInfo.getSqlInfo().setQuerySQL(explain.getSql());
keyPipelineLog.info("SqlInfoProcessor results:\n"
+ "Parsed S2SQL: {}\nCorrected S2SQL: {}\nQuery SQL: {}",
StringUtils.normalizeSpace(sqlInfo.getS2SQL()),
StringUtils.normalizeSpace(sqlInfo.getCorrectS2SQL()),
StringUtils.normalizeSpace(querySql));
StringUtils.normalizeSpace(parseInfo.getSqlInfo().getS2SQL()),
StringUtils.normalizeSpace(parseInfo.getSqlInfo().getCorrectS2SQL()),
StringUtils.normalizeSpace(parseInfo.getSqlInfo().getQuerySQL()));
} catch (Exception e) {
log.warn("get sql info failed:{}", parseInfo, e);
}

View File

@@ -157,7 +157,6 @@ public class QueryUtils {
}
String unionSql = unionSqlBuilder.substring(0, unionSqlBuilder.length() - Constants.UNIONALL.length());
sqlParser.setSql(unionSql);
sqlParser.setSourceId(sqlParsers.get(0).getSourceId());
log.info("union sql parser:{}", sqlParser);
return sqlParser;
}