diff --git core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index bfad306..a44831d 100644 --- core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -61,6 +61,14 @@ public class KylinConfigBase implements Serializable { return kylinHome; } + /** + * @see KylinVersion + * @return current kylin version + */ + public static String getKylinVersion(){ + return KylinVersion.getCurrentVersion(); + } + // ============================================================================ private volatile Properties properties = new Properties(); diff --git core-common/src/main/java/org/apache/kylin/common/KylinVersion.java core-common/src/main/java/org/apache/kylin/common/KylinVersion.java new file mode 100644 index 0000000..d711b38 --- /dev/null +++ core-common/src/main/java/org/apache/kylin/common/KylinVersion.java @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.kylin.common; + +/** + * Current version is: 2.1 + * + * @since 2.1 + */ +class KylinVersion { + /** + * Require MANUAL updating kylin version per ANY upgrading. + */ + private static final String CURRENT_KYLIN_VERSION = "2.1"; + + /** + * Get current Kylin version + * + * Currently the implementation is reading directly from constant variable + * + * @return current kylin version in String + */ + public static String getCurrentVersion(){ + return CURRENT_KYLIN_VERSION; + } +} \ No newline at end of file diff --git core-common/src/main/java/org/apache/kylin/common/persistence/RootPersistentEntity.java core-common/src/main/java/org/apache/kylin/common/persistence/RootPersistentEntity.java index c8177e6..327ddcc 100644 --- core-common/src/main/java/org/apache/kylin/common/persistence/RootPersistentEntity.java +++ core-common/src/main/java/org/apache/kylin/common/persistence/RootPersistentEntity.java @@ -30,6 +30,7 @@ import org.apache.commons.lang.time.FastDateFormat; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.kylin.common.KylinConfig; /** * Marks the root entity of JSON persistence. Unit of read, write, cache, and @@ -71,6 +72,24 @@ abstract public class RootPersistentEntity implements AclEntity, Serializable { @JsonProperty("last_modified") protected long lastModified; + /** + * Metadata model version + * + * User info only, we don't do version control + * + * For example: 2.1 + */ + @JsonProperty("version") + protected String version; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + public String getUuid() { return uuid; } @@ -90,10 +109,15 @@ abstract public class RootPersistentEntity implements AclEntity, Serializable { public void setLastModified(long lastModified) { this.lastModified = lastModified; } - - - public void updateRandomUuid() { + /** + * Update entity's "model_version" with current kylin version and "uuid" with random UUID + * + * @see KylinConfig#getKylinVersion() + * @see UUID#randomUUID() + */ + public void updateVersionAndRandomUuid() { + setVersion(KylinConfig.getKylinVersion()); setUuid(UUID.randomUUID().toString()); } @@ -103,6 +127,7 @@ abstract public class RootPersistentEntity implements AclEntity, Serializable { int result = 1; result = prime * result + (int) (lastModified ^ (lastModified >>> 32)); result = prime * result + ((uuid == null) ? 0 : uuid.hashCode()); + result = prime * result + ((version == null) ? 0 : version.hashCode()); return result; } @@ -115,7 +140,7 @@ abstract public class RootPersistentEntity implements AclEntity, Serializable { if (getClass() != obj.getClass()) return false; RootPersistentEntity other = (RootPersistentEntity) obj; - if (lastModified != other.lastModified) + if (lastModified != other.lastModified || !(version == null || version.equals(other.getVersion()))) return false; if (uuid == null) { if (other.uuid != null) @@ -124,5 +149,4 @@ abstract public class RootPersistentEntity implements AclEntity, Serializable { return false; return true; } - -} +} \ No newline at end of file diff --git core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java index 8ca3ebc..c26e2d2 100644 --- core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java +++ core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java @@ -63,7 +63,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, cubeInstance.setCreateTimeUTC(System.currentTimeMillis()); cubeInstance.setSegments(new ArrayList()); cubeInstance.setStatus(RealizationStatusEnum.DISABLED); - cubeInstance.updateRandomUuid(); + cubeInstance.updateVersionAndRandomUuid(); return cubeInstance; } @@ -74,8 +74,6 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, private String name; @JsonProperty("owner") private String owner; - @JsonProperty("version") - private String version; // user info only, we don't do version control @JsonProperty("descriptor") private String descName; // Mark cube priority for query @@ -226,14 +224,6 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, this.owner = owner; } - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - public String getDescName() { return descName.toUpperCase(); } @@ -440,7 +430,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, newCube.setVersion(cubeInstance.getVersion()); newCube.setCost(cubeInstance.getCost()); newCube.setCreateTimeUTC(System.currentTimeMillis()); - newCube.updateRandomUuid(); + newCube.updateVersionAndRandomUuid(); return newCube; } diff --git core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java index 2dc04d4..a1a0531 100644 --- core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java +++ core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java @@ -857,7 +857,7 @@ public class CubeDesc extends RootPersistentEntity { newCubeDesc.setStorageType(cubeDesc.getStorageType()); newCubeDesc.setAggregationGroups(cubeDesc.getAggregationGroups()); newCubeDesc.setConfig(cubeDesc.getConfig()); - newCubeDesc.updateRandomUuid(); + newCubeDesc.updateVersionAndRandomUuid(); return newCubeDesc; } } diff --git core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfo.java core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfo.java index 4fba59a..8e41abf 100644 --- core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfo.java +++ core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfo.java @@ -53,7 +53,7 @@ public class DictionaryInfo extends RootPersistentEntity { public DictionaryInfo(String sourceTable, String sourceColumn, int sourceColumnIndex, String dataType, TableSignature input) { - this.updateRandomUuid(); + this.updateVersionAndRandomUuid(); this.sourceTable = sourceTable; this.sourceColumn = sourceColumn; @@ -64,7 +64,7 @@ public class DictionaryInfo extends RootPersistentEntity { public DictionaryInfo(DictionaryInfo other) { - this.updateRandomUuid(); + this.updateVersionAndRandomUuid(); this.sourceTable = other.sourceTable; this.sourceColumn = other.sourceColumn; diff --git core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java index 53bf60d..ccdc79d 100644 --- core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java +++ core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java @@ -87,7 +87,7 @@ public class SnapshotManager { public SnapshotTable buildSnapshot(ReadableTable table, TableDesc tableDesc) throws IOException { SnapshotTable snapshot = new SnapshotTable(table); - snapshot.updateRandomUuid(); + snapshot.updateVersionAndRandomUuid(); String dup = checkDupByInfo(snapshot); if (dup != null) { diff --git core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java index 1647707..c042138 100644 --- core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java +++ core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java @@ -348,7 +348,7 @@ public class DataModelDesc extends RootPersistentEntity { newDataModelDesc.setLookups(dataModelDesc.getLookups()); newDataModelDesc.setMetrics(dataModelDesc.getMetrics()); newDataModelDesc.setPartitionDesc(PartitionDesc.getCopyOf(dataModelDesc.getPartitionDesc())); - newDataModelDesc.updateRandomUuid(); + newDataModelDesc.updateVersionAndRandomUuid(); return newDataModelDesc; } } diff --git core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java index e0ed3d9..20741ee 100644 --- core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java +++ core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java @@ -92,7 +92,7 @@ public class ProjectInstance extends RootPersistentEntity { public static ProjectInstance create(String name, String owner, String description, List realizationEntries, List models) { ProjectInstance projectInstance = new ProjectInstance(); - projectInstance.updateRandomUuid(); + projectInstance.updateVersionAndRandomUuid(); projectInstance.setName(name); projectInstance.setOwner(owner); projectInstance.setDescription(description); diff --git core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java index 37241c3..45bbb1b 100644 --- core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java +++ core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java @@ -197,7 +197,7 @@ public class ProjectManager { project.setDescription(newDesc); if (project.getUuid() == null) - project.updateRandomUuid(); + project.updateVersionAndRandomUuid(); updateProject(project); diff --git core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java index 251f7c9..090efce 100644 --- core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java +++ core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java @@ -85,7 +85,7 @@ public class HybridInstance extends RootPersistentEntity implements IRealization hybridInstance.setConfig(config); hybridInstance.setName(name); hybridInstance.setRealizationEntries(realizationEntries); - hybridInstance.updateRandomUuid(); + hybridInstance.updateVersionAndRandomUuid(); return hybridInstance; } diff --git examples/sample_cube/metadata/cube/kylin_sales_cube.json examples/sample_cube/metadata/cube/kylin_sales_cube.json index fb8affa..7454019 100644 --- examples/sample_cube/metadata/cube/kylin_sales_cube.json +++ examples/sample_cube/metadata/cube/kylin_sales_cube.json @@ -1,9 +1,9 @@ { "uuid" : "2fbca32a-a33e-4b69-83dd-0bb8b1f8c53b", + "version":"2.1", "last_modified" : 0, "name" : "kylin_sales_cube", "owner" : null, - "version" : null, "descriptor" : "kylin_sales_cube_desc", "status" : "DISABLED", "segments" : [ ], diff --git examples/sample_cube/metadata/cube_desc/kylin_sales_cube_desc.json examples/sample_cube/metadata/cube_desc/kylin_sales_cube_desc.json index 732af79..f0d9fca 100644 --- examples/sample_cube/metadata/cube_desc/kylin_sales_cube_desc.json +++ examples/sample_cube/metadata/cube_desc/kylin_sales_cube_desc.json @@ -1,5 +1,6 @@ { "uuid" : "0ef9b7a8-3929-4dff-b59d-2100aadc8dbf", + "version":"2.1", "name" : "kylin_sales_cube_desc", "description" : null, "dimensions" : [ { diff --git examples/sample_cube/metadata/model_desc/kylin_sales_model.json examples/sample_cube/metadata/model_desc/kylin_sales_model.json index 586e73a..24ed62d 100644 --- examples/sample_cube/metadata/model_desc/kylin_sales_model.json +++ examples/sample_cube/metadata/model_desc/kylin_sales_model.json @@ -1,5 +1,6 @@ { "uuid" : "0928468a-9fab-4185-9a14-6f2e7c74823f", + "version":"2.1", "name" : "kylin_sales_model", "lookups" : [ { "table" : "DEFAULT.KYLIN_CAL_DT", diff --git examples/sample_cube/metadata/project/learn_kylin.json examples/sample_cube/metadata/project/learn_kylin.json index cf082f5..a779954 100644 --- examples/sample_cube/metadata/project/learn_kylin.json +++ examples/sample_cube/metadata/project/learn_kylin.json @@ -1,5 +1,6 @@ { "uuid": "1eaca32a-a33e-4b69-83dd-0bb8b1f8c91b", + "version":"2.1", "name": "learn_kylin", "realizations": [ { diff --git examples/sample_cube/metadata/table/DEFAULT.KYLIN_CAL_DT.json examples/sample_cube/metadata/table/DEFAULT.KYLIN_CAL_DT.json index 5bdd778..8666feb 100644 --- examples/sample_cube/metadata/table/DEFAULT.KYLIN_CAL_DT.json +++ examples/sample_cube/metadata/table/DEFAULT.KYLIN_CAL_DT.json @@ -1,5 +1,6 @@ { "uuid" : "0ff420eb-79ad-40bd-bca9-12d8cd05c60a", + "version":"2.1", "name" : "KYLIN_CAL_DT", "columns" : [ { "id" : "1", diff --git examples/sample_cube/metadata/table/DEFAULT.KYLIN_CATEGORY_GROUPINGS.json examples/sample_cube/metadata/table/DEFAULT.KYLIN_CATEGORY_GROUPINGS.json index d1461b7..e397932 100644 --- examples/sample_cube/metadata/table/DEFAULT.KYLIN_CATEGORY_GROUPINGS.json +++ examples/sample_cube/metadata/table/DEFAULT.KYLIN_CATEGORY_GROUPINGS.json @@ -1,5 +1,6 @@ { "uuid" : "952d11b5-69d9-45d1-92af-227489485e3f", + "version":"2.1", "name" : "KYLIN_CATEGORY_GROUPINGS", "columns" : [ { "id" : "1", diff --git examples/sample_cube/metadata/table/DEFAULT.KYLIN_SALES.json examples/sample_cube/metadata/table/DEFAULT.KYLIN_SALES.json index be7cde5..c4a0fb8 100644 --- examples/sample_cube/metadata/table/DEFAULT.KYLIN_SALES.json +++ examples/sample_cube/metadata/table/DEFAULT.KYLIN_SALES.json @@ -1,5 +1,6 @@ { "uuid" : "e286e39e-40d7-44c2-8fa2-41b365522771", + "version":"2.1", "name" : "KYLIN_SALES", "columns" : [ { "id" : "1", diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_1_new_segment.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_1_new_segment.json index 95c9231..2851b16 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_1_new_segment.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_1_new_segment.json @@ -1,9 +1,9 @@ { "uuid" : "111ca32a-a33e-4b69-83dd-0bb8b1f8c53b", + "version":"2.1", "last_modified" : 1404098141020, "name" : "test_kylin_cube_with_slr_1_new_segment", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_desc", "cost" : 50, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_empty.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_empty.json index 69032bc..71167bd 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_empty.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_empty.json @@ -1,9 +1,9 @@ { "uuid" : "1eaca32a-a33e-4b69-83dd-0bb8b1f8c53b", + "version":"2.1", "last_modified" : 0, "name" : "test_kylin_cube_with_slr_empty", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_desc", "segments" : [ ], "status" : "DISABLED", diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_empty.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_empty.json index e708a86..e20fef8 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_empty.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_empty.json @@ -1,9 +1,9 @@ { "uuid" : "1eaca32a-a33e-4b69-83dd-0bb8b1f8dddd", + "version":"2.1", "last_modified" : 0, "name" : "test_kylin_cube_with_slr_left_join_empty", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_left_join_desc", "segments" : [ ], "status" : "DISABLED", diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_ready.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_ready.json index 7222161..5edaeff 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_ready.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_left_join_ready.json @@ -1,9 +1,9 @@ { "uuid" : "kkkka32a-a33e-4b69-83dd-0bb8b1f8c53b", + "version":"2.1", "last_modified" : 1404097095621, "name" : "test_kylin_cube_with_slr_left_join_ready", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_left_join_desc", "cost" : 50, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready.json index 64aae3f..bcbf538 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready.json @@ -1,9 +1,9 @@ { "uuid" : "1eaca32a-a33e-4b69-83dd-0bb8b1f8c53b", + "version":"2.1", "last_modified" : 1404098141020, "name" : "test_kylin_cube_with_slr_ready", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_desc", "cost" : 50, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready_2_segments.json examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready_2_segments.json index c36b164..ee679f5 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready_2_segments.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_with_slr_ready_2_segments.json @@ -1,9 +1,9 @@ { "uuid" : "1eaca32a-a33e-4b69-83dd-0bb8b1f8c53c", + "version":"2.1", "last_modified" : 1404098141020, "name" : "test_kylin_cube_with_slr_ready_2_segments", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_with_slr_desc", "cost" : 50, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_empty.json examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_empty.json index fe3c4d7..e971c49 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_empty.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_empty.json @@ -1,9 +1,9 @@ { "uuid" : "daa53e80-41be-49a5-90ca-9fb7294db186", + "version":"2.1", "last_modified" : 0, "name" : "test_kylin_cube_without_slr_empty", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_without_slr_desc", "segments" : [ ], "status" : "DISABLED", diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_empty.json examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_empty.json index b4b5fd7..38a9239 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_empty.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_empty.json @@ -1,9 +1,9 @@ { "uuid" : "dddd3e80-41be-49a5-90ca-9fb7294db186", + "version":"2.1", "last_modified" : 0, "name" : "test_kylin_cube_without_slr_left_join_empty", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_without_slr_left_join_desc", "segments" : [ ], "status" : "DISABLED", diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready.json examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready.json index f87dba7..7a8628a 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready.json @@ -1,9 +1,9 @@ { "uuid" : "mmmm3e80-41be-49a5-90ca-9fb7294db186", + "version":"2.1", "last_modified" : 1404097288087, "name" : "test_kylin_cube_without_slr_left_join_ready", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_without_slr_left_join_desc", "cost" : 10, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready_2_segments.json examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready_2_segments.json index e241008..bd26945 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready_2_segments.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_left_join_ready_2_segments.json @@ -1,9 +1,9 @@ { "uuid" : "1eaca32a-a33e-4b69-83dd-0bb8b1f8c5ff", + "version":"2.1", "last_modified" : 1404098141020, "name" : "test_kylin_cube_without_slr_left_join_ready_2_segments", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_without_slr_left_join_desc", "cost" : 50, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_ready.json examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_ready.json index 75ff690..90bea1b 100644 --- examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_ready.json +++ examples/test_case_data/localmeta/cube/test_kylin_cube_without_slr_ready.json @@ -1,9 +1,9 @@ { "uuid" : "daa53e80-41be-49a5-90ca-9fb7294db186", + "version":"2.1", "last_modified" : 1404098303976, "name" : "test_kylin_cube_without_slr_ready", "owner" : null, - "version" : null, "descriptor" : "test_kylin_cube_without_slr_desc", "cost" : 10, "segments" : [ { diff --git examples/test_case_data/localmeta/cube/test_streaming_table_cube.json examples/test_case_data/localmeta/cube/test_streaming_table_cube.json index d0cf0d5..a47513d 100644 --- examples/test_case_data/localmeta/cube/test_streaming_table_cube.json +++ examples/test_case_data/localmeta/cube/test_streaming_table_cube.json @@ -1,8 +1,8 @@ { "uuid": "40a27d9d-c5f3-45c4-9b8b-503552419193", + "version":"2.1", "name": "test_streaming_table_cube", "owner": "ADMIN", - "version": null, "cost": 50, "status": "READY", "segments": [], diff --git examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_desc.json examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_desc.json index 98b584b..e164e3e 100644 --- examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_desc.json +++ examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_desc.json @@ -1,5 +1,6 @@ { "uuid" : "a24ca905-1fc6-4f67-985c-38fa5aeafd92", + "version":"2.1", "name" : "test_kylin_cube_with_slr_desc", "description" : null, "dimensions" : [ { diff --git examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_left_join_desc.json examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_left_join_desc.json index cc95d28..5e450da 100644 --- examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_left_join_desc.json +++ examples/test_case_data/localmeta/cube_desc/test_kylin_cube_with_slr_left_join_desc.json @@ -1,5 +1,6 @@ { "uuid" : "bbbba905-1fc6-4f67-985c-38fa5aeafd92", + "version":"2.1", "name" : "test_kylin_cube_with_slr_left_join_desc", "description" : null, "dimensions" : [ { diff --git examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json index 4d44feb..fbe00d7 100644 --- examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json +++ examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json @@ -1,4 +1,6 @@ + { + "version":"2.1", "uuid": "9ac9b7a8-3929-4dff-b59d-2100aadc8dbf", "name": "test_kylin_cube_without_slr_desc", "description": null, diff --git examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json index 0b82d1e..f7a30e0 100644 --- examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json +++ examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json @@ -1,5 +1,6 @@ { "uuid" : "9ac9b7a8-3929-4dff-b59d-2100aadc8dbf", + "version":"2.1", "name" : "test_kylin_cube_without_slr_left_join_desc", "description" : null, "dimensions" : [ { diff --git examples/test_case_data/localmeta/cube_desc/test_streaming_table_cube_desc.json examples/test_case_data/localmeta/cube_desc/test_streaming_table_cube_desc.json index df88aca..2b26eeb 100644 --- examples/test_case_data/localmeta/cube_desc/test_streaming_table_cube_desc.json +++ examples/test_case_data/localmeta/cube_desc/test_streaming_table_cube_desc.json @@ -1,5 +1,6 @@ { "uuid" : "901ed15e-7769-4c66-b7ae-fbdc971cd192", + "version":"2.1", "name" : "test_streaming_table_cube_desc", "description" : "", "dimensions" : [ { diff --git examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_inner_join.json examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_inner_join.json index 9e9a826..0bdefe8 100644 --- examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_inner_join.json +++ examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_inner_join.json @@ -1,5 +1,6 @@ { "uuid": "9iiu8590-64b6-4367-8fb5-7500eb95fd9c", + "version":"2.1", "name": "test_kylin_hybrid_inner_join", "realizations": [ { diff --git examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_left_join.json examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_left_join.json index 4f0bf98..354863c 100644 --- examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_left_join.json +++ examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_left_join.json @@ -1,5 +1,6 @@ { "uuid": "5ca78590-64b6-4367-8fb5-7500eb95fd9c", + "version":"2.1", "name": "test_kylin_hybrid_left_join", "realizations": [ { diff --git examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_ready.json examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_ready.json index 0274a69..1d131c1 100644 --- examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_ready.json +++ examples/test_case_data/localmeta/hybrid/test_kylin_hybrid_ready.json @@ -1,5 +1,6 @@ { "uuid": "9iiu8590-64b6-4367-8fb5-7500eb95fd9c", + "version":"2.1", "name": "test_kylin_hybrid_ready", "realizations": [ { diff --git examples/test_case_data/localmeta/invertedindex/test_kylin_ii_inner_join.json examples/test_case_data/localmeta/invertedindex/test_kylin_ii_inner_join.json index 4c0c3ef..5b8614f 100644 --- examples/test_case_data/localmeta/invertedindex/test_kylin_ii_inner_join.json +++ examples/test_case_data/localmeta/invertedindex/test_kylin_ii_inner_join.json @@ -1,4 +1,5 @@ { + "model_version":"2.1", "uuid": "dk853e80-41be-49a5-89ca-9fb7294db186", "name": "test_kylin_ii_inner_join", "owner": null, diff --git examples/test_case_data/localmeta/invertedindex/test_kylin_ii_left_join.json examples/test_case_data/localmeta/invertedindex/test_kylin_ii_left_join.json index 90c21bb..67b4bca 100644 --- examples/test_case_data/localmeta/invertedindex/test_kylin_ii_left_join.json +++ examples/test_case_data/localmeta/invertedindex/test_kylin_ii_left_join.json @@ -1,8 +1,8 @@ { + "version":"2.1", "uuid": "daa53e80-41be-49a5-89ca-9fb7294db186", "name": "test_kylin_ii_left_join", "owner": null, - "version": null, "cost": 10, "status": "DISABLED", "segments": [], diff --git examples/test_case_data/localmeta/invertedindex/test_streaming_table_ii.json examples/test_case_data/localmeta/invertedindex/test_streaming_table_ii.json index 9abe3ed..689f04c 100644 --- examples/test_case_data/localmeta/invertedindex/test_streaming_table_ii.json +++ examples/test_case_data/localmeta/invertedindex/test_streaming_table_ii.json @@ -1,8 +1,8 @@ { + "version":"2.1", "uuid": "daa53e80-41be-49a5-89ca-9fb729999812", "name": "test_streaming_table_ii", "owner": null, - "version": null, "cost": 10, "status": "DISABLED", "segments": [], diff --git examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_inner_join_desc.json examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_inner_join_desc.json index c78dfad..71549c1 100644 --- examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_inner_join_desc.json +++ examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_inner_join_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "88bf87b5-c7b5-4420-a12a-07f6b37b3187", "last_modified": 0, "name": "test_kylin_ii_inner_join_desc", diff --git examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_left_join_desc.json examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_left_join_desc.json index d3b4ad7..a630490 100644 --- examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_left_join_desc.json +++ examples/test_case_data/localmeta/invertedindex_desc/test_kylin_ii_left_join_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "74bf87b5-c7b5-4420-a12a-07f6b37b3187", "last_modified": 0, "name": "test_kylin_ii_left_join_desc", diff --git examples/test_case_data/localmeta/invertedindex_desc/test_streaming_table_ii_desc.json examples/test_case_data/localmeta/invertedindex_desc/test_streaming_table_ii_desc.json index fe4d885..e5e6202 100644 --- examples/test_case_data/localmeta/invertedindex_desc/test_streaming_table_ii_desc.json +++ examples/test_case_data/localmeta/invertedindex_desc/test_streaming_table_ii_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "74bf87b5-c7b5-4420-a12a-07f6b3864789", "last_modified": 0, "name": "test_streaming_table_ii_desc", diff --git examples/test_case_data/localmeta/kafka/kafka_test.json examples/test_case_data/localmeta/kafka/kafka_test.json index 272abd9..a20f71e 100644 --- examples/test_case_data/localmeta/kafka/kafka_test.json +++ examples/test_case_data/localmeta/kafka/kafka_test.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-900c-4d39-bf89-8472ec6c3c0d", "name": "kafka_test", "topic": "kafka_stream_test", diff --git examples/test_case_data/localmeta/kafka/test_streaming_table_cube.json examples/test_case_data/localmeta/kafka/test_streaming_table_cube.json index 24e5afe..554fa62 100644 --- examples/test_case_data/localmeta/kafka/test_streaming_table_cube.json +++ examples/test_case_data/localmeta/kafka/test_streaming_table_cube.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-777c-4d39-bf89-8472ec909193", "name": "test_streaming_table_cube", "topic": "test_streaming_table_topic_xyz", diff --git examples/test_case_data/localmeta/kafka/test_streaming_table_ii.json examples/test_case_data/localmeta/kafka/test_streaming_table_ii.json index f678349..b6f18c7 100644 --- examples/test_case_data/localmeta/kafka/test_streaming_table_ii.json +++ examples/test_case_data/localmeta/kafka/test_streaming_table_ii.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-900c-4d39-bf89-8472ec909322", "name": "test_streaming_table_ii", "topic": "test_streaming_table_topic_xyz", diff --git examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json index a28684f..d908827 100644 --- examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json +++ examples/test_case_data/localmeta/model_desc/test_kylin_inner_join_model_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "ff527b94-f860-44c3-8452-93b17774c647", "name" : "test_kylin_inner_join_model_desc", "lookups" : [ { diff --git examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json index c26ffc5..cc413b2 100644 --- examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json +++ examples/test_case_data/localmeta/model_desc/test_kylin_left_join_model_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "9c0f4ee2-1ccb-4b07-a38e-4c298563e0f7", "name": "test_kylin_left_join_model_desc", "lookups": [ diff --git examples/test_case_data/localmeta/model_desc/test_streaming_table_model_desc.json examples/test_case_data/localmeta/model_desc/test_streaming_table_model_desc.json index f35a65e..e7392d6 100644 --- examples/test_case_data/localmeta/model_desc/test_streaming_table_model_desc.json +++ examples/test_case_data/localmeta/model_desc/test_streaming_table_model_desc.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "ff527b94-f860-44c3-8452-93b177888732", "name": "test_streaming_table_model_desc", "dimensions": [ diff --git examples/test_case_data/localmeta/project/default.json examples/test_case_data/localmeta/project/default.json index 6cf5747..8d138dd 100644 --- examples/test_case_data/localmeta/project/default.json +++ examples/test_case_data/localmeta/project/default.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "1eaca32a-a33e-4b69-83dd-0bb8b1f8c91b", "name": "default", "realizations": [ diff --git examples/test_case_data/localmeta/streaming/kafka_test.json examples/test_case_data/localmeta/streaming/kafka_test.json index 272abd9..a20f71e 100644 --- examples/test_case_data/localmeta/streaming/kafka_test.json +++ examples/test_case_data/localmeta/streaming/kafka_test.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-900c-4d39-bf89-8472ec6c3c0d", "name": "kafka_test", "topic": "kafka_stream_test", diff --git examples/test_case_data/localmeta/streaming/test_streaming_table_cube.json examples/test_case_data/localmeta/streaming/test_streaming_table_cube.json index b358183..ecf0511 100644 --- examples/test_case_data/localmeta/streaming/test_streaming_table_cube.json +++ examples/test_case_data/localmeta/streaming/test_streaming_table_cube.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-777c-4d39-bf89-8472ec909193", "name": "test_streaming_table_cube", "cubeName": "test_streaming_table_cube", diff --git examples/test_case_data/localmeta/streaming/test_streaming_table_ii.json examples/test_case_data/localmeta/streaming/test_streaming_table_ii.json index da1a765..022ab70 100644 --- examples/test_case_data/localmeta/streaming/test_streaming_table_ii.json +++ examples/test_case_data/localmeta/streaming/test_streaming_table_ii.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "8b2b9dfe-900c-4d39-bf89-8472ec909322", "name": "test_streaming_table_ii", "iiName": "test_streaming_table_ii", diff --git examples/test_case_data/localmeta/table/DEFAULT.STREAMING_TABLE.json examples/test_case_data/localmeta/table/DEFAULT.STREAMING_TABLE.json index c9a1f98..6030a5e 100644 --- examples/test_case_data/localmeta/table/DEFAULT.STREAMING_TABLE.json +++ examples/test_case_data/localmeta/table/DEFAULT.STREAMING_TABLE.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid": "e286e39e-40d7-44c2-8fa2-41b365123987", "name": "STREAMING_TABLE", "columns": [ diff --git examples/test_case_data/localmeta/table/DEFAULT.TEST_CATEGORY_GROUPINGS.json examples/test_case_data/localmeta/table/DEFAULT.TEST_CATEGORY_GROUPINGS.json index 7bcd092..6929203 100644 --- examples/test_case_data/localmeta/table/DEFAULT.TEST_CATEGORY_GROUPINGS.json +++ examples/test_case_data/localmeta/table/DEFAULT.TEST_CATEGORY_GROUPINGS.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "952d11b5-69d9-45d1-92af-227489485e3f", "name" : "TEST_CATEGORY_GROUPINGS", "columns" : [ { diff --git examples/test_case_data/localmeta/table/DEFAULT.TEST_KYLIN_FACT.json examples/test_case_data/localmeta/table/DEFAULT.TEST_KYLIN_FACT.json index 7e44205..2e227d6 100644 --- examples/test_case_data/localmeta/table/DEFAULT.TEST_KYLIN_FACT.json +++ examples/test_case_data/localmeta/table/DEFAULT.TEST_KYLIN_FACT.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "e286e39e-40d7-44c2-8fa2-41b365522771", "name" : "TEST_KYLIN_FACT", "columns" : [ { diff --git examples/test_case_data/localmeta/table/EDW.TEST_CAL_DT.json examples/test_case_data/localmeta/table/EDW.TEST_CAL_DT.json index 0ad7ee1..7d78673 100644 --- examples/test_case_data/localmeta/table/EDW.TEST_CAL_DT.json +++ examples/test_case_data/localmeta/table/EDW.TEST_CAL_DT.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "0ff420eb-79ad-40bd-bca9-12d8cd05c60a", "name" : "TEST_CAL_DT", "columns" : [ { diff --git examples/test_case_data/localmeta/table/EDW.TEST_SELLER_TYPE_DIM.json examples/test_case_data/localmeta/table/EDW.TEST_SELLER_TYPE_DIM.json index 42f4d9c..6bfd3c4 100644 --- examples/test_case_data/localmeta/table/EDW.TEST_SELLER_TYPE_DIM.json +++ examples/test_case_data/localmeta/table/EDW.TEST_SELLER_TYPE_DIM.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "9ecc90c4-55df-436f-8602-2fbd4bca72e1", "name" : "TEST_SELLER_TYPE_DIM", "columns" : [ { diff --git examples/test_case_data/localmeta/table/EDW.TEST_SITES.json examples/test_case_data/localmeta/table/EDW.TEST_SITES.json index d451e34..cab1edb 100644 --- examples/test_case_data/localmeta/table/EDW.TEST_SITES.json +++ examples/test_case_data/localmeta/table/EDW.TEST_SITES.json @@ -1,4 +1,5 @@ { + "version":"2.1", "uuid" : "338a3325-a947-46d1-9ece-e079b3b8d4a6", "name" : "TEST_SITES", "columns" : [ { diff --git invertedindex/src/main/java/org/apache/kylin/invertedindex/IIInstance.java invertedindex/src/main/java/org/apache/kylin/invertedindex/IIInstance.java index d85746e..117bc02 100644 --- invertedindex/src/main/java/org/apache/kylin/invertedindex/IIInstance.java +++ invertedindex/src/main/java/org/apache/kylin/invertedindex/IIInstance.java @@ -60,7 +60,7 @@ public class IIInstance extends RootPersistentEntity implements IRealization, IB iii.setDescName(iiDesc.getName()); iii.setCreateTimeUTC(System.currentTimeMillis()); iii.setStatus(RealizationStatusEnum.DISABLED); - iii.updateRandomUuid(); + iii.updateVersionAndRandomUuid(); return iii; } @@ -71,8 +71,6 @@ public class IIInstance extends RootPersistentEntity implements IRealization, IB private String name; @JsonProperty("owner") private String owner; - @JsonProperty("version") - private String version; // user info only, we don't do version control @JsonProperty("descriptor") private String descName; // Mark cube priority for query @@ -202,14 +200,6 @@ public class IIInstance extends RootPersistentEntity implements IRealization, IB this.owner = owner; } - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - public String getDescName() { return descName; } diff --git server/src/main/java/org/apache/kylin/rest/controller/CubeController.java server/src/main/java/org/apache/kylin/rest/controller/CubeController.java index 9afa750..4741cef 100644 --- server/src/main/java/org/apache/kylin/rest/controller/CubeController.java +++ server/src/main/java/org/apache/kylin/rest/controller/CubeController.java @@ -308,7 +308,7 @@ public class CubeController extends BasicController { isStreamingCube = true; newStreamingConfig = streamingConfigs.get(0).clone(); newStreamingConfig.setName(newCubeName + "_STREAMING"); - newStreamingConfig.updateRandomUuid(); + newStreamingConfig.updateVersionAndRandomUuid(); newStreamingConfig.setLastModified(0); newStreamingConfig.setCubeName(newCubeName); try { @@ -327,7 +327,7 @@ public class CubeController extends BasicController { newKafkaConfig = kafkaConfig.clone(); newKafkaConfig.setName(newStreamingConfig.getName()); newKafkaConfig.setLastModified(0); - newKafkaConfig.updateRandomUuid(); + newKafkaConfig.updateVersionAndRandomUuid(); } } catch (IOException e) { throw new InternalErrorException("Failed to get kafka config info. ", e); diff --git storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ExtendCubeToHybridCLI.java storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ExtendCubeToHybridCLI.java index c55bde4..1f46369 100644 --- storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ExtendCubeToHybridCLI.java +++ storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ExtendCubeToHybridCLI.java @@ -147,7 +147,7 @@ public class ExtendCubeToHybridCLI { CubeInstance newCubeInstance = CubeInstance.getCopyOf(cubeInstance); newCubeInstance.setName(newCubeInstanceName); newCubeInstance.setDescName(newCubeDescName); - newCubeInstance.updateRandomUuid(); + newCubeInstance.updateVersionAndRandomUuid(); Iterator segmentIterator = newCubeInstance.getSegments().iterator(); CubeSegment currentSeg = null; while (segmentIterator.hasNext()) { @@ -170,7 +170,7 @@ public class ExtendCubeToHybridCLI { // create new cube for old segments CubeDesc newCubeDesc = CubeDesc.getCopyOf(cubeDesc); newCubeDesc.setName(newCubeDescName); - newCubeDesc.updateRandomUuid(); + newCubeDesc.updateVersionAndRandomUuid(); newCubeDesc.init(kylinConfig, metadataManager.getAllTablesMap()); newCubeDesc.setPartitionDateEnd(partitionDate); newCubeDesc.calculateSignature();