(fix)(headless) add necessary annotations and opt QueryReqConverter limit logic (#923)

This commit is contained in:
daikon
2024-04-19 17:55:53 +08:00
committed by GitHub
parent 3eb721083a
commit ad3e9bba70
8 changed files with 18 additions and 8 deletions

View File

@@ -1,10 +1,14 @@
package com.tencent.supersonic.headless.api.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Field {
private String fieldName;

View File

@@ -2,15 +2,18 @@ package com.tencent.supersonic.headless.api.pojo;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ModelDetail {
private String queryType;

View File

@@ -10,6 +10,7 @@ import java.util.Objects;
@ToString
public class QuerySqlReq extends SemanticQueryReq {
private String sql;
private Integer limit = 1000;
@Override
public String toCustomizedString() {

View File

@@ -10,7 +10,7 @@ import java.util.List;
@Data
public class SqlExecuteReq {
public static final String LIMIT_WRAPPER = " SELECT * FROM ( %s ) a LIMIT 1000 ";
public static final String LIMIT_WRAPPER = " SELECT * FROM ( %s ) a LIMIT %d ";
@NotNull(message = "modelId can not be null")
private Long id;

View File

@@ -7,7 +7,9 @@ import com.tencent.supersonic.headless.api.pojo.Field;
import com.tencent.supersonic.headless.api.pojo.Identify;
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.util.CollectionUtils;
@@ -20,6 +22,8 @@ import java.util.stream.Collectors;
@Data
@ToString(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class ModelResp extends SchemaItem {
private Long domainId;

View File

@@ -56,9 +56,9 @@ public class DefaultQueryParser implements QueryParser {
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
}
String querySql =
Objects.nonNull(queryStatement.getEnableLimitWrapper()) && queryStatement.getEnableLimitWrapper()
Objects.nonNull(queryStatement.getLimit()) && queryStatement.getLimit() > 0
? String.format(SqlExecuteReq.LIMIT_WRAPPER,
queryStatement.getSql())
queryStatement.getSql(), queryStatement.getLimit())
: queryStatement.getSql();
queryStatement.setSql(querySql);
}

View File

@@ -33,6 +33,7 @@ public class QueryStatement {
private SemanticModel semanticModel;
private SemanticSchemaResp semanticSchemaResp;
private Integer limit;
public boolean isOk() {
this.ok = "".equals(errMsg) && !"".equals(sql);

View File

@@ -51,9 +51,6 @@ import java.util.stream.Stream;
@Slf4j
public class QueryReqConverter {
@Value("${query.sql.limitWrapper:true}")
private Boolean limitWrapper;
@Autowired
private QueryStructUtils queryStructUtils;
@@ -130,7 +127,7 @@ public class QueryReqConverter {
queryStatement.setIsS2SQL(true);
queryStatement.setMinMaxTime(queryStructUtils.getBeginEndTime(queryStructReq));
queryStatement.setDataSetId(querySQLReq.getDataSetId());
queryStatement.setEnableLimitWrapper(limitWrapper);
queryStatement.setLimit(querySQLReq.getLimit());
return queryStatement;
}