Repository: kylin
Updated Branches:
  refs/heads/KYLIN-1971 40c80a9bc -> 2a123891e


tmp


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

Branch: refs/heads/KYLIN-1971
Commit: 2a123891ef66c8be6a29a9b92391138f7e04e746
Parents: 40c80a9
Author: Yang Li <liy...@apache.org>
Authored: Sat Oct 22 20:38:23 2016 +0800
Committer: Yang Li <liy...@apache.org>
Committed: Sat Oct 22 20:38:23 2016 +0800

----------------------------------------------------------------------
 .../metadata/filter/ColumnTupleFilter.java      | 85 ++++++++++++++------
 .../apache/kylin/metadata/model/TblColRef.java  | 10 +--
 2 files changed, 66 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/2a123891/core-metadata/src/main/java/org/apache/kylin/metadata/filter/ColumnTupleFilter.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/ColumnTupleFilter.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/ColumnTupleFilter.java
index 8c5e989..c8a8f07 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/ColumnTupleFilter.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/ColumnTupleFilter.java
@@ -24,9 +24,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.BytesUtil;
+import org.apache.kylin.metadata.MetadataManager;
 import org.apache.kylin.metadata.model.ColumnDesc;
+import org.apache.kylin.metadata.model.DataModelDesc;
 import org.apache.kylin.metadata.model.TableDesc;
+import org.apache.kylin.metadata.model.TableRef;
 import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.tuple.IEvaluatableTuple;
 
@@ -37,6 +41,8 @@ import org.apache.kylin.metadata.tuple.IEvaluatableTuple;
  */
 public class ColumnTupleFilter extends TupleFilter {
 
+    private static final String _QUALIFIED_ = "_QUALIFIED_";
+    
     private TblColRef columnRef;
     private Object tupleValue;
     private List<Object> values;
@@ -85,36 +91,67 @@ public class ColumnTupleFilter extends TupleFilter {
 
     @Override
     public void serialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) {
-        String table = columnRef.getTable();
-        BytesUtil.writeUTFString(table, buffer);
-
-        String columnId = columnRef.getColumnDesc().getId();
-        BytesUtil.writeUTFString(columnId, buffer);
-
-        String columnName = columnRef.getName();
-        BytesUtil.writeUTFString(columnName, buffer);
-
-        String dataType = columnRef.getDatatype();
-        BytesUtil.writeUTFString(dataType, buffer);
+        TableRef tableRef = columnRef.getTableRef();
+        
+        if (tableRef == null) {
+            // un-qualified column
+            String table = columnRef.getTable();
+            BytesUtil.writeUTFString(table, buffer);
+
+            String columnId = columnRef.getColumnDesc().getId();
+            BytesUtil.writeUTFString(columnId, buffer);
+
+            String columnName = columnRef.getName();
+            BytesUtil.writeUTFString(columnName, buffer);
+
+            String dataType = columnRef.getDatatype();
+            BytesUtil.writeUTFString(dataType, buffer);
+        } else {
+            // qualified column (from model)
+            BytesUtil.writeUTFString(_QUALIFIED_, buffer);
+            
+            String model = tableRef.getModel().getName();
+            BytesUtil.writeUTFString(model, buffer);
+            
+            String alias = tableRef.getAlias();
+            BytesUtil.writeUTFString(alias, buffer);
+            
+            String col = columnRef.getName();
+            BytesUtil.writeUTFString(col, buffer);
+        }
     }
 
     @Override
     public void deserialize(IFilterCodeSystem<?> cs, ByteBuffer buffer) {
 
-        TableDesc table = null;
-        ColumnDesc column = new ColumnDesc();
-
         String tableName = BytesUtil.readUTFString(buffer);
-        if (tableName != null) {
-            table = new TableDesc();
-            table.setName(tableName);
+        
+        if (_QUALIFIED_.equals(tableName)) {
+            // qualified column (from model)
+            String model = BytesUtil.readUTFString(buffer);
+            String alias = BytesUtil.readUTFString(buffer);
+            String col = BytesUtil.readUTFString(buffer);
+            
+            KylinConfig config = KylinConfig.getInstanceFromEnv();
+            DataModelDesc modelDesc = 
MetadataManager.getInstance(config).getDataModelDesc(model);
+            this.columnRef = modelDesc.findColumn(alias, col);
+            
+        } else {
+            // un-qualified column
+            TableDesc tableDesc = null;
+
+            if (tableName != null) {
+                tableDesc = new TableDesc();
+                tableDesc.setName(tableName);
+            }
+
+            ColumnDesc column = new ColumnDesc();
+            column.setId(BytesUtil.readUTFString(buffer));
+            column.setName(BytesUtil.readUTFString(buffer));
+            column.setDatatype(BytesUtil.readUTFString(buffer));
+            column.init(tableDesc);
+
+            this.columnRef = column.getRef();
         }
-
-        column.setId(BytesUtil.readUTFString(buffer));
-        column.setName(BytesUtil.readUTFString(buffer));
-        column.setDatatype(BytesUtil.readUTFString(buffer));
-        column.init(table);
-
-        this.columnRef = column.getRef();
     }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/2a123891/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
index 7209d5e..5f0fe94 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
@@ -85,19 +85,19 @@ public class TblColRef implements Serializable {
         this.table = table;
         this.column = column;
     }
-
+    
     public ColumnDesc getColumnDesc() {
         return column;
     }
 
-    public void setColumn(ColumnDesc column) {
-        this.column = column;
-    }
-
     public String getName() {
         return column.getName();
     }
 
+    public TableRef getTableRef() {
+        return table;
+    }
+    
     public String getTable() {
         if (column.getTable() == null) {
             return null;

Reply via email to