(improvement)(headless) performParsed skip translation (#1222)

This commit is contained in:
jipeli
2024-06-25 20:40:41 +08:00
committed by GitHub
parent 5ce81b3724
commit db9a3fa056
14 changed files with 66 additions and 14 deletions

View File

@@ -11,6 +11,7 @@ import java.util.List;
@Data
public class QueryStatement {
private Long dataSetId;
private List<Long> modelIds;
private String sql = "";
@@ -34,12 +35,17 @@ public class QueryStatement {
private SemanticSchemaResp semanticSchemaResp;
private Integer limit = 1000;
private Boolean isTranslated = false;
public boolean isOk() {
this.ok = "".equals(errMsg) && !"".equals(sql);
return ok;
}
public boolean isTranslated() {
return isTranslated != null && isTranslated && isOk();
}
public QueryStatement error(String msg) {
this.setErrMsg(msg);
return this;

View File

@@ -61,6 +61,9 @@ public class Configuration {
static {
configProperties.put(CalciteConnectionProperty.CASE_SENSITIVE.camelName(), Boolean.TRUE.toString());
configProperties.put(CalciteConnectionProperty.UNQUOTED_CASING.camelName(), Casing.UNCHANGED.toString());
configProperties.put(CalciteConnectionProperty.QUOTED_CASING.camelName(), Casing.TO_LOWER.toString());
}
public static SqlParser.Config getParserConfig(EngineType engineType) {
@@ -77,10 +80,14 @@ public class Configuration {
.setIdentifierMaxLength(Integer.MAX_VALUE)
.setQuoting(Quoting.BACK_TICK)
.setQuoting(Quoting.SINGLE_QUOTE)
.setQuotedCasing(Casing.TO_UPPER)
.setUnquotedCasing(Casing.TO_UPPER)
.setConformance(sqlDialect.getConformance())
.setLex(Lex.BIG_QUERY);
parserConfig = parserConfig.setQuotedCasing(Casing.TO_LOWER);
parserConfig = parserConfig.setUnquotedCasing(Casing.TO_LOWER);
if (!EngineType.CLICKHOUSE.equals(engineType)) {
parserConfig = parserConfig.setQuotedCasing(Casing.TO_LOWER);
parserConfig = parserConfig.setUnquotedCasing(Casing.TO_LOWER);
}
return parserConfig.build();
}

View File

@@ -327,12 +327,12 @@ public class SqlGenerateUtils {
public String getExpr(Measure measure, AggOption aggOption) {
if (AggOperatorEnum.COUNT_DISTINCT.getOperator().equalsIgnoreCase(measure.getAgg())) {
return aggOption.equals(AggOption.NATIVE) ? measure.getBizName()
return AggOption.NATIVE.equals(aggOption) ? measure.getBizName()
: AggOperatorEnum.COUNT.getOperator() + " ( " + AggOperatorEnum.DISTINCT + " "
+ measure.getBizName()
+ " ) ";
}
return aggOption.equals(AggOption.NATIVE) ? measure.getBizName()
return AggOption.NATIVE.equals(aggOption) ? measure.getBizName()
: measure.getAgg() + " ( " + measure.getBizName() + " ) ";
}