mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +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;
|
package com.tencent.supersonic.headless.api.pojo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class Field {
|
public class Field {
|
||||||
|
|
||||||
private String fieldName;
|
private String fieldName;
|
||||||
|
|||||||
@@ -2,15 +2,18 @@ package com.tencent.supersonic.headless.api.pojo;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
|
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class ModelDetail {
|
public class ModelDetail {
|
||||||
|
|
||||||
private String queryType;
|
private String queryType;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import java.util.Objects;
|
|||||||
@ToString
|
@ToString
|
||||||
public class QuerySqlReq extends SemanticQueryReq {
|
public class QuerySqlReq extends SemanticQueryReq {
|
||||||
private String sql;
|
private String sql;
|
||||||
|
private Integer limit = 1000;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toCustomizedString() {
|
public String toCustomizedString() {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SqlExecuteReq {
|
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")
|
@NotNull(message = "modelId can not be null")
|
||||||
private Long id;
|
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.Identify;
|
||||||
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
|
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
|
||||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@@ -20,6 +22,8 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class ModelResp extends SchemaItem {
|
public class ModelResp extends SchemaItem {
|
||||||
|
|
||||||
private Long domainId;
|
private Long domainId;
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ public class DefaultQueryParser implements QueryParser {
|
|||||||
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
|
throw new RuntimeException("parse Exception: " + queryStatement.getErrMsg());
|
||||||
}
|
}
|
||||||
String querySql =
|
String querySql =
|
||||||
Objects.nonNull(queryStatement.getEnableLimitWrapper()) && queryStatement.getEnableLimitWrapper()
|
Objects.nonNull(queryStatement.getLimit()) && queryStatement.getLimit() > 0
|
||||||
? String.format(SqlExecuteReq.LIMIT_WRAPPER,
|
? String.format(SqlExecuteReq.LIMIT_WRAPPER,
|
||||||
queryStatement.getSql())
|
queryStatement.getSql(), queryStatement.getLimit())
|
||||||
: queryStatement.getSql();
|
: queryStatement.getSql();
|
||||||
queryStatement.setSql(querySql);
|
queryStatement.setSql(querySql);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public class QueryStatement {
|
|||||||
private SemanticModel semanticModel;
|
private SemanticModel semanticModel;
|
||||||
|
|
||||||
private SemanticSchemaResp semanticSchemaResp;
|
private SemanticSchemaResp semanticSchemaResp;
|
||||||
|
private Integer limit;
|
||||||
|
|
||||||
public boolean isOk() {
|
public boolean isOk() {
|
||||||
this.ok = "".equals(errMsg) && !"".equals(sql);
|
this.ok = "".equals(errMsg) && !"".equals(sql);
|
||||||
|
|||||||
@@ -51,9 +51,6 @@ import java.util.stream.Stream;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class QueryReqConverter {
|
public class QueryReqConverter {
|
||||||
|
|
||||||
@Value("${query.sql.limitWrapper:true}")
|
|
||||||
private Boolean limitWrapper;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private QueryStructUtils queryStructUtils;
|
private QueryStructUtils queryStructUtils;
|
||||||
|
|
||||||
@@ -130,7 +127,7 @@ public class QueryReqConverter {
|
|||||||
queryStatement.setIsS2SQL(true);
|
queryStatement.setIsS2SQL(true);
|
||||||
queryStatement.setMinMaxTime(queryStructUtils.getBeginEndTime(queryStructReq));
|
queryStatement.setMinMaxTime(queryStructUtils.getBeginEndTime(queryStructReq));
|
||||||
queryStatement.setDataSetId(querySQLReq.getDataSetId());
|
queryStatement.setDataSetId(querySQLReq.getDataSetId());
|
||||||
queryStatement.setEnableLimitWrapper(limitWrapper);
|
queryStatement.setLimit(querySQLReq.getLimit());
|
||||||
|
|
||||||
return queryStatement;
|
return queryStatement;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user