You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/11/17 08:49:49 UTC

[1/3] kylin git commit: KYLIN-2201 fix combination check overflow error

Repository: kylin
Updated Branches:
  refs/heads/yang21 ac4e9ec56 -> d87b7a512


KYLIN-2201 fix combination check overflow error

Signed-off-by: Hongbin Ma <ma...@apache.org>


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

Branch: refs/heads/yang21
Commit: 9bd6a2ab6b5fd8f11a80198012a519bfe4edac08
Parents: 02e723a
Author: Roger Shi <ro...@hotmail.com>
Authored: Thu Nov 17 11:07:17 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Nov 17 11:50:09 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/cube/model/CubeDesc.java   |   6 +-
 .../kylin/cube/AggregationGroupRuleTest.java    |  11 +
 .../org/apache/kylin/cube/CubeDescTest.java     |   7 +
 .../ut_cube_desc_combination_int_overflow.json  | 398 +++++++++++++++++++
 4 files changed, 419 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/9bd6a2ab/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
index 4195451..c914ebb 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
@@ -580,7 +580,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
                 throw new IllegalStateException("Aggregation group " + index + " select rule field not set");
             }
 
-            int combination = 1;
+            long combination = 1;
             Set<String> includeDims = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
             getDims(includeDims, agg.getIncludes());
 
@@ -598,7 +598,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
             Set<String> jointDims = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
             getDims(jointDimsList, jointDims, agg.getSelectRule().joint_dims);
             if (jointDimsList.size() > 0) {
-                combination = combination * (1 << jointDimsList.size());
+                combination = combination * (1L << jointDimsList.size());
             }
 
             if (!includeDims.containsAll(mandatoryDims) || !includeDims.containsAll(hierarchyDims) || !includeDims.containsAll(jointDims)) {
@@ -612,7 +612,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
             normalDims.removeAll(hierarchyDims);
             normalDims.removeAll(jointDims);
 
-            combination = combination * (1 << normalDims.size());
+            combination = combination * (1L << normalDims.size());
 
             if (combination > config.getCubeAggrGroupMaxCombination()) {
                 String msg = "Aggregation group " + index + " has too many combinations, use 'mandatory'/'hierarchy'/'joint' to optimize; or update 'kylin.cube.aggrgroup.max.combination' to a bigger value.";

http://git-wip-us.apache.org/repos/asf/kylin/blob/9bd6a2ab/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java b/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java
index 6c3d544..7fea440 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/AggregationGroupRuleTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Arrays;
 
@@ -115,6 +116,16 @@ public class AggregationGroupRuleTest {
         assertEquals("Aggregation group 0 joint columns overlap with more than 1 dim in same hierarchy", (vContext.getResults()[0].getMessage()));
     }
 
+    @Test
+    public void testCombinationIntOverflow() throws IOException {
+        ValidateContext vContext = new ValidateContext();
+        CubeDesc desc = JsonUtil.readValue(new FileInputStream(LocalFileMetadataTestCase.LOCALMETA_TEST_DATA + "/cube_desc/ut_cube_desc_combination_int_overflow.json"), CubeDesc.class);
+
+        IValidatorRule<CubeDesc> rule = getAggregationGroupRule();
+        rule.validate(desc, vContext);
+        assertEquals(1, vContext.getResults().length);
+    }
+
     public AggregationGroupRule getAggregationGroupRule() {
         AggregationGroupRule rule = new AggregationGroupRule() {
             @Override

http://git-wip-us.apache.org/repos/asf/kylin/blob/9bd6a2ab/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java b/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java
index 98cff43..597121b 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/CubeDescTest.java
@@ -194,6 +194,13 @@ public class CubeDescTest extends LocalFileMetadataTestCase {
     }
 
     @Test
+    public void testCombinationIntOverflow() throws  Exception {
+        thrown.expect(IllegalStateException.class);
+        CubeDesc cubeDesc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("ut_cube_desc_combination_int_overflow");
+        cubeDesc.init(getTestConfig());
+    }
+
+    @Test
     public void testSerialize() throws Exception {
         CubeDesc desc = CubeDescManager.getInstance(getTestConfig()).getCubeDesc("test_kylin_cube_with_slr_desc");
         String str = JsonUtil.writeValueAsIndentString(desc);

http://git-wip-us.apache.org/repos/asf/kylin/blob/9bd6a2ab/examples/test_case_data/localmeta/cube_desc/ut_cube_desc_combination_int_overflow.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube_desc/ut_cube_desc_combination_int_overflow.json b/examples/test_case_data/localmeta/cube_desc/ut_cube_desc_combination_int_overflow.json
new file mode 100644
index 0000000..ec6f8f4
--- /dev/null
+++ b/examples/test_case_data/localmeta/cube_desc/ut_cube_desc_combination_int_overflow.json
@@ -0,0 +1,398 @@
+{
+  "uuid" : "9e89e128-f13e-4209-82d2-973985114793",
+  "last_modified" : 1479207711845,
+  "name" : "ut_cube_desc_combination_int_overflow",
+  "model_name" : "ut_large_dimension_number",
+  "description" : "",
+  "null_string" : null,
+  "dimensions" : [ {
+    "name" : "DEFAULT.WIDE_TABLE.A",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "A",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.B",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "B",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.C",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "C",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.D",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "D",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.E",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "E",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.F",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "F",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.G",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "G",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.H",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "H",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.I",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "I",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.J",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "J",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.K",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "K",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.L",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "L",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.M",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "M",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.N",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "N",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.O",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "O",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.P",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "P",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Q",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Q",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.R",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "R",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.S",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "S",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.T",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "T",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.U",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "U",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.V",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "V",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.W",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "W",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.X",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "X",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Y",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Y",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Z",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Z",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AA",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AA",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AB",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AB",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AC",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AC",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AD",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AD",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AE",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AE",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AF",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AF",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AG",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AG",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AH",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AH",
+    "derived" : null
+  } ],
+  "measures" : [ {
+    "name" : "_COUNT_",
+    "function" : {
+      "expression" : "COUNT",
+      "parameter" : {
+        "type" : "constant",
+        "value" : "1",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  } ],
+  "dictionaries" : [ ],
+  "rowkey" : {
+    "rowkey_columns" : [ {
+      "column" : "A",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "B",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "C",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "D",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "E",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "F",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "G",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "H",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "I",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "J",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "K",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "L",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "M",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "N",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "O",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "P",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Q",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "R",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "S",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "T",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "U",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "V",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "W",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "X",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Y",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Z",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AA",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AB",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AC",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AD",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AE",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AF",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AG",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AH",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }]
+  },
+  "hbase_mapping" : {
+    "column_family" : [ {
+      "name" : "F1",
+      "columns" : [ {
+        "qualifier" : "M",
+        "measure_refs" : [ "_COUNT_" ]
+      } ]
+    } ]
+  },
+  "aggregation_groups" : [ {
+    "includes" : [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH"],
+    "select_rule" : {
+      "hierarchy_dims" : [ ],
+      "mandatory_dims" : [ ],
+      "joint_dims" : [ ]
+    }
+  }],
+  "signature" : "4NqJVcVIYRF5PkJ0jS+9Rg==",
+  "notify_list" : [ ],
+  "status_need_notify" : [ "ERROR", "DISCARDED", "SUCCEED" ],
+  "partition_date_start" : 1469923200000,
+  "partition_date_end" : 3153600000000,
+  "auto_merge_time_ranges" : [ 604800000, 2419200000 ],
+  "retention_range" : 0,
+  "engine_type" : 100,
+  "storage_type" : 100,
+  "override_kylin_properties" : {
+    "kylin.cube.algorithm" : "auto",
+    "kylin.cube.aggrgroup.max.combination" : "4096",
+    "kylin.job.cubing.inmem.sampling.percent" : "100",
+    "kylin.hbase.default.compression.codec" : "none"
+  }
+}
\ No newline at end of file


[3/3] kylin git commit: KYLIN-2199 bug fix

Posted by ma...@apache.org.
KYLIN-2199 bug fix


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

Branch: refs/heads/yang21
Commit: d87b7a51282ffb2e678af65c20b5a395a2347d49
Parents: 9bd6a2a
Author: Hongbin Ma <ma...@apache.org>
Authored: Thu Nov 17 16:46:59 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Nov 17 16:48:53 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/dimension/DimensionEncodingFactory.java   | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/d87b7a51/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java b/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
index 242e003..b617a19 100644
--- a/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
+++ b/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
@@ -73,6 +73,12 @@ public abstract class DimensionEncodingFactory {
 
         Map<String, Integer> result = Maps.newHashMap();
         for (Pair<String, Integer> p : factoryMap.keySet()) {
+            if (result.containsKey(p.getFirst())) {
+                if (result.get(p.getFirst()) > p.getSecond()) {
+                    continue;//skip small versions
+                }
+            }
+
             result.put(p.getFirst(), p.getSecond());
         }
         result.put(DictionaryDimEnc.ENCODING_NAME, 1);


[2/3] kylin git commit: KYLIN-2197 fix gg group buildMandatoryColumnMask

Posted by ma...@apache.org.
KYLIN-2197 fix gg group buildMandatoryColumnMask

Signed-off-by: Hongbin Ma <ma...@apache.org>


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

Branch: refs/heads/yang21
Commit: 02e723ae0c40847517c8e8c195cb723a5d70d275
Parents: ac4e9ec
Author: Li Yang <li...@apache.org>
Authored: Wed Nov 16 13:33:08 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Nov 17 11:50:09 2016 +0800

----------------------------------------------------------------------
 .../kylin/cube/model/AggregationGroup.java      |   2 +-
 .../kylin/cube/cuboid/CuboidSchedulerTest.java  |  13 +
 .../cube_desc/ut_large_dimension_number.json    | 585 +++++++++++++++++++
 .../model_desc/ut_large_dimension_number.json   |  26 +
 .../localmeta/table/DEFAULT.WIDE_TABLE.json     | 217 +++++++
 5 files changed, 842 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/02e723ae/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java b/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java
index 5f780d0..c7924c7 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/AggregationGroup.java
@@ -124,7 +124,7 @@ public class AggregationGroup {
         for (String dim : mandatory_dims) {
             TblColRef hColumn = colNameAbbr.get(dim);
             Integer index = rowKeyDesc.getColumnBitIndex(hColumn);
-            mandatoryColumnMask |= 1 << index;
+            mandatoryColumnMask |= (1L << index);
         }
 
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/02e723ae/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
index ecb1200..bdceb0f 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.fail;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.kylin.common.util.LocalFileMetadataTestCase;
 import org.apache.kylin.cube.CubeDescManager;
@@ -283,6 +284,18 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase {
         assertEquals(cuboidScheduler.getCuboidCount(), sum);
     }
 
+    @Test
+    public void testCuboid_onlyBaseCuboid() {
+        CubeDesc cube = getCubeDescManager().getCubeDesc("ut_large_dimension_number");
+        CuboidScheduler scheduler = new CuboidScheduler(cube);
+        
+        Cuboid baseCuboid = Cuboid.getBaseCuboid(cube);
+        assertTrue(Cuboid.isValid(cube, baseCuboid.getId()));
+        
+        List<Long> spanningChild = scheduler.getSpanningCuboid(baseCuboid.getId());
+        assertTrue(spanningChild.size() > 0);
+    }
+
     public CubeDescManager getCubeDescManager() {
         return CubeDescManager.getInstance(getTestConfig());
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/02e723ae/examples/test_case_data/localmeta/cube_desc/ut_large_dimension_number.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube_desc/ut_large_dimension_number.json b/examples/test_case_data/localmeta/cube_desc/ut_large_dimension_number.json
new file mode 100644
index 0000000..c0e8568
--- /dev/null
+++ b/examples/test_case_data/localmeta/cube_desc/ut_large_dimension_number.json
@@ -0,0 +1,585 @@
+{
+  "uuid" : "9e89e128-f13e-4209-82d2-973985114793",
+  "last_modified" : 1479207711845,
+  "name" : "ut_large_dimension_number",
+  "model_name" : "ut_large_dimension_number",
+  "description" : "",
+  "null_string" : null,
+  "dimensions" : [ {
+    "name" : "DEFAULT.WIDE_TABLE.A",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "A",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.B",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "B",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.C",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "C",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.D",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "D",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.E",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "E",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.F",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "F",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.G",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "G",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.H",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "H",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.I",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "I",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.J",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "J",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.K",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "K",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.L",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "L",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.M",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "M",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.N",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "N",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.O",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "O",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.P",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "P",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Q",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Q",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.R",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "R",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.S",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "S",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.T",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "T",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.U",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "U",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.V",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "V",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.W",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "W",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.X",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "X",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Y",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Y",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.Z",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "Z",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AA",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AA",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AB",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AB",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AC",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AC",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AD",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AD",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AE",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AE",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AF",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AF",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AG",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AG",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AH",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AH",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AI",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AI",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AJ",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AJ",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AK",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AK",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AL",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AL",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AM",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AM",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AN",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AN",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AO",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AO",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AP",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AP",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AQ",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AQ",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AR",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AR",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AS",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AS",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AT",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AT",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AU",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AU",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AV",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AV",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AW",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AW",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AX",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AX",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AY",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AY",
+    "derived" : null
+  },{
+    "name" : "DEFAULT.WIDE_TABLE.AZ",
+    "table" : "DEFAULT.WIDE_TABLE",
+    "column" : "AZ",
+    "derived" : null
+  } ],
+  "measures" : [ {
+    "name" : "_COUNT_",
+    "function" : {
+      "expression" : "COUNT",
+      "parameter" : {
+        "type" : "constant",
+        "value" : "1",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  } ],
+  "dictionaries" : [ ],
+  "rowkey" : {
+    "rowkey_columns" : [ {
+      "column" : "A",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "B",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "C",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "D",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "E",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "F",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "G",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "H",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "I",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "J",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "K",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "L",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "M",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "N",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "O",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "P",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Q",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "R",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "S",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "T",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "U",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "V",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "W",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "X",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Y",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "Z",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AA",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AB",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AC",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AD",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AE",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AF",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AG",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AH",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AI",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AJ",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AK",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AL",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AM",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AN",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AO",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AP",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AQ",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AR",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AS",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AT",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    }, {
+      "column" : "AU",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    },{
+      "column" : "AV",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    },{
+      "column" : "AW",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    },{
+      "column" : "AX",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    },{
+      "column" : "AY",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    },{
+      "column" : "AZ",
+      "encoding" : "dict",
+      "isShardBy" : false,
+      "index" : "eq"
+    } ]
+  },
+  "hbase_mapping" : {
+    "column_family" : [ {
+      "name" : "F1",
+      "columns" : [ {
+        "qualifier" : "M",
+        "measure_refs" : [ "_COUNT_" ]
+      } ]
+    } ]
+  },
+  "aggregation_groups" : [ {
+    "includes" : [ "A", "B", "C", "D", "E" ],
+    "select_rule" : {
+      "hierarchy_dims" : [ ],
+      "mandatory_dims" : [ ],
+      "joint_dims" : [ ]
+    }
+  }, {
+    "includes" : [ "F", "G", "H", "I", "J", "K", "L", "M" ],
+    "select_rule" : {
+      "hierarchy_dims" : [ ],
+      "mandatory_dims" : [ "F" ],
+      "joint_dims" : [ ]
+    }
+  } ],
+  "signature" : "4NqJVcVIYRF5PkJ0jS+9Rg==",
+  "notify_list" : [ ],
+  "status_need_notify" : [ "ERROR", "DISCARDED", "SUCCEED" ],
+  "partition_date_start" : 1469923200000,
+  "partition_date_end" : 3153600000000,
+  "auto_merge_time_ranges" : [ 604800000, 2419200000 ],
+  "retention_range" : 0,
+  "engine_type" : 100,
+  "storage_type" : 100,
+  "override_kylin_properties" : {
+    "kylin.cube.algorithm" : "auto",
+    "kylin.cube.aggrgroup.max.combination" : "4096",
+    "kylin.job.cubing.inmem.sampling.percent" : "100",
+    "kylin.hbase.default.compression.codec" : "none"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/02e723ae/examples/test_case_data/localmeta/model_desc/ut_large_dimension_number.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/model_desc/ut_large_dimension_number.json b/examples/test_case_data/localmeta/model_desc/ut_large_dimension_number.json
new file mode 100644
index 0000000..38b070e
--- /dev/null
+++ b/examples/test_case_data/localmeta/model_desc/ut_large_dimension_number.json
@@ -0,0 +1,26 @@
+{
+  "uuid" : "dd250ea4-27f7-4450-b604-fcfdf3578f5a",
+  "last_modified" : 1479206338080,
+  "version" : "1.6.0",
+  "name" : "ut_large_dimension_number",
+  "owner" : "ADMIN",
+  "description" : "",
+  "fact_table" : "DEFAULT.WIDE_TABLE",
+  "lookups" : [],
+  "dimensions" : [ {
+    "table" : "DEFAULT.WIDE_TABLE",
+    "columns" : ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ"]
+  }],
+  "metrics" : [ "A" ],
+  "filter_condition" : "",
+  "partition_desc" : {
+    "partition_date_column" : "DEFAULT.WIDE_TABLE.A",
+    "partition_time_column" : null,
+    "partition_date_start" : 0,
+    "partition_date_format" : "yyyyMMdd",
+    "partition_time_format" : "HH:mm:ss",
+    "partition_type" : "APPEND",
+    "partition_condition_builder" : "org.apache.kylin.metadata.model.PartitionDesc$DefaultPartitionConditionBuilder"
+  },
+  "capacity" : "MEDIUM"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/02e723ae/examples/test_case_data/localmeta/table/DEFAULT.WIDE_TABLE.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/DEFAULT.WIDE_TABLE.json b/examples/test_case_data/localmeta/table/DEFAULT.WIDE_TABLE.json
new file mode 100644
index 0000000..ef142d1
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/DEFAULT.WIDE_TABLE.json
@@ -0,0 +1,217 @@
+{
+  "uuid" : "cd267e5b-6835-4db2-a861-8b78f38271fe",
+  "last_modified" : 1479202699684,
+  "version" : "1.6.0",
+  "name" : "WIDE_TABLE",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "A",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "2",
+    "name" : "B",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "3",
+    "name" : "C",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "4",
+    "name" : "D",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "5",
+    "name" : "E",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "6",
+    "name" : "F",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "7",
+    "name" : "G",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "8",
+    "name" : "H",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "9",
+    "name" : "I",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "10",
+    "name" : "J",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "11",
+    "name" : "K",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "12",
+    "name" : "L",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "13",
+    "name" : "M",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "14",
+    "name" : "N",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "15",
+    "name" : "O",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "16",
+    "name" : "P",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "17",
+    "name" : "Q",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "18",
+    "name" : "R",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "19",
+    "name" : "S",
+    "datatype" : "bigint"
+  }, {
+    "id" : "20",
+    "name" : "T",
+    "datatype" : "bigint"
+  }, {
+    "id" : "21",
+    "name" : "U",
+    "datatype" : "bigint"
+  }, {
+    "id" : "22",
+    "name" : "V",
+    "datatype" : "bigint"
+  }, {
+    "id" : "23",
+    "name" : "W",
+    "datatype" : "bigint"
+  }, {
+    "id" : "24",
+    "name" : "X",
+    "datatype" : "bigint"
+  }, {
+    "id" : "25",
+    "name" : "Y",
+    "datatype" : "bigint"
+  }, {
+    "id" : "26",
+    "name" : "Z",
+    "datatype" : "bigint"
+  }, {
+    "id" : "27",
+    "name" : "AA",
+    "datatype" : "bigint"
+  }, {
+    "id" : "28",
+    "name" : "AB",
+    "datatype" : "bigint"
+  }, {
+    "id" : "29",
+    "name" : "AC",
+    "datatype" : "bigint"
+  }, {
+    "id" : "30",
+    "name" : "AD",
+    "datatype" : "bigint"
+  }, {
+    "id" : "31",
+    "name" : "AE",
+    "datatype" : "bigint"
+  }, {
+    "id" : "32",
+    "name" : "AF",
+    "datatype" : "bigint"
+  }, {
+    "id" : "33",
+    "name" : "AG",
+    "datatype" : "bigint"
+  }, {
+    "id" : "34",
+    "name" : "AH",
+    "datatype" : "bigint"
+  }, {
+    "id" : "35",
+    "name" : "AI",
+    "datatype" : "bigint"
+  }, {
+    "id" : "36",
+    "name" : "AJ",
+    "datatype" : "bigint"
+  }, {
+    "id" : "37",
+    "name" : "AK",
+    "datatype" : "bigint"
+  }, {
+    "id" : "38",
+    "name" : "AL",
+    "datatype" : "bigint"
+  }, {
+    "id" : "39",
+    "name" : "AM",
+    "datatype" : "bigint"
+  }, {
+    "id" : "40",
+    "name" : "AN",
+    "datatype" : "bigint"
+  }, {
+    "id" : "41",
+    "name" : "AO",
+    "datatype" : "bigint"
+  }, {
+    "id" : "42",
+    "name" : "AP",
+    "datatype" : "bigint"
+  }, {
+    "id" : "43",
+    "name" : "AQ",
+    "datatype" : "bigint"
+  }, {
+    "id" : "44",
+    "name" : "AR",
+    "datatype" : "bigint"
+  }, {
+    "id" : "45",
+    "name" : "AS",
+    "datatype" : "bigint"
+  }, {
+    "id" : "46",
+    "name" : "AT",
+    "datatype" : "bigint"
+  }, {
+    "id" : "47",
+    "name" : "AU",
+    "datatype" : "bigint"
+  }, {
+    "id" : "48",
+    "name" : "AV",
+    "datatype" : "bigint"
+  }, {
+    "id" : "49",
+    "name" : "AW",
+    "datatype" : "bigint"
+  }, {
+    "id" : "50",
+    "name" : "AX",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "51",
+    "name" : "AY",
+    "datatype" : "bigint"
+  }, {
+    "id" : "52",
+    "name" : "AZ",
+    "datatype" : "varchar(256)"
+  } ],
+  "source_type" : 0,
+  "database" : "DEFAULT"
+}
\ No newline at end of file