diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/QueryController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/QueryController.java index ef6533b0a..1855c049a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/QueryController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/QueryController.java @@ -23,6 +23,12 @@ import com.tencent.supersonic.headless.core.pojo.QueryStatement; import com.tencent.supersonic.headless.server.service.DownloadService; import com.tencent.supersonic.headless.server.service.HeadlessQueryEngine; import com.tencent.supersonic.headless.server.service.QueryService; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,11 +37,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.util.List; - @RestController @RequestMapping("/api/semantic/query") @Slf4j @@ -69,22 +70,22 @@ public class QueryController { @PostMapping("/queryMetricDataById") public ItemQueryResultResp queryMetricDataById(@Valid @RequestBody QueryItemReq queryApiReq, - HttpServletRequest request) throws Exception { + HttpServletRequest request) throws Exception { return queryService.queryMetricDataById(queryApiReq, request); } @PostMapping("/download/struct") public void downloadByStruct(@RequestBody DownloadStructReq downloadStructReq, - HttpServletRequest request, - HttpServletResponse response) throws Exception { + HttpServletRequest request, + HttpServletResponse response) throws Exception { User user = UserHolder.findUser(request, response); downloadService.downloadByStruct(downloadStructReq, user, response); } @PostMapping("/download/batch") public void downloadBatch(@RequestBody BatchDownloadReq batchDownloadReq, - HttpServletRequest request, - HttpServletResponse response) throws Exception { + HttpServletRequest request, + HttpServletResponse response) throws Exception { User user = UserHolder.findUser(request, response); downloadService.batchDownload(batchDownloadReq, user, response); } @@ -97,6 +98,9 @@ public class QueryController { @PostMapping("/struct/parse") public SqlParserResp parseByStruct(@RequestBody ParseSqlReq parseSqlReq) throws Exception { QueryStructReq queryStructCmd = new QueryStructReq(); + Set models = new HashSet<>(); + models.add(Long.valueOf(parseSqlReq.getRootPath())); + queryStructCmd.setModelIds(models); QueryStatement queryStatement = headlessQueryEngine.physicalSql(queryStructCmd, parseSqlReq); SqlParserResp sqlParserResp = new SqlParserResp(); BeanUtils.copyProperties(queryStatement, sqlParserResp); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/HeadlessQueryEngineImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/HeadlessQueryEngineImpl.java index 128b2ccfd..53340ec29 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/HeadlessQueryEngineImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/HeadlessQueryEngineImpl.java @@ -6,21 +6,21 @@ import com.tencent.supersonic.headless.api.request.ParseSqlReq; import com.tencent.supersonic.headless.api.request.QueryStructReq; import com.tencent.supersonic.headless.api.response.ModelSchemaResp; import com.tencent.supersonic.headless.api.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.headless.core.executor.QueryExecutor; import com.tencent.supersonic.headless.core.optimizer.QueryOptimizer; import com.tencent.supersonic.headless.core.parser.QueryParser; import com.tencent.supersonic.headless.core.parser.calcite.s2sql.HeadlessModel; import com.tencent.supersonic.headless.core.pojo.QueryStatement; import com.tencent.supersonic.headless.core.utils.ComponentFactory; -import com.tencent.supersonic.headless.core.executor.QueryExecutor; import com.tencent.supersonic.headless.server.manager.HeadlessSchemaManager; import com.tencent.supersonic.headless.server.service.Catalog; import com.tencent.supersonic.headless.server.service.HeadlessQueryEngine; import com.tencent.supersonic.headless.server.utils.QueryStructUtils; import com.tencent.supersonic.headless.server.utils.QueryUtils; +import java.util.List; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import java.util.List; @Slf4j @Component @@ -33,8 +33,8 @@ public class HeadlessQueryEngineImpl implements HeadlessQueryEngine { private final HeadlessSchemaManager headlessSchemaManager; public HeadlessQueryEngineImpl(QueryParser queryParser, Catalog catalog, - QueryUtils queryUtils, HeadlessSchemaManager headlessSchemaManager, - QueryStructUtils queryStructUtils) { + QueryUtils queryUtils, HeadlessSchemaManager headlessSchemaManager, + QueryStructUtils queryStructUtils) { this.queryParser = queryParser; this.catalog = catalog; this.queryUtils = queryUtils; @@ -82,19 +82,22 @@ public class HeadlessQueryEngineImpl implements HeadlessQueryEngine { } @Override - public QueryStatement physicalSql(QueryStructReq queryStructCmd, ParseSqlReq sqlCommend) { + public QueryStatement physicalSql(QueryStructReq queryStructCmd, ParseSqlReq sqlCommend) throws Exception { QueryStatement queryStatement = new QueryStatement(); + queryStatement.setSql(sqlCommend.getSql()); queryStatement.setQueryStructReq(queryStructCmd); queryStatement.setParseSqlReq(sqlCommend); queryStatement.setIsS2SQL(true); + queryStatement.setHeadlessModel(getHeadLessModel(queryStatement)); return optimize(queryStructCmd, queryParser.parser(sqlCommend, queryStatement)); } - public QueryStatement physicalSql(QueryStructReq queryStructCmd, MetricQueryReq metricCommand) { + public QueryStatement physicalSql(QueryStructReq queryStructCmd, MetricQueryReq metricCommand) throws Exception { QueryStatement queryStatement = new QueryStatement(); queryStatement.setQueryStructReq(queryStructCmd); queryStatement.setMetricReq(metricCommand); queryStatement.setIsS2SQL(false); + queryStatement.setHeadlessModel(getHeadLessModel(queryStatement)); return queryParser.parser(queryStatement); }