From f2888c7e6a4d3d1ae551c0011221f0776b046182 Mon Sep 17 00:00:00 2001 From: jipeli <54889677+jipeli@users.noreply.github.com> Date: Wed, 26 Jun 2024 14:42:26 +0800 Subject: [PATCH] (improvement)(Headless) fixed execution null database when skip translation (#1233) --- .../facade/service/impl/S2SemanticLayerService.java | 8 ++++++++ .../headless/server/web/service/SchemaService.java | 3 +++ .../server/web/service/impl/SchemaServiceImpl.java | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java index 3275f12c6..fb0a037a7 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/S2SemanticLayerService.java @@ -28,6 +28,7 @@ import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.request.SchemaFilterReq; import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq; +import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.ExplainResp; import com.tencent.supersonic.headless.api.pojo.response.ItemResp; @@ -44,6 +45,7 @@ import com.tencent.supersonic.headless.core.utils.ComponentFactory; import com.tencent.supersonic.headless.server.annotation.S2DataPermission; import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService; import com.tencent.supersonic.headless.server.manager.SemanticSchemaManager; +import com.tencent.supersonic.headless.server.utils.DatabaseConverter; import com.tencent.supersonic.headless.server.utils.QueryReqConverter; import com.tencent.supersonic.headless.server.utils.QueryUtils; import com.tencent.supersonic.headless.server.utils.StatUtils; @@ -207,6 +209,12 @@ public class S2SemanticLayerService implements SemanticLayerService { private QueryStatement buildSqlInfoStatement(SqlInfo sqlInfo, Long dataSetId) { QueryStatement queryStatement = new QueryStatement(); + SemanticModel semanticModel = new SemanticModel(); + DatabaseResp databaseResp = schemaService.getDatabase(Long.valueOf(sqlInfo.getSourceId())); + if (Objects.nonNull(databaseResp)) { + semanticModel.setDatabase(DatabaseConverter.convert(databaseResp)); + } + queryStatement.setSemanticModel(semanticModel); queryStatement.setSql(sqlInfo.getQuerySQL()); queryStatement.setSourceId(sqlInfo.getSourceId()); queryStatement.setDataSetId(dataSetId); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/SchemaService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/SchemaService.java index 7f0fd73e2..e19c81317 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/SchemaService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/SchemaService.java @@ -8,6 +8,7 @@ import com.tencent.supersonic.headless.api.pojo.ItemDateFilter; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq; import com.tencent.supersonic.headless.api.pojo.request.SchemaFilterReq; +import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.DomainResp; import com.tencent.supersonic.headless.api.pojo.response.ItemResp; @@ -58,4 +59,6 @@ public interface SchemaService { Map modelIdName); ItemDateResp getItemDate(ItemDateFilter dimension, ItemDateFilter metric); + + DatabaseResp getDatabase(Long id); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/SchemaServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/SchemaServiceImpl.java index d04074d94..445230393 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/SchemaServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/SchemaServiceImpl.java @@ -508,4 +508,9 @@ public class SchemaServiceImpl implements SchemaService { return modelService.getItemDate(dimension, metric); } + @Override + public DatabaseResp getDatabase(Long id) { + return databaseService.getDatabase(id); + } + }