minor refactor on metadata

Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b8ddd820
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b8ddd820
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b8ddd820

Branch: refs/heads/master
Commit: b8ddd820383881fedd6ea617874887e0b0b32734
Parents: 826788a
Author: Hongbin Ma <mahong...@apache.org>
Authored: Thu Dec 28 16:15:49 2017 +0800
Committer: Hongbin Ma <m...@kyligence.io>
Committed: Thu Dec 28 17:37:18 2017 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/StorageURLTest.java |  18 ++-
 .../common/util/AbstractKylinTestCase.java      |   4 +
 .../apache/kylin/metadata/model/ColumnDesc.java |   5 +-
 .../kylin/metadata/model/DataModelDesc.java     |  14 ++-
 .../kylin/metadata/model/DataModelManager.java  |   6 +-
 .../apache/kylin/metadata/model/JoinsTree.java  |  24 +++-
 .../metadata/model/tool/CalciteParser.java      |  37 ++++++
 .../kylin/metadata/model/JoinsTreeTest.java     |   2 +-
 .../kylin/model/tool/CalciteParserTest.java     | 122 -------------------
 .../apache/kylin/query/ITKylinQueryTest.java    |   2 +-
 .../org/apache/kylin/query/KylinTestBase.java   |   4 +
 .../test/resources/query/sql_limit/query01.sql  |   2 +-
 .../test/resources/query/sql_limit/query03.sql  |   6 +-
 .../apache/kylin/rest/request/ModelRequest.java |   8 ++
 .../apache/kylin/rest/service/ModelService.java |   5 +-
 .../kylin/rest/util/Log4jConfigListener.java    |   1 +
 16 files changed, 121 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-common/src/test/java/org/apache/kylin/common/StorageURLTest.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/test/java/org/apache/kylin/common/StorageURLTest.java 
b/core-common/src/test/java/org/apache/kylin/common/StorageURLTest.java
index eaa7548..643cc30 100644
--- a/core-common/src/test/java/org/apache/kylin/common/StorageURLTest.java
+++ b/core-common/src/test/java/org/apache/kylin/common/StorageURLTest.java
@@ -63,7 +63,23 @@ public class StorageURLTest {
     }
 
     @Test
+    public void testHDFS() {
+        {
+            StorageURL id = new StorageURL(
+                    
"master_ci_instance@hdfs,path=hdfs://sandbox.hortonworks.com:8020/kylin/master_ci_instance/metadata/f112fe00-6f99-4f8e-b075-d57c08501106");
+
+            assertEquals("master_ci_instance", id.getIdentifier());
+            assertEquals("hdfs", id.getScheme());
+            assertEquals(1, id.getAllParameters().size());
+            assertEquals(
+                    
"master_ci_instance@hdfs,path=hdfs://sandbox.hortonworks.com:8020/kylin/master_ci_instance/metadata/f112fe00-6f99-4f8e-b075-d57c08501106",
+                    id.toString());
+        }
+    }
+
+    @Test
     public void testEdgeCases() {
+
         {
             StorageURL id = new StorageURL("");
             assertEquals("kylin_metadata", id.getIdentifier());
@@ -87,7 +103,7 @@ public class StorageURLTest {
             assertEquals("hello@hbase,a", id.toString());
         }
     }
-    
+
     @Test
     public void testValueOfCache() {
         StorageURL id1 = StorageURL.valueOf("hello@hbase");

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
 
b/core-common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
index 37790d2..7cbf5b6 100644
--- 
a/core-common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
+++ 
b/core-common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
@@ -26,6 +26,10 @@ import org.apache.kylin.common.KylinConfig;
  */
 public abstract class AbstractKylinTestCase {
 
+    static {
+        System.setProperty("needCheckCC", "true");
+    }
+
     public abstract void createTestMetadata(String... overlayMetadataDirs) 
throws Exception;
 
     public abstract void cleanupTestMetadata() throws Exception;

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/main/java/org/apache/kylin/metadata/model/ColumnDesc.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ColumnDesc.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ColumnDesc.java
index 03c89c3..b8de534 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ColumnDesc.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ColumnDesc.java
@@ -57,6 +57,10 @@ public class ColumnDesc implements Serializable {
     @JsonInclude(JsonInclude.Include.NON_NULL)
     private String index;
 
+    @JsonProperty("cc_expr")
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private String computedColumnExpr = null;//if null, it's not a computed 
column
+
     // parsed from data type
     private DataType type;
 
@@ -65,7 +69,6 @@ public class ColumnDesc implements Serializable {
     private boolean isNullable = true;
 
     private TblColRef ref;
-    private String computedColumnExpr = null;//if null, it's not a computed 
column
 
     public ColumnDesc() { // default constructor for Jackson
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
index 4dd4399..21175ba 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
@@ -124,7 +124,7 @@ public class DataModelDesc extends RootPersistentEntity {
     public KylinConfig getConfig() {
         return config;
     }
-    
+
     @Override
     public String resourceName() {
         return name;
@@ -338,8 +338,16 @@ public class DataModelDesc extends RootPersistentEntity {
         throw new IllegalArgumentException("Table not found by " + 
tableIdentity + " in model " + name);
     }
 
+    /**
+     * @param isOnlineModel will affect the exposed view of project specific 
tables
+     */
     public void init(KylinConfig config, Map<String, TableDesc> tables, 
List<DataModelDesc> otherModels,
             boolean isOnlineModel) {
+        initInternal(config, tables, otherModels, isOnlineModel);
+    }
+
+    public void initInternal(KylinConfig config, Map<String, TableDesc> 
tables, List<DataModelDesc> otherModels,
+            boolean isOnlineModel) {
         this.config = config;
 
         initJoinTablesForUpgrade();
@@ -353,7 +361,7 @@ public class DataModelDesc extends RootPersistentEntity {
 
         boolean reinit = validate();
         if (reinit) { // model slightly changed by validate() and must init() 
again
-            init(config, tables, otherModels, isOnlineModel);
+            initInternal(config, tables, otherModels, isOnlineModel);
         }
     }
 
@@ -615,7 +623,7 @@ public class DataModelDesc extends RootPersistentEntity {
 
         // validate PK/FK are in dimensions
         boolean pkfkDimAmended = false;
-        for (Chain chain : joinsTree.tableChains.values()) {
+        for (Chain chain : joinsTree.getTableChains().values()) {
             pkfkDimAmended = validatePkFkDim(chain.join, mcols) || 
pkfkDimAmended;
         }
         return pkfkDimAmended;

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelManager.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelManager.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelManager.java
index c06a31b..a83f2c3 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelManager.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelManager.java
@@ -88,7 +88,7 @@ public class DataModelManager {
             protected DataModelDesc initEntityAfterReload(DataModelDesc model, 
String resourceName) {
                 String prj = 
ProjectManager.getInstance(config).getProjectOfModel(model.getName()).getName();
                 if (!model.isDraft()) {
-                    model.init(config, getAllTablesMap(prj), listDataModels(), 
true);
+                    model.init(config, getAllTablesMap(prj), getModels(prj), 
true);
                 }
                 return model;
             }
@@ -182,7 +182,7 @@ public class DataModelManager {
                     if (null != model) {
                         ret.add(model);
                     } else {
-                        logger.error("Failed to load model " + modelName);
+                        logger.info("Model " + modelName + " is missing or 
unloaded yet");
                     }
                 }
             }
@@ -274,7 +274,7 @@ public class DataModelManager {
         String prj = 
ProjectManager.getInstance(config).getProjectOfModel(dataModelDesc.getName()).getName();
 
         if (!dataModelDesc.isDraft())
-            dataModelDesc.init(config, this.getAllTablesMap(prj), 
listDataModels(), true);
+            dataModelDesc.init(config, this.getAllTablesMap(prj), 
getModels(prj), false);
 
         crud.save(dataModelDesc);
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
index 2ee2b34..d86a74a 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
@@ -24,15 +24,17 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 public class JoinsTree implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final IJoinDescMatcher DEFAULT_JOINDESC_MATCHER = new 
DefaultJoinDescMatcher();
 
-    final Map<String, Chain> tableChains = new LinkedHashMap<>();
+    private Map<String, Chain> tableChains = new LinkedHashMap<>();
     private IJoinDescMatcher joinDescMatcher = DEFAULT_JOINDESC_MATCHER;
 
     public JoinsTree(TableRef rootTable, List<JoinDesc> joins) {
@@ -51,6 +53,10 @@ public class JoinsTree implements Serializable {
         }
     }
 
+    public JoinsTree(Map<String, Chain> tableChains) {
+        this.tableChains = tableChains;
+    }
+
     public Map<String, String> matches(JoinsTree another) {
         return matches(another, Collections.<String, String> emptyMap());
     }
@@ -147,6 +153,22 @@ public class JoinsTree implements Serializable {
         this.joinDescMatcher = joinDescMatcher;
     }
 
+    public JoinsTree getSubgraphByAlias(Set<String> aliases) {
+        Map<String, Chain> subgraph = Maps.newHashMap();
+        for (String alias : aliases) {
+            Chain chain = tableChains.get(alias);
+            if (chain == null)
+                throw new IllegalArgumentException("Table with alias " + alias 
+ " is not found");
+
+            while (chain.getFkSide() != null) {
+                subgraph.put(chain.table.getAlias(), chain);
+                chain = chain.getFkSide();
+            }
+            subgraph.put(chain.table.getAlias(), chain);
+        }
+        return new JoinsTree(subgraph);
+    }
+
     public static class Chain implements Serializable {
         private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/main/java/org/apache/kylin/metadata/model/tool/CalciteParser.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/tool/CalciteParser.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/tool/CalciteParser.java
index 4ae0849..d48100c 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/tool/CalciteParser.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/tool/CalciteParser.java
@@ -21,6 +21,7 @@ package org.apache.kylin.metadata.model.tool;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.calcite.sql.SqlIdentifier;
@@ -184,4 +185,40 @@ public class CalciteParser {
         }
         return Pair.newPair(left, right);
     }
+
+    public static String replaceAliasInExpr(String expr, Map<String, String> 
renaming) {
+        String prefix = "select ";
+        String suffix = " from t";
+        String sql = prefix + expr + suffix;
+        SqlNode sqlNode = CalciteParser.getOnlySelectNode(sql);
+
+        final Set<SqlIdentifier> s = Sets.newHashSet();
+        SqlVisitor sqlVisitor = new SqlBasicVisitor() {
+            @Override
+            public Object visit(SqlIdentifier id) {
+                Preconditions.checkState(id.names.size() == 2);
+                s.add(id);
+                return null;
+            }
+        };
+
+        sqlNode.accept(sqlVisitor);
+        List<SqlIdentifier> sqlIdentifiers = Lists.newArrayList(s);
+
+        CalciteParser.descSortByPosition(sqlIdentifiers);
+
+        for (SqlIdentifier sqlIdentifier : sqlIdentifiers) {
+            Pair<Integer, Integer> replacePos = 
CalciteParser.getReplacePos(sqlIdentifier, sql);
+            int start = replacePos.getFirst();
+            int end = replacePos.getSecond();
+            String aliasInExpr = sqlIdentifier.names.get(0);
+            String col = sqlIdentifier.names.get(1);
+            String renamedAlias = renaming.get(aliasInExpr);
+            Preconditions.checkNotNull(renamedAlias,
+                    "rename for alias " + aliasInExpr + " in expr (" + expr + 
") is not found");
+            sql = sql.substring(0, start) + renamedAlias + "." + col + 
sql.substring(end);
+        }
+
+        return sql.substring(prefix.length(), sql.length() - suffix.length());
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/test/java/org/apache/kylin/metadata/model/JoinsTreeTest.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/test/java/org/apache/kylin/metadata/model/JoinsTreeTest.java
 
b/core-metadata/src/test/java/org/apache/kylin/metadata/model/JoinsTreeTest.java
index 85ddb13..e00f5c3 100644
--- 
a/core-metadata/src/test/java/org/apache/kylin/metadata/model/JoinsTreeTest.java
+++ 
b/core-metadata/src/test/java/org/apache/kylin/metadata/model/JoinsTreeTest.java
@@ -50,7 +50,7 @@ public class JoinsTreeTest extends LocalFileMetadataTestCase {
         DataModelDesc model = mgr.getDataModelDesc("ci_left_join_model");
         JoinsTree joinsTree = model.getJoinsTree();
         
-        Chain chain = joinsTree.tableChains.get("BUYER_COUNTRY");
+        Chain chain = joinsTree.getTableChains().get("BUYER_COUNTRY");
         assertTrue(chain.table == model.findTable("BUYER_COUNTRY"));
         assertTrue(chain.fkSide.table == model.findTable("BUYER_ACCOUNT"));
         assertTrue(chain.fkSide.fkSide.table == model.findTable("TEST_ORDER"));

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/core-metadata/src/test/java/org/apache/kylin/model/tool/CalciteParserTest.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/test/java/org/apache/kylin/model/tool/CalciteParserTest.java
 
b/core-metadata/src/test/java/org/apache/kylin/model/tool/CalciteParserTest.java
deleted file mode 100644
index 2c42ef3..0000000
--- 
a/core-metadata/src/test/java/org/apache/kylin/model/tool/CalciteParserTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.model.tool;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.SqlSelect;
-import org.apache.calcite.sql.parser.SqlParseException;
-import org.apache.kylin.common.util.Pair;
-import org.apache.kylin.metadata.model.tool.CalciteParser;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import com.google.common.base.Preconditions;
-
-public class CalciteParserTest {
-
-    @Rule
-    public final ExpectedException exception = ExpectedException.none();
-
-    @Test
-    public void testNoTableNameExists() throws SqlParseException {
-        String expr1 = "a + b";
-        assertEquals("x.a + x.b", CalciteParser.insertAliasInExpr(expr1, "x"));
-
-        String expr2 = "a + year(b)";
-        assertEquals("x.a + year(x.b)", CalciteParser.insertAliasInExpr(expr2, 
"x"));
-
-        String expr3 = "a + hiveudf(b)";
-        assertEquals("x.a + hiveudf(x.b)", 
CalciteParser.insertAliasInExpr(expr3, "x"));
-    }
-
-    @Test
-    public void testTableNameExists1() throws SqlParseException {
-        String expr1 = "a + x.b";
-
-        exception.expect(IllegalArgumentException.class);
-        exception.expectMessage("SqlIdentifier X.B contains DB/Table name");
-        CalciteParser.insertAliasInExpr(expr1, "x");
-    }
-
-    @Test
-    public void testTableNameExists2() throws SqlParseException {
-        String expr1 = "a + year(x.b)";
-
-        exception.expect(IllegalArgumentException.class);
-        exception.expectMessage("SqlIdentifier X.B contains DB/Table name");
-        CalciteParser.insertAliasInExpr(expr1, "x");
-    }
-
-    @Test
-    public void testTableNameExists3() throws SqlParseException {
-        String expr1 = "a + hiveudf(x.b)";
-
-        exception.expect(IllegalArgumentException.class);
-        exception.expectMessage("SqlIdentifier X.B contains DB/Table name");
-        CalciteParser.insertAliasInExpr(expr1, "x");
-    }
-
-    @Test
-    public void testCasewhen() {
-        String expr = "(CASE LSTG_FORMAT_NAME  WHEN 'Auction' THEN 'x'  WHEN 
'y' THEN '222' ELSE 'z' END)";
-        String alias = "TEST_KYLIN_FACT";
-        String s = CalciteParser.insertAliasInExpr(expr, alias);
-        System.out.println(s);
-        assertEquals(
-                "(CASE TEST_KYLIN_FACT.LSTG_FORMAT_NAME  WHEN 'Auction' THEN 
'x'  WHEN 'y' THEN '222' ELSE 'z' END)",
-                s);
-    }
-
-    @Test
-    public void testPos() throws SqlParseException {
-        String[] sqls = new String[] { "select \n a \n + \n b \n from t", //
-                "select\na\n+\nb\nfrom t", //
-                "select \r\n a \r\n + \r\n b \r\n from t", //
-                "select\r\na\r\n+\r\nb\r\nfrom t" };
-
-        for (String sql : sqls) {
-            SqlNode parse = ((SqlSelect) 
CalciteParser.parse(sql)).getSelectList().get(0);
-            Pair<Integer, Integer> replacePos = 
CalciteParser.getReplacePos(parse, sql);
-            String substring = sql.substring(replacePos.getFirst(), 
replacePos.getSecond());
-            Preconditions.checkArgument(substring.startsWith("a"));
-            Preconditions.checkArgument(substring.endsWith("b"));
-        }
-
-    }
-
-
-    @Test
-    public void testPosWithBrackets() throws SqlParseException {
-        String[] sqls = new String[] {
-                "select (   a + b) * (c+ d     ) from t", "select (a+b) * 
(c+d) from t",
-                "select (a + b) * (c+ d) from t", "select (a+b) * (c+d) from 
t",
-        };
-
-        for (String sql : sqls) {
-            SqlNode parse = ((SqlSelect) 
CalciteParser.parse(sql)).getSelectList().get(0);
-            Pair<Integer, Integer> replacePos = 
CalciteParser.getReplacePos(parse, sql);
-            String substring = sql.substring(replacePos.getFirst(), 
replacePos.getSecond());
-            Preconditions.checkArgument(substring.startsWith("("));
-            Preconditions.checkArgument(substring.endsWith(")"));
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
----------------------------------------------------------------------
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java 
b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
index 6dfdeb5..4edfb3d 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/ITKylinQueryTest.java
@@ -137,7 +137,7 @@ public class ITKylinQueryTest extends KylinTestBase {
     public void testSingleRunQuery() throws Exception {
         System.setProperty("log4j.configuration", 
"file:../build/conf/kylin-tools-log4j.properties");
 
-        String queryFileName = getQueryFolderPrefix() + 
"src/test/resources/query/sql_verifyCount/query03.sql";
+        String queryFileName = getQueryFolderPrefix() + 
"src/test/resources/query/sql_verifyCount/query02.sql";
 
         File sqlFile = new File(queryFileName);
         if (sqlFile.exists()) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java 
b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
index c735b55..2c5b556 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
@@ -77,6 +77,10 @@ import com.google.common.io.Files;
  */
 public class KylinTestBase {
 
+    static {
+        System.setProperty("needCheckCC", "true");
+    }
+
     private static final Logger logger = 
LoggerFactory.getLogger(KylinTestBase.class);
     public static boolean PRINT_RESULT = false;
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/kylin-it/src/test/resources/query/sql_limit/query01.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_limit/query01.sql 
b/kylin-it/src/test/resources/query/sql_limit/query01.sql
index 0752165..57ff062 100644
--- a/kylin-it/src/test/resources/query/sql_limit/query01.sql
+++ b/kylin-it/src/test/resources/query/sql_limit/query01.sql
@@ -19,7 +19,7 @@
 select
     *
 from test_kylin_fact
-    inner join TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
+    left join TEST_CATEGORY_GROUPINGS as TEST_CATEGORY_GROUPINGS
     ON TEST_KYLIN_FACT.LEAF_CATEG_ID = TEST_CATEGORY_GROUPINGS.LEAF_CATEG_ID 
AND TEST_KYLIN_FACT.LSTG_SITE_ID = TEST_CATEGORY_GROUPINGS.SITE_ID
 where lstg_format_name='FP-GTC' 
 limit 20

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/kylin-it/src/test/resources/query/sql_limit/query03.sql
----------------------------------------------------------------------
diff --git a/kylin-it/src/test/resources/query/sql_limit/query03.sql 
b/kylin-it/src/test/resources/query/sql_limit/query03.sql
index 765d8a1..2f18b89 100644
--- a/kylin-it/src/test/resources/query/sql_limit/query03.sql
+++ b/kylin-it/src/test/resources/query/sql_limit/query03.sql
@@ -19,11 +19,11 @@
 SELECT 
  test_kylin_fact.cal_dt , sum(test_kylin_fact.price) as GMV, count(*) as 
TRANS_CNT 
  FROM test_kylin_fact 
- inner JOIN edw.test_cal_dt as test_cal_dt 
+ left JOIN edw.test_cal_dt as test_cal_dt 
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt 
- inner JOIN test_category_groupings 
+ left JOIN test_category_groupings 
  ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND 
test_kylin_fact.lstg_site_id = test_category_groupings.site_id 
- inner JOIN edw.test_sites as test_sites 
+ left JOIN edw.test_sites as test_sites 
  ON test_kylin_fact.lstg_site_id = test_sites.site_id 
  where test_kylin_fact.seller_id = 10000002 + 4 
  

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/server-base/src/main/java/org/apache/kylin/rest/request/ModelRequest.java
----------------------------------------------------------------------
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/request/ModelRequest.java 
b/server-base/src/main/java/org/apache/kylin/rest/request/ModelRequest.java
index dc8e06e..5f07997 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/request/ModelRequest.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/request/ModelRequest.java
@@ -26,6 +26,7 @@ public class ModelRequest {
     private boolean successful;
     private String message;
     private String project;
+    private boolean isSeekingExprAdvice;
 
     public String getUuid() {
         return uuid;
@@ -104,4 +105,11 @@ public class ModelRequest {
         this.project = project;
     }
 
+    public boolean isSeekingExprAdvice() {
+        return isSeekingExprAdvice;
+    }
+
+    public void setIsSeekingExprAdvice(boolean seekingExprAdvice) {
+        isSeekingExprAdvice = seekingExprAdvice;
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
----------------------------------------------------------------------
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
index 3fa40a5..600c901 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java
@@ -288,11 +288,11 @@ public class ModelService extends BasicService {
         String modelName = dataModelDesc.getName();
         List<CubeInstance> cubes = cubeService.listAllCubes(null, project, 
modelName, true);
         List<DataModelDesc> historyModels = listAllModels(modelName, project, 
true);
-        
+
         StringBuilder checkRet = new StringBuilder();
         if (cubes != null && cubes.size() != 0 && !historyModels.isEmpty()) {
             dataModelDesc.init(getConfig(), 
getTableManager().getAllTablesMap(project),
-                    getDataModelManager().listDataModels(), false);
+                    getDataModelManager().getModels(project), false);
 
             List<String> curModelDims = getModelCols(dataModelDesc);
             List<String> curModelMeasures = getModelMeasures(dataModelDesc);
@@ -352,6 +352,7 @@ public class ModelService extends BasicService {
     }
 
     public DataModelDesc updateModelToResourceStore(DataModelDesc modelDesc, 
String projectName) throws IOException {
+
         aclEvaluate.checkProjectWritePermission(projectName);
         Message msg = MsgPicker.getMsg();
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/b8ddd820/server-base/src/main/java/org/apache/kylin/rest/util/Log4jConfigListener.java
----------------------------------------------------------------------
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/util/Log4jConfigListener.java 
b/server-base/src/main/java/org/apache/kylin/rest/util/Log4jConfigListener.java
index 3dde9cf..13eca74 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/util/Log4jConfigListener.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/util/Log4jConfigListener.java
@@ -36,6 +36,7 @@ public class Log4jConfigListener extends 
org.springframework.web.util.Log4jConfi
             super.contextInitialized(event);
         }
         System.setProperty("needCheckCC", "true");
+
     }
 
     @Override

Reply via email to