carbondata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chenliang...@apache.org
Subject [49/50] [abbrv] incubator-carbondata git commit: Moved complex types from query to scan package
Date Wed, 20 Jul 2016 10:14:17 GMT
Moved complex types from query to scan package


Project: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/commit/54fb3d28
Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/54fb3d28
Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/54fb3d28

Branch: refs/heads/master
Commit: 54fb3d287c90d8f4369e5ff7eae557e30c49b676
Parents: 5fa7671
Author: ravipesala <ravi.pesala@gmail.com>
Authored: Wed Jul 20 12:01:31 2016 +0530
Committer: ravipesala <ravi.pesala@gmail.com>
Committed: Wed Jul 20 12:01:31 2016 +0530

----------------------------------------------------------------------
 .../complex/querytypes/ArrayQueryType.java      | 158 ----------------
 .../complex/querytypes/ComplexQueryType.java    |  80 --------
 .../complex/querytypes/PrimitiveQueryType.java  | 180 ------------------
 .../complex/querytypes/StructQueryType.java     | 184 -------------------
 .../scan/complextypes/ArrayQueryType.java       | 158 ++++++++++++++++
 .../scan/complextypes/ComplexQueryType.java     |  80 ++++++++
 .../scan/complextypes/PrimitiveQueryType.java   | 180 ++++++++++++++++++
 .../scan/complextypes/StructQueryType.java      | 184 +++++++++++++++++++
 .../scan/executor/util/QueryUtil.java           |   6 +-
 9 files changed, 605 insertions(+), 605 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/query/complex/querytypes/ArrayQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/query/complex/querytypes/ArrayQueryType.java
b/core/src/main/java/org/carbondata/query/complex/querytypes/ArrayQueryType.java
deleted file mode 100644
index 52b6333..0000000
--- a/core/src/main/java/org/carbondata/query/complex/querytypes/ArrayQueryType.java
+++ /dev/null
@@ -1,158 +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.carbondata.query.complex.querytypes;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
-import org.carbondata.scan.filter.GenericQueryType;
-import org.carbondata.scan.processor.BlocksChunkHolder;
-
-import org.apache.spark.sql.catalyst.util.*; // Don't remove it, used for spark 1.6 compatability
-import org.apache.spark.sql.types.*;
-
-public class ArrayQueryType extends ComplexQueryType implements GenericQueryType {
-
-  private GenericQueryType children;
-  private int keyOrdinalForQuery;
-
-  public ArrayQueryType(String name, String parentname, int blockIndex) {
-    super(name, parentname, blockIndex);
-  }
-
-  @Override public void addChildren(GenericQueryType children) {
-    if (this.getName().equals(children.getParentname())) {
-      this.children = children;
-    } else {
-      this.children.addChildren(children);
-    }
-  }
-
-  @Override public String getName() {
-    return name;
-  }
-
-  @Override public void setName(String name) {
-    this.name = name;
-  }
-
-  @Override public String getParentname() {
-    return parentname;
-  }
-
-  @Override public void setParentname(String parentname) {
-    this.parentname = parentname;
-
-  }
-
-  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
-    if (children instanceof PrimitiveQueryType) {
-      primitiveChild.add(children);
-    } else {
-      children.getAllPrimitiveChildren(primitiveChild);
-    }
-  }
-
-  public void parseBlocksAndReturnComplexColumnByteArray(
-      DimensionColumnDataChunk[] dimensionColumnDataChunks, int rowNumber,
-      DataOutputStream dataOutputStream) throws IOException {
-    byte[] input = new byte[8];
-    copyBlockDataChunk(dimensionColumnDataChunks, rowNumber, input);
-    ByteBuffer byteArray = ByteBuffer.wrap(input);
-    int dataLength = byteArray.getInt();
-    dataOutputStream.writeInt(dataLength);
-    if (dataLength == 0) {
-      // b.putInt(0);
-    } else {
-      int columnIndex = byteArray.getInt();
-      for (int i = 0; i < dataLength; i++) {
-        children
-            .parseBlocksAndReturnComplexColumnByteArray(dimensionColumnDataChunks, columnIndex++,
-                dataOutputStream);
-      }
-    }
-  }
-
-  @Override public int getSurrogateIndex() {
-    return 0;
-  }
-
-  @Override public void setSurrogateIndex(int surrIndex) {
-
-  }
-
-  @Override public int getBlockIndex() {
-    return blockIndex;
-  }
-
-  @Override public void setBlockIndex(int blockIndex) {
-    this.blockIndex = blockIndex;
-  }
-
-  @Override public int getColsCount() {
-    return children.getColsCount() + 1;
-  }
-
-  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
-      throws IOException {
-    int dataLength = complexData.getInt();
-    dataOutput.writeInt(dataLength);
-    for (int i = 0; i < dataLength; i++) {
-      children.parseAndGetResultBytes(complexData, dataOutput);
-    }
-  }
-
-  @Override public void setKeySize(int[] keyBlockSize) {
-    children.setKeySize(keyBlockSize);
-  }
-
-  @Override public DataType getSchemaType() {
-    return new ArrayType(null, true);
-  }
-
-  @Override public int getKeyOrdinalForQuery() {
-    return keyOrdinalForQuery;
-  }
-
-  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
-    this.keyOrdinalForQuery = keyOrdinalForQuery;
-  }
-
-  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
-    readBlockDataChunk(blockChunkHolder);
-    children.fillRequiredBlockData(blockChunkHolder);
-  }
-
-  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
-    int dataLength = surrogateData.getInt();
-    if (dataLength == -1) {
-      return null;
-    }
-    Object[] data = new Object[dataLength];
-    for (int i = 0; i < dataLength; i++) {
-      data[i] = children.getDataBasedOnDataTypeFromSurrogates(surrogateData);
-    }
-    return new GenericArrayData(data);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/query/complex/querytypes/ComplexQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/query/complex/querytypes/ComplexQueryType.java
b/core/src/main/java/org/carbondata/query/complex/querytypes/ComplexQueryType.java
deleted file mode 100644
index d13d730..0000000
--- a/core/src/main/java/org/carbondata/query/complex/querytypes/ComplexQueryType.java
+++ /dev/null
@@ -1,80 +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.carbondata.query.complex.querytypes;
-
-import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
-import org.carbondata.scan.filter.GenericQueryType;
-import org.carbondata.scan.processor.BlocksChunkHolder;
-
-public class ComplexQueryType {
-  protected GenericQueryType children;
-
-  protected String name;
-
-  protected String parentname;
-
-  protected int blockIndex;
-
-  public ComplexQueryType(String name, String parentname, int blockIndex) {
-    this.name = name;
-    this.parentname = parentname;
-    this.blockIndex = blockIndex;
-  }
-
-  public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
-    if (null == blockChunkHolder.getDimensionDataChunk()[blockIndex]) {
-      blockChunkHolder.getDimensionDataChunk()[blockIndex] = blockChunkHolder.getDataBlock()
-          .getDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
-    }
-    children.fillRequiredBlockData(blockChunkHolder);
-  }
-
-  /**
-   * Method will copy the block chunk holder data to the passed
-   * byte[], this method is also used by child
-   *
-   * @param rowNumber
-   * @param input
-   */
-  protected void copyBlockDataChunk(DimensionColumnDataChunk[] dimensionColumnDataChunks,
-      int rowNumber, byte[] input) {
-    byte[] data = (byte[]) dimensionColumnDataChunks[blockIndex].getCompleteDataChunk();
-    if (null != dimensionColumnDataChunks[blockIndex].getAttributes().getInvertedIndexes())
{
-      System.arraycopy(data, dimensionColumnDataChunks[blockIndex].getAttributes()
-              .getInvertedIndexesReverse()[rowNumber] * dimensionColumnDataChunks[blockIndex]
-              .getAttributes().getColumnValueSize(), input, 0,
-          dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize());
-    } else {
-      System.arraycopy(data,
-          rowNumber * dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize(),
-          input, 0, dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize());
-    }
-  }
-
-  /*
-   * This method will read the block data chunk from the respective block
-   */
-  protected void readBlockDataChunk(BlocksChunkHolder blockChunkHolder) {
-    if (null == blockChunkHolder.getDimensionDataChunk()[blockIndex]) {
-      blockChunkHolder.getDimensionDataChunk()[blockIndex] = blockChunkHolder.getDataBlock()
-          .getDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/query/complex/querytypes/PrimitiveQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/query/complex/querytypes/PrimitiveQueryType.java
b/core/src/main/java/org/carbondata/query/complex/querytypes/PrimitiveQueryType.java
deleted file mode 100644
index 19cde2a..0000000
--- a/core/src/main/java/org/carbondata/query/complex/querytypes/PrimitiveQueryType.java
+++ /dev/null
@@ -1,180 +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.carbondata.query.complex.querytypes;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-import org.carbondata.core.cache.dictionary.Dictionary;
-import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
-import org.carbondata.core.keygenerator.directdictionary.DirectDictionaryGenerator;
-import org.carbondata.core.keygenerator.directdictionary.DirectDictionaryKeyGeneratorFactory;
-import org.carbondata.core.keygenerator.mdkey.Bits;
-import org.carbondata.core.util.DataTypeUtil;
-import org.carbondata.scan.filter.GenericQueryType;
-import org.carbondata.scan.processor.BlocksChunkHolder;
-
-import org.apache.spark.sql.types.BooleanType;
-import org.apache.spark.sql.types.DataType;
-import org.apache.spark.sql.types.DoubleType;
-import org.apache.spark.sql.types.IntegerType;
-import org.apache.spark.sql.types.LongType;
-import org.apache.spark.sql.types.TimestampType;
-
-public class PrimitiveQueryType extends ComplexQueryType implements GenericQueryType {
-
-  private int index;
-
-  private String name;
-  private String parentname;
-
-  private int keySize;
-
-  private int blockIndex;
-
-  private Dictionary dictionary;
-
-  private org.carbondata.core.carbon.metadata.datatype.DataType dataType;
-
-  private boolean isDirectDictionary;
-
-  public PrimitiveQueryType(String name, String parentname, int blockIndex,
-      org.carbondata.core.carbon.metadata.datatype.DataType dataType, int keySize,
-      Dictionary dictionary, boolean isDirectDictionary) {
-    super(name, parentname, blockIndex);
-    this.dataType = dataType;
-    this.keySize = keySize;
-    this.dictionary = dictionary;
-    this.name = name;
-    this.parentname = parentname;
-    this.blockIndex = blockIndex;
-    this.isDirectDictionary = isDirectDictionary;
-  }
-
-  @Override public void addChildren(GenericQueryType children) {
-
-  }
-
-  @Override public String getName() {
-    return name;
-  }
-
-  @Override public void setName(String name) {
-    this.name = name;
-  }
-
-  @Override public String getParentname() {
-    return parentname;
-  }
-
-  @Override public void setParentname(String parentname) {
-    this.parentname = parentname;
-
-  }
-
-  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
-
-  }
-
-  @Override public int getSurrogateIndex() {
-    return index;
-  }
-
-  @Override public void setSurrogateIndex(int surrIndex) {
-    index = surrIndex;
-  }
-
-  @Override public int getBlockIndex() {
-    return blockIndex;
-  }
-
-  @Override public void setBlockIndex(int blockIndex) {
-    this.blockIndex = blockIndex;
-  }
-
-  @Override public int getColsCount() {
-    return 1;
-  }
-
-  @Override public void parseBlocksAndReturnComplexColumnByteArray(
-      DimensionColumnDataChunk[] dimensionDataChunks, int rowNumber,
-      DataOutputStream dataOutputStream) throws IOException {
-    byte[] currentVal =
-        new byte[dimensionDataChunks[blockIndex].getAttributes().getColumnValueSize()];
-    copyBlockDataChunk(dimensionDataChunks, rowNumber, currentVal);
-    dataOutputStream.write(currentVal);
-  }
-
-  @Override public void setKeySize(int[] keyBlockSize) {
-    this.keySize = keyBlockSize[this.blockIndex];
-  }
-
-  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
-      throws IOException {
-  }
-
-  @Override public DataType getSchemaType() {
-    switch (dataType) {
-      case INT:
-        return new IntegerType();
-      case DOUBLE:
-        return new DoubleType();
-      case LONG:
-        return new LongType();
-      case BOOLEAN:
-        return new BooleanType();
-      case TIMESTAMP:
-        return new TimestampType();
-      default:
-        return new IntegerType();
-    }
-  }
-
-  @Override public int getKeyOrdinalForQuery() {
-    return 0;
-  }
-
-  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
-  }
-
-  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
-    readBlockDataChunk(blockChunkHolder);
-  }
-
-  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
-
-    byte[] data = new byte[keySize];
-    surrogateData.get(data);
-    Bits bit = new Bits(new int[]{keySize * 8});
-    int surrgateValue = (int)bit.getKeyArray(data)[0];
-    Object actualData = null;
-    if (isDirectDictionary) {
-      DirectDictionaryGenerator directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
-          .getDirectDictionaryGenerator(dataType);
-      actualData = directDictionaryGenerator.getValueFromSurrogate(surrgateValue);
-    } else {
-      String dictionaryValueForKey = dictionary.getDictionaryValueForKey(surrgateValue);
-      actualData = DataTypeUtil.getDataBasedOnDataType(dictionaryValueForKey, this.dataType);
-    }
-    return actualData;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/query/complex/querytypes/StructQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/query/complex/querytypes/StructQueryType.java
b/core/src/main/java/org/carbondata/query/complex/querytypes/StructQueryType.java
deleted file mode 100644
index 832c365..0000000
--- a/core/src/main/java/org/carbondata/query/complex/querytypes/StructQueryType.java
+++ /dev/null
@@ -1,184 +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.carbondata.query.complex.querytypes;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
-import org.carbondata.scan.filter.GenericQueryType;
-import org.carbondata.scan.processor.BlocksChunkHolder;
-
-import org.apache.spark.sql.catalyst.expressions.GenericInternalRowWithSchema;
-import org.apache.spark.sql.types.DataType;
-import org.apache.spark.sql.types.Metadata;
-import org.apache.spark.sql.types.StructField;
-import org.apache.spark.sql.types.StructType;
-
-public class StructQueryType extends ComplexQueryType implements GenericQueryType {
-
-  private List<GenericQueryType> children = new ArrayList<GenericQueryType>();
-  private String name;
-  private String parentname;
-  private int blockIndex;
-  private int keyOrdinalForQuery;
-
-  public StructQueryType(String name, String parentname, int blockIndex) {
-    super(name, parentname, blockIndex);
-    this.name = name;
-    this.parentname = parentname;
-    this.blockIndex = blockIndex;
-  }
-
-  @Override public void addChildren(GenericQueryType newChild) {
-    if (this.getName().equals(newChild.getParentname())) {
-      this.children.add(newChild);
-    } else {
-      for (GenericQueryType child : this.children) {
-        child.addChildren(newChild);
-      }
-    }
-
-  }
-
-  @Override public String getName() {
-    return name;
-  }
-
-  @Override public void setName(String name) {
-    this.name = name;
-  }
-
-  @Override public String getParentname() {
-    return parentname;
-  }
-
-  @Override public void setParentname(String parentname) {
-    this.parentname = parentname;
-
-  }
-
-  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
-    for (int i = 0; i < children.size(); i++) {
-      GenericQueryType child = children.get(i);
-      if (child instanceof PrimitiveQueryType) {
-        primitiveChild.add(child);
-      } else {
-        child.getAllPrimitiveChildren(primitiveChild);
-      }
-    }
-  }
-
-  @Override public int getSurrogateIndex() {
-    return 0;
-  }
-
-  @Override public void setSurrogateIndex(int surrIndex) {
-
-  }
-
-  @Override public int getBlockIndex() {
-    return blockIndex;
-  }
-
-  @Override public void setBlockIndex(int blockIndex) {
-    this.blockIndex = blockIndex;
-  }
-
-  @Override public int getColsCount() {
-    int colsCount = 1;
-    for (int i = 0; i < children.size(); i++) {
-      colsCount += children.get(i).getColsCount();
-    }
-    return colsCount;
-  }
-
-  @Override public void parseBlocksAndReturnComplexColumnByteArray(
-      DimensionColumnDataChunk[] dimensionColumnDataChunks, int rowNumber,
-      DataOutputStream dataOutputStream) throws IOException {
-    byte[] input = new byte[8];
-    copyBlockDataChunk(dimensionColumnDataChunks, rowNumber, input);
-    ByteBuffer byteArray = ByteBuffer.wrap(input);
-    int childElement = byteArray.getInt();
-    dataOutputStream.writeInt(childElement);
-    if (childElement == 0) {
-      // b.putInt(0);
-    } else {
-      for (int i = 0; i < childElement; i++) {
-        children.get(i)
-            .parseBlocksAndReturnComplexColumnByteArray(dimensionColumnDataChunks, rowNumber,
-                dataOutputStream);
-      }
-    }
-  }
-
-  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
-      throws IOException {
-    int childElement = complexData.getInt();
-    dataOutput.writeInt(childElement);
-    for (int i = 0; i < childElement; i++) {
-      children.get(i).parseAndGetResultBytes(complexData, dataOutput);
-    }
-  }
-
-  @Override public void setKeySize(int[] keyBlockSize) {
-    for (int i = 0; i < children.size(); i++) {
-      children.get(i).setKeySize(keyBlockSize);
-    }
-  }
-
-  @Override public DataType getSchemaType() {
-    StructField[] fields = new StructField[children.size()];
-    for (int i = 0; i < children.size(); i++) {
-      fields[i] = new StructField(children.get(i).getName(), null, true,
-          Metadata.empty());
-    }
-    return new StructType(fields);
-  }
-
-  @Override public int getKeyOrdinalForQuery() {
-    return keyOrdinalForQuery;
-  }
-
-  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
-    this.keyOrdinalForQuery = keyOrdinalForQuery;
-  }
-
-  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
-    readBlockDataChunk(blockChunkHolder);
-
-    for (int i = 0; i < children.size(); i++) {
-      children.get(i).fillRequiredBlockData(blockChunkHolder);
-    }
-  }
-
-  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
-    int childLength = surrogateData.getInt();
-    Object[] fields = new Object[childLength];
-    for (int i = 0; i < childLength; i++) {
-      fields[i] =  children.get(i).getDataBasedOnDataTypeFromSurrogates(surrogateData);
-    }
-
-    return new GenericInternalRowWithSchema(fields, (StructType) getSchemaType());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/scan/complextypes/ArrayQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/scan/complextypes/ArrayQueryType.java b/core/src/main/java/org/carbondata/scan/complextypes/ArrayQueryType.java
new file mode 100644
index 0000000..34d3d89
--- /dev/null
+++ b/core/src/main/java/org/carbondata/scan/complextypes/ArrayQueryType.java
@@ -0,0 +1,158 @@
+/*
+ * 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.carbondata.scan.complextypes;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
+import org.carbondata.scan.filter.GenericQueryType;
+import org.carbondata.scan.processor.BlocksChunkHolder;
+
+import org.apache.spark.sql.catalyst.util.*; // Don't remove it, used for spark 1.6 compatability
+import org.apache.spark.sql.types.*;
+
+public class ArrayQueryType extends ComplexQueryType implements GenericQueryType {
+
+  private GenericQueryType children;
+  private int keyOrdinalForQuery;
+
+  public ArrayQueryType(String name, String parentname, int blockIndex) {
+    super(name, parentname, blockIndex);
+  }
+
+  @Override public void addChildren(GenericQueryType children) {
+    if (this.getName().equals(children.getParentname())) {
+      this.children = children;
+    } else {
+      this.children.addChildren(children);
+    }
+  }
+
+  @Override public String getName() {
+    return name;
+  }
+
+  @Override public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override public String getParentname() {
+    return parentname;
+  }
+
+  @Override public void setParentname(String parentname) {
+    this.parentname = parentname;
+
+  }
+
+  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
+    if (children instanceof PrimitiveQueryType) {
+      primitiveChild.add(children);
+    } else {
+      children.getAllPrimitiveChildren(primitiveChild);
+    }
+  }
+
+  public void parseBlocksAndReturnComplexColumnByteArray(
+      DimensionColumnDataChunk[] dimensionColumnDataChunks, int rowNumber,
+      DataOutputStream dataOutputStream) throws IOException {
+    byte[] input = new byte[8];
+    copyBlockDataChunk(dimensionColumnDataChunks, rowNumber, input);
+    ByteBuffer byteArray = ByteBuffer.wrap(input);
+    int dataLength = byteArray.getInt();
+    dataOutputStream.writeInt(dataLength);
+    if (dataLength == 0) {
+      // b.putInt(0);
+    } else {
+      int columnIndex = byteArray.getInt();
+      for (int i = 0; i < dataLength; i++) {
+        children
+            .parseBlocksAndReturnComplexColumnByteArray(dimensionColumnDataChunks, columnIndex++,
+                dataOutputStream);
+      }
+    }
+  }
+
+  @Override public int getSurrogateIndex() {
+    return 0;
+  }
+
+  @Override public void setSurrogateIndex(int surrIndex) {
+
+  }
+
+  @Override public int getBlockIndex() {
+    return blockIndex;
+  }
+
+  @Override public void setBlockIndex(int blockIndex) {
+    this.blockIndex = blockIndex;
+  }
+
+  @Override public int getColsCount() {
+    return children.getColsCount() + 1;
+  }
+
+  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
+      throws IOException {
+    int dataLength = complexData.getInt();
+    dataOutput.writeInt(dataLength);
+    for (int i = 0; i < dataLength; i++) {
+      children.parseAndGetResultBytes(complexData, dataOutput);
+    }
+  }
+
+  @Override public void setKeySize(int[] keyBlockSize) {
+    children.setKeySize(keyBlockSize);
+  }
+
+  @Override public DataType getSchemaType() {
+    return new ArrayType(null, true);
+  }
+
+  @Override public int getKeyOrdinalForQuery() {
+    return keyOrdinalForQuery;
+  }
+
+  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
+    this.keyOrdinalForQuery = keyOrdinalForQuery;
+  }
+
+  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
+    readBlockDataChunk(blockChunkHolder);
+    children.fillRequiredBlockData(blockChunkHolder);
+  }
+
+  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
+    int dataLength = surrogateData.getInt();
+    if (dataLength == -1) {
+      return null;
+    }
+    Object[] data = new Object[dataLength];
+    for (int i = 0; i < dataLength; i++) {
+      data[i] = children.getDataBasedOnDataTypeFromSurrogates(surrogateData);
+    }
+    return new GenericArrayData(data);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/scan/complextypes/ComplexQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/scan/complextypes/ComplexQueryType.java b/core/src/main/java/org/carbondata/scan/complextypes/ComplexQueryType.java
new file mode 100644
index 0000000..c6631f3
--- /dev/null
+++ b/core/src/main/java/org/carbondata/scan/complextypes/ComplexQueryType.java
@@ -0,0 +1,80 @@
+
+/*
+ * 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.carbondata.scan.complextypes;
+
+import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
+import org.carbondata.scan.filter.GenericQueryType;
+import org.carbondata.scan.processor.BlocksChunkHolder;
+
+public class ComplexQueryType {
+  protected GenericQueryType children;
+
+  protected String name;
+
+  protected String parentname;
+
+  protected int blockIndex;
+
+  public ComplexQueryType(String name, String parentname, int blockIndex) {
+    this.name = name;
+    this.parentname = parentname;
+    this.blockIndex = blockIndex;
+  }
+
+  public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
+    if (null == blockChunkHolder.getDimensionDataChunk()[blockIndex]) {
+      blockChunkHolder.getDimensionDataChunk()[blockIndex] = blockChunkHolder.getDataBlock()
+          .getDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
+    }
+    children.fillRequiredBlockData(blockChunkHolder);
+  }
+
+  /**
+   * Method will copy the block chunk holder data to the passed
+   * byte[], this method is also used by child
+   *
+   * @param rowNumber
+   * @param input
+   */
+  protected void copyBlockDataChunk(DimensionColumnDataChunk[] dimensionColumnDataChunks,
+      int rowNumber, byte[] input) {
+    byte[] data = (byte[]) dimensionColumnDataChunks[blockIndex].getCompleteDataChunk();
+    if (null != dimensionColumnDataChunks[blockIndex].getAttributes().getInvertedIndexes())
{
+      System.arraycopy(data, dimensionColumnDataChunks[blockIndex].getAttributes()
+              .getInvertedIndexesReverse()[rowNumber] * dimensionColumnDataChunks[blockIndex]
+              .getAttributes().getColumnValueSize(), input, 0,
+          dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize());
+    } else {
+      System.arraycopy(data,
+          rowNumber * dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize(),
+          input, 0, dimensionColumnDataChunks[blockIndex].getAttributes().getColumnValueSize());
+    }
+  }
+
+  /*
+   * This method will read the block data chunk from the respective block
+   */
+  protected void readBlockDataChunk(BlocksChunkHolder blockChunkHolder) {
+    if (null == blockChunkHolder.getDimensionDataChunk()[blockIndex]) {
+      blockChunkHolder.getDimensionDataChunk()[blockIndex] = blockChunkHolder.getDataBlock()
+          .getDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/scan/complextypes/PrimitiveQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/scan/complextypes/PrimitiveQueryType.java b/core/src/main/java/org/carbondata/scan/complextypes/PrimitiveQueryType.java
new file mode 100644
index 0000000..21a1d02
--- /dev/null
+++ b/core/src/main/java/org/carbondata/scan/complextypes/PrimitiveQueryType.java
@@ -0,0 +1,180 @@
+/*
+ * 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.carbondata.scan.complextypes;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.carbondata.core.cache.dictionary.Dictionary;
+import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
+import org.carbondata.core.keygenerator.directdictionary.DirectDictionaryGenerator;
+import org.carbondata.core.keygenerator.directdictionary.DirectDictionaryKeyGeneratorFactory;
+import org.carbondata.core.keygenerator.mdkey.Bits;
+import org.carbondata.core.util.DataTypeUtil;
+import org.carbondata.scan.filter.GenericQueryType;
+import org.carbondata.scan.processor.BlocksChunkHolder;
+
+import org.apache.spark.sql.types.BooleanType;
+import org.apache.spark.sql.types.DataType;
+import org.apache.spark.sql.types.DoubleType;
+import org.apache.spark.sql.types.IntegerType;
+import org.apache.spark.sql.types.LongType;
+import org.apache.spark.sql.types.TimestampType;
+
+public class PrimitiveQueryType extends ComplexQueryType implements GenericQueryType {
+
+  private int index;
+
+  private String name;
+  private String parentname;
+
+  private int keySize;
+
+  private int blockIndex;
+
+  private Dictionary dictionary;
+
+  private org.carbondata.core.carbon.metadata.datatype.DataType dataType;
+
+  private boolean isDirectDictionary;
+
+  public PrimitiveQueryType(String name, String parentname, int blockIndex,
+      org.carbondata.core.carbon.metadata.datatype.DataType dataType, int keySize,
+      Dictionary dictionary, boolean isDirectDictionary) {
+    super(name, parentname, blockIndex);
+    this.dataType = dataType;
+    this.keySize = keySize;
+    this.dictionary = dictionary;
+    this.name = name;
+    this.parentname = parentname;
+    this.blockIndex = blockIndex;
+    this.isDirectDictionary = isDirectDictionary;
+  }
+
+  @Override public void addChildren(GenericQueryType children) {
+
+  }
+
+  @Override public String getName() {
+    return name;
+  }
+
+  @Override public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override public String getParentname() {
+    return parentname;
+  }
+
+  @Override public void setParentname(String parentname) {
+    this.parentname = parentname;
+
+  }
+
+  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
+
+  }
+
+  @Override public int getSurrogateIndex() {
+    return index;
+  }
+
+  @Override public void setSurrogateIndex(int surrIndex) {
+    index = surrIndex;
+  }
+
+  @Override public int getBlockIndex() {
+    return blockIndex;
+  }
+
+  @Override public void setBlockIndex(int blockIndex) {
+    this.blockIndex = blockIndex;
+  }
+
+  @Override public int getColsCount() {
+    return 1;
+  }
+
+  @Override public void parseBlocksAndReturnComplexColumnByteArray(
+      DimensionColumnDataChunk[] dimensionDataChunks, int rowNumber,
+      DataOutputStream dataOutputStream) throws IOException {
+    byte[] currentVal =
+        new byte[dimensionDataChunks[blockIndex].getAttributes().getColumnValueSize()];
+    copyBlockDataChunk(dimensionDataChunks, rowNumber, currentVal);
+    dataOutputStream.write(currentVal);
+  }
+
+  @Override public void setKeySize(int[] keyBlockSize) {
+    this.keySize = keyBlockSize[this.blockIndex];
+  }
+
+  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
+      throws IOException {
+  }
+
+  @Override public DataType getSchemaType() {
+    switch (dataType) {
+      case INT:
+        return new IntegerType();
+      case DOUBLE:
+        return new DoubleType();
+      case LONG:
+        return new LongType();
+      case BOOLEAN:
+        return new BooleanType();
+      case TIMESTAMP:
+        return new TimestampType();
+      default:
+        return new IntegerType();
+    }
+  }
+
+  @Override public int getKeyOrdinalForQuery() {
+    return 0;
+  }
+
+  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
+  }
+
+  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
+    readBlockDataChunk(blockChunkHolder);
+  }
+
+  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
+
+    byte[] data = new byte[keySize];
+    surrogateData.get(data);
+    Bits bit = new Bits(new int[]{keySize * 8});
+    int surrgateValue = (int)bit.getKeyArray(data)[0];
+    Object actualData = null;
+    if (isDirectDictionary) {
+      DirectDictionaryGenerator directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
+          .getDirectDictionaryGenerator(dataType);
+      actualData = directDictionaryGenerator.getValueFromSurrogate(surrgateValue);
+    } else {
+      String dictionaryValueForKey = dictionary.getDictionaryValueForKey(surrgateValue);
+      actualData = DataTypeUtil.getDataBasedOnDataType(dictionaryValueForKey, this.dataType);
+    }
+    return actualData;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/scan/complextypes/StructQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/scan/complextypes/StructQueryType.java b/core/src/main/java/org/carbondata/scan/complextypes/StructQueryType.java
new file mode 100644
index 0000000..0cb534c
--- /dev/null
+++ b/core/src/main/java/org/carbondata/scan/complextypes/StructQueryType.java
@@ -0,0 +1,184 @@
+/*
+ * 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.carbondata.scan.complextypes;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.carbondata.core.carbon.datastore.chunk.DimensionColumnDataChunk;
+import org.carbondata.scan.filter.GenericQueryType;
+import org.carbondata.scan.processor.BlocksChunkHolder;
+
+import org.apache.spark.sql.catalyst.expressions.GenericInternalRowWithSchema;
+import org.apache.spark.sql.types.DataType;
+import org.apache.spark.sql.types.Metadata;
+import org.apache.spark.sql.types.StructField;
+import org.apache.spark.sql.types.StructType;
+
+public class StructQueryType extends ComplexQueryType implements GenericQueryType {
+
+  private List<GenericQueryType> children = new ArrayList<GenericQueryType>();
+  private String name;
+  private String parentname;
+  private int blockIndex;
+  private int keyOrdinalForQuery;
+
+  public StructQueryType(String name, String parentname, int blockIndex) {
+    super(name, parentname, blockIndex);
+    this.name = name;
+    this.parentname = parentname;
+    this.blockIndex = blockIndex;
+  }
+
+  @Override public void addChildren(GenericQueryType newChild) {
+    if (this.getName().equals(newChild.getParentname())) {
+      this.children.add(newChild);
+    } else {
+      for (GenericQueryType child : this.children) {
+        child.addChildren(newChild);
+      }
+    }
+
+  }
+
+  @Override public String getName() {
+    return name;
+  }
+
+  @Override public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override public String getParentname() {
+    return parentname;
+  }
+
+  @Override public void setParentname(String parentname) {
+    this.parentname = parentname;
+
+  }
+
+  @Override public void getAllPrimitiveChildren(List<GenericQueryType> primitiveChild)
{
+    for (int i = 0; i < children.size(); i++) {
+      GenericQueryType child = children.get(i);
+      if (child instanceof PrimitiveQueryType) {
+        primitiveChild.add(child);
+      } else {
+        child.getAllPrimitiveChildren(primitiveChild);
+      }
+    }
+  }
+
+  @Override public int getSurrogateIndex() {
+    return 0;
+  }
+
+  @Override public void setSurrogateIndex(int surrIndex) {
+
+  }
+
+  @Override public int getBlockIndex() {
+    return blockIndex;
+  }
+
+  @Override public void setBlockIndex(int blockIndex) {
+    this.blockIndex = blockIndex;
+  }
+
+  @Override public int getColsCount() {
+    int colsCount = 1;
+    for (int i = 0; i < children.size(); i++) {
+      colsCount += children.get(i).getColsCount();
+    }
+    return colsCount;
+  }
+
+  @Override public void parseBlocksAndReturnComplexColumnByteArray(
+      DimensionColumnDataChunk[] dimensionColumnDataChunks, int rowNumber,
+      DataOutputStream dataOutputStream) throws IOException {
+    byte[] input = new byte[8];
+    copyBlockDataChunk(dimensionColumnDataChunks, rowNumber, input);
+    ByteBuffer byteArray = ByteBuffer.wrap(input);
+    int childElement = byteArray.getInt();
+    dataOutputStream.writeInt(childElement);
+    if (childElement == 0) {
+      // b.putInt(0);
+    } else {
+      for (int i = 0; i < childElement; i++) {
+        children.get(i)
+            .parseBlocksAndReturnComplexColumnByteArray(dimensionColumnDataChunks, rowNumber,
+                dataOutputStream);
+      }
+    }
+  }
+
+  @Override public void parseAndGetResultBytes(ByteBuffer complexData, DataOutputStream dataOutput)
+      throws IOException {
+    int childElement = complexData.getInt();
+    dataOutput.writeInt(childElement);
+    for (int i = 0; i < childElement; i++) {
+      children.get(i).parseAndGetResultBytes(complexData, dataOutput);
+    }
+  }
+
+  @Override public void setKeySize(int[] keyBlockSize) {
+    for (int i = 0; i < children.size(); i++) {
+      children.get(i).setKeySize(keyBlockSize);
+    }
+  }
+
+  @Override public DataType getSchemaType() {
+    StructField[] fields = new StructField[children.size()];
+    for (int i = 0; i < children.size(); i++) {
+      fields[i] = new StructField(children.get(i).getName(), null, true,
+          Metadata.empty());
+    }
+    return new StructType(fields);
+  }
+
+  @Override public int getKeyOrdinalForQuery() {
+    return keyOrdinalForQuery;
+  }
+
+  @Override public void setKeyOrdinalForQuery(int keyOrdinalForQuery) {
+    this.keyOrdinalForQuery = keyOrdinalForQuery;
+  }
+
+  @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder) {
+    readBlockDataChunk(blockChunkHolder);
+
+    for (int i = 0; i < children.size(); i++) {
+      children.get(i).fillRequiredBlockData(blockChunkHolder);
+    }
+  }
+
+  @Override public Object getDataBasedOnDataTypeFromSurrogates(ByteBuffer surrogateData)
{
+    int childLength = surrogateData.getInt();
+    Object[] fields = new Object[childLength];
+    for (int i = 0; i < childLength; i++) {
+      fields[i] =  children.get(i).getDataBasedOnDataTypeFromSurrogates(surrogateData);
+    }
+
+    return new GenericInternalRowWithSchema(fields, (StructType) getSchemaType());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/54fb3d28/core/src/main/java/org/carbondata/scan/executor/util/QueryUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/scan/executor/util/QueryUtil.java b/core/src/main/java/org/carbondata/scan/executor/util/QueryUtil.java
index 34760b6..3b978d7 100644
--- a/core/src/main/java/org/carbondata/scan/executor/util/QueryUtil.java
+++ b/core/src/main/java/org/carbondata/scan/executor/util/QueryUtil.java
@@ -50,9 +50,9 @@ import org.carbondata.core.keygenerator.KeyGenException;
 import org.carbondata.core.keygenerator.KeyGenerator;
 import org.carbondata.core.util.CarbonUtil;
 import org.carbondata.core.util.CarbonUtilException;
-import org.carbondata.query.complex.querytypes.ArrayQueryType;
-import org.carbondata.query.complex.querytypes.PrimitiveQueryType;
-import org.carbondata.query.complex.querytypes.StructQueryType;
+import org.carbondata.scan.complextypes.ArrayQueryType;
+import org.carbondata.scan.complextypes.PrimitiveQueryType;
+import org.carbondata.scan.complextypes.StructQueryType;
 import org.carbondata.scan.executor.exception.QueryExecutionException;
 import org.carbondata.scan.executor.infos.KeyStructureInfo;
 import org.carbondata.scan.expression.ColumnExpression;



Mime
View raw message