You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/04/26 06:27:08 UTC

[26/50] incubator-kylin git commit: Kylin-716, done

Kylin-716, done


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

Branch: refs/heads/streaming-localdict
Commit: 6c35414278e43762a8698fa99f85653d7f0ef802
Parents: 13de5fe
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Apr 22 14:55:43 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Apr 22 14:55:43 2015 +0800

----------------------------------------------------------------------
 .../kylin/query/enumerator/OLAPEnumerator.java   | 12 ++++--------
 .../storage/hbase/CubeSegmentTupleIterator.java  |  4 +++-
 .../org/apache/kylin/storage/tuple/Tuple.java    | 19 +++++++++++++------
 .../apache/kylin/storage/tuple/TupleInfo.java    |  4 ++++
 4 files changed, 24 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6c354142/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java
index 6fb2a51..ce1eb88 100644
--- a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java
+++ b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPEnumerator.java
@@ -100,9 +100,8 @@ public class OLAPEnumerator implements Enumerator<Object[]> {
 
         int hashCode = tuple.getAllFields().hashCode();
 
-
         // build field index map, if the map doesn't exit or the tuple fields structure changed
-       if (this.fieldIndexes == null || tupleFieldsHash != hashCode) {
+        if (this.fieldIndexes == null || tupleFieldsHash != hashCode) {
             List<String> fields = tuple.getAllFields();
             int size = fields.size();
             this.fieldIndexes = new int[size];
@@ -116,8 +115,8 @@ public class OLAPEnumerator implements Enumerator<Object[]> {
                 }
             }
 
-           tupleFieldsHash = hashCode;
-       }
+            tupleFieldsHash = hashCode;
+        }
 
         // set field value
         Object[] values = tuple.getAllValues();
@@ -141,11 +140,9 @@ public class OLAPEnumerator implements Enumerator<Object[]> {
         // bind dynamic variables
         bindVariable(olapContext.filter);
 
-
-
         // query storage engine
         IStorageEngine storageEngine = StorageEngineFactory.getStorageEngine(olapContext.realization);
-        ITupleIterator iterator = storageEngine.search(olapContext.storageContext,olapContext.getSQLDigest());
+        ITupleIterator iterator = storageEngine.search(olapContext.storageContext, olapContext.getSQLDigest());
         if (logger.isDebugEnabled()) {
             logger.debug("return TupleIterator...");
         }
@@ -155,7 +152,6 @@ public class OLAPEnumerator implements Enumerator<Object[]> {
         return iterator;
     }
 
-
     private void bindVariable(TupleFilter filter) {
         if (filter == null) {
             return;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6c354142/storage/src/main/java/org/apache/kylin/storage/hbase/CubeSegmentTupleIterator.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/hbase/CubeSegmentTupleIterator.java b/storage/src/main/java/org/apache/kylin/storage/hbase/CubeSegmentTupleIterator.java
index 95f3228..4190da8 100644
--- a/storage/src/main/java/org/apache/kylin/storage/hbase/CubeSegmentTupleIterator.java
+++ b/storage/src/main/java/org/apache/kylin/storage/hbase/CubeSegmentTupleIterator.java
@@ -294,7 +294,9 @@ public class CubeSegmentTupleIterator implements ITupleIterator {
                 // mark name for each derived field
                 for (TblColRef derivedCol : deriveInfo.columns) {
                     String derivedField = getFieldName(derivedCol, context.getAliasMap());
-                    info.setField(derivedField, derivedCol, derivedCol.getType().getName(), index++);
+                    if (info.hasField(derivedField) == false) {
+                        info.setField(derivedField, derivedCol, derivedCol.getType().getName(), index++);
+                    }
                 }
                 // add filler
                 info.addDerivedColumnFiller(Tuple.newDerivedColumnFiller(rowColumns, hostCols, deriveInfo, info, CubeManager.getInstance(this.cube.getConfig()), cubeSeg));

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6c354142/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java b/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
index 2d18597..20aa386 100644
--- a/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
+++ b/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
@@ -166,7 +166,8 @@ public class Tuple implements ITuple {
         }
         String[] derivedFieldNames = new String[deriveInfo.columns.length];
         for (int i = 0; i < deriveInfo.columns.length; i++) {
-            derivedFieldNames[i] = tupleInfo.getFieldName(deriveInfo.columns[i]);
+            if (tupleInfo.hasColumn(deriveInfo.columns[i]))
+                derivedFieldNames[i] = tupleInfo.getFieldName(deriveInfo.columns[i]);
         }
 
         switch (deriveInfo.type) {
@@ -196,8 +197,10 @@ public class Tuple implements ITuple {
 
         @Override
         public void fillDerivedColumns(List<String> rowValues, Tuple tuple) {
-            String value = rowValues.get(hostIndex);
-            tuple.setDimensionValue(derivedFieldName, value);
+            if (derivedFieldName != null) {
+                String value = rowValues.get(hostIndex);
+                tuple.setDimensionValue(derivedFieldName, value);
+            }
         }
     }
 
@@ -235,12 +238,16 @@ public class Tuple implements ITuple {
 
             if (lookupRow != null) {
                 for (int i = 0; i < derivedLen; i++) {
-                    String value = lookupRow[derivedIndex[i]];
-                    tuple.setDimensionValue(derivedFieldNames[i], value);
+                    if (derivedFieldNames[i] != null) {
+                        String value = lookupRow[derivedIndex[i]];
+                        tuple.setDimensionValue(derivedFieldNames[i], value);
+                    }
                 }
             } else {
                 for (int i = 0; i < derivedLen; i++) {
-                    tuple.setDimensionValue(derivedFieldNames[i], null);
+                    if (derivedFieldNames[i] != null) {
+                        tuple.setDimensionValue(derivedFieldNames[i], null);
+                    }
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/6c354142/storage/src/main/java/org/apache/kylin/storage/tuple/TupleInfo.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/tuple/TupleInfo.java b/storage/src/main/java/org/apache/kylin/storage/tuple/TupleInfo.java
index eb48d64..17591b5 100644
--- a/storage/src/main/java/org/apache/kylin/storage/tuple/TupleInfo.java
+++ b/storage/src/main/java/org/apache/kylin/storage/tuple/TupleInfo.java
@@ -66,6 +66,10 @@ public class TupleInfo {
     public int getFieldIndex(String fieldName) {
         return fieldMap.get(fieldName);
     }
+    
+    public boolean hasField(String fieldName) {
+        return fieldMap.containsKey(fieldName);
+    }
 
     public String getFieldName(TblColRef col) {
         int idx = columnMap.get(col);