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);