diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Field.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Field.java index 6ecb48151..abd225849 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Field.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Field.java @@ -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; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/ModelDetail.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/ModelDetail.java index 28b7c1092..4877e5aa0 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/ModelDetail.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/ModelDetail.java @@ -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; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QuerySqlReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QuerySqlReq.java index 85b90d1b4..b20a5530d 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QuerySqlReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QuerySqlReq.java @@ -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() { diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java index c61944c05..c4f6f2f8f 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/SqlExecuteReq.java @@ -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; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/ModelResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/ModelResp.java index a2278b7a1..f51a056f1 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/ModelResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/ModelResp.java @@ -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; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/DefaultQueryParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/DefaultQueryParser.java index 401ad0a73..a3d39bdf2 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/DefaultQueryParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/DefaultQueryParser.java @@ -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); } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java index 9c19e0e4f..ac1757c4b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryStatement.java @@ -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); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryReqConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryReqConverter.java index b6ce4fb75..fc05e062e 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryReqConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryReqConverter.java @@ -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; }