mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
(fix)(headless) add necessary annotations and opt QueryReqConverter limit logic (#923)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user