You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/09/07 08:47:29 UTC
[kylin] 21/24: KYLIN-5698 fix creating tableindex cannot get column type
This is an automated email from the ASF dual-hosted git repository.
xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 38280f3b4d9ecfc10dd7adc3ad96ec50218c7767
Author: DorrisRuixuanZhang <do...@hotmail.com>
AuthorDate: Sun May 28 18:21:37 2023 +0800
KYLIN-5698 fix creating tableindex cannot get column type
---
.../kylin/rest/response/NDataModelResponse.java | 33 +++++++++++++---------
.../rest/response/NDataModelResponseTest.java | 1 +
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/src/modeling-service/src/main/java/org/apache/kylin/rest/response/NDataModelResponse.java b/src/modeling-service/src/main/java/org/apache/kylin/rest/response/NDataModelResponse.java
index c0eedd88af..66e8b488c8 100644
--- a/src/modeling-service/src/main/java/org/apache/kylin/rest/response/NDataModelResponse.java
+++ b/src/modeling-service/src/main/java/org/apache/kylin/rest/response/NDataModelResponse.java
@@ -30,6 +30,7 @@ import java.util.stream.Collectors;
import org.apache.commons.lang3.builder.HashCodeExclude;
import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.guava30.shaded.common.collect.Lists;
import org.apache.kylin.metadata.acl.NDataModelAclParams;
import org.apache.kylin.metadata.cube.model.IndexPlan;
import org.apache.kylin.metadata.cube.model.NDataflowManager;
@@ -55,7 +56,6 @@ import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
-import org.apache.kylin.guava30.shaded.common.collect.Lists;
import io.kyligence.kap.secondstorage.response.SecondStorageNode;
import lombok.Data;
@@ -419,18 +419,8 @@ public class NDataModelResponse extends NDataModel {
for (NamedColumn namedColumn : getAllSelectedColumns()) {
SimplifiedNamedColumn simplifiedNamedColumn = new SimplifiedNamedColumn(namedColumn);
TblColRef colRef = findColumnByAlias(simplifiedNamedColumn.getAliasDotColumn());
- if (simplifiedNamedColumn.getStatus() == DIMENSION && colRef != null && tableMetadata != null) {
- if (excludedChecker.isExcludedCol(colRef)
- && !colRef.getTableRef().getTableIdentity().equals(getLazyModel().getRootFactTableName())) {
- simplifiedNamedColumn.setExcluded(true);
- }
- TableExtDesc tableExt = tableMetadata.getTableExtIfExists(colRef.getTableRef().getTableDesc());
- TableExtDesc.ColumnStats columnStats = Objects.isNull(tableExt) ? null
- : tableExt.getColumnStatsByName(colRef.getName());
- if (columnStats != null) {
- simplifiedNamedColumn.setCardinality(columnStats.getCardinality());
- }
-
+ if (colRef != null) {
+ innerProcessSimplifiedNamedColumn(tableMetadata, excludedChecker, simplifiedNamedColumn, colRef);
}
selectedColumns.add(simplifiedNamedColumn);
}
@@ -438,6 +428,23 @@ public class NDataModelResponse extends NDataModel {
return selectedColumns;
}
+ private void innerProcessSimplifiedNamedColumn(NTableMetadataManager tableMetadata,
+ ColExcludedChecker excludedChecker, SimplifiedNamedColumn simplifiedNamedColumn, TblColRef colRef) {
+ simplifiedNamedColumn.setType(colRef.getColumnDesc().getType().toString());
+ if (simplifiedNamedColumn.getStatus() == DIMENSION && tableMetadata != null) {
+ if (excludedChecker.isExcludedCol(colRef)
+ && !colRef.getTableRef().getTableIdentity().equals(getLazyModel().getRootFactTableName())) {
+ simplifiedNamedColumn.setExcluded(true);
+ }
+ TableExtDesc tableExt = tableMetadata.getTableExtIfExists(colRef.getTableRef().getTableDesc());
+ TableExtDesc.ColumnStats columnStats = Objects.isNull(tableExt) ? null
+ : tableExt.getColumnStatsByName(colRef.getName());
+ if (columnStats != null) {
+ simplifiedNamedColumn.setCardinality(columnStats.getCardinality());
+ }
+ }
+ }
+
public void computedInfo(long inconsistentCount, ModelStatusToDisplayEnum status, boolean isScd2,
NDataModel modelDesc, boolean onlyNormalDim) {
if (!onlyNormalDim) {
diff --git a/src/modeling-service/src/test/java/org/apache/kylin/rest/response/NDataModelResponseTest.java b/src/modeling-service/src/test/java/org/apache/kylin/rest/response/NDataModelResponseTest.java
index 8ee1f9422f..42b0e2b807 100644
--- a/src/modeling-service/src/test/java/org/apache/kylin/rest/response/NDataModelResponseTest.java
+++ b/src/modeling-service/src/test/java/org/apache/kylin/rest/response/NDataModelResponseTest.java
@@ -70,6 +70,7 @@ class NDataModelResponseTest {
modelResponse.setProject(PROJECT);
List<NDataModelResponse.SimplifiedNamedColumn> selectedColumns = modelResponse.getSelectedColumns();
Assertions.assertEquals(1, selectedColumns.size());
+ Assertions.assertEquals("decimal(19,4)", selectedColumns.get(0).getType());
List<NDataModelResponse.SimplifiedNamedColumn> namedColumns = modelResponse.getNamedColumns();
Assertions.assertEquals(1, namedColumns.size());
}