http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/infos/AggregatorInfo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/AggregatorInfo.java
 
b/core/src/main/java/org/carbondata/query/carbon/executor/infos/AggregatorInfo.java
deleted file mode 100644
index c9e9732..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/AggregatorInfo.java
+++ /dev/null
@@ -1,149 +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.carbon.executor.infos;
-
-import org.carbondata.core.carbon.metadata.datatype.DataType;
-
-/**
- * Info class which store all the details
- * which is required during aggregation
- */
-public class AggregatorInfo {
-
-  /**
-   * selected query measure ordinal
-   * which will be used to read the measures chunk data
-   * this will be storing the index of the measure in measures chunk
-   */
-  private int[] measureOrdinals;
-
-  /**
-   * This parameter will be used to
-   * check whether particular measure is present
-   * in the table block, if not then its default value will be used
-   */
-  private boolean[] measureExists;
-
-  /**
-   * this default value will be used to when some measure is not present
-   * in the table block, in case of restructuring of the table if user is 
adding any
-   * measure then in older block that measure wont be present so for measure 
default value
-   * will be used to aggregate in the older table block query execution
-   */
-  private Object[] defaultValues;
-
-  /**
-   * In carbon there are three type of aggregation
-   * (dimension aggregation, expression aggregation and measure aggregation)
-   * Below index will be used to set the start position of expression in 
measures
-   * aggregator array
-   */
-  private int expressionAggregatorStartIndex;
-
-  /**
-   * In carbon there are three type of aggregation
-   * (dimension aggregation, expression aggregation and measure aggregation)
-   * Below index will be used to set the start position of measures in measures
-   * aggregator array
-   */
-  private int measureAggregatorStartIndex;
-
-  /**
-   * Datatype of each measure;
-   */
-  private DataType[] measureDataTypes;
-
-  /**
-   * @return the measureOrdinal
-   */
-  public int[] getMeasureOrdinals() {
-    return measureOrdinals;
-  }
-
-  /**
-   * @param measureOrdinal the measureOrdinal to set
-   */
-  public void setMeasureOrdinals(int[] measureOrdinal) {
-    this.measureOrdinals = measureOrdinal;
-  }
-
-  /**
-   * @return the measureExists
-   */
-  public boolean[] getMeasureExists() {
-    return measureExists;
-  }
-
-  /**
-   * @param measureExists the measureExists to set
-   */
-  public void setMeasureExists(boolean[] measureExists) {
-    this.measureExists = measureExists;
-  }
-
-  /**
-   * @return the defaultValues
-   */
-  public Object[] getDefaultValues() {
-    return defaultValues;
-  }
-
-  /**
-   * @param defaultValues the defaultValues to set
-   */
-  public void setDefaultValues(Object[] defaultValues) {
-    this.defaultValues = defaultValues;
-  }
-
-  /**
-   * @return the expressionAggregatorStartIndex
-   */
-  public int getExpressionAggregatorStartIndex() {
-    return expressionAggregatorStartIndex;
-  }
-
-  /**
-   * @param expressionAggregatorStartIndex the expressionAggregatorStartIndex 
to set
-   */
-  public void setExpressionAggregatorStartIndex(int 
expressionAggregatorStartIndex) {
-    this.expressionAggregatorStartIndex = expressionAggregatorStartIndex;
-  }
-
-  /**
-   * @return the measureAggregatorStartIndex
-   */
-  public int getMeasureAggregatorStartIndex() {
-    return measureAggregatorStartIndex;
-  }
-
-  /**
-   * @param measureAggregatorStartIndex the measureAggregatorStartIndex to set
-   */
-  public void setMeasureAggregatorStartIndex(int measureAggregatorStartIndex) {
-    this.measureAggregatorStartIndex = measureAggregatorStartIndex;
-  }
-
-  public DataType[] getMeasureDataTypes() {
-    return measureDataTypes;
-  }
-
-  public void setMeasureDataTypes(DataType[] measureDataTypes) {
-    this.measureDataTypes = measureDataTypes;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/infos/BlockExecutionInfo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/BlockExecutionInfo.java
 
b/core/src/main/java/org/carbondata/query/carbon/executor/infos/BlockExecutionInfo.java
deleted file mode 100644
index 202a932..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/BlockExecutionInfo.java
+++ /dev/null
@@ -1,611 +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.carbon.executor.infos;
-
-import java.util.Map;
-
-import org.carbondata.core.cache.dictionary.Dictionary;
-import org.carbondata.core.carbon.datastore.DataRefNode;
-import org.carbondata.core.carbon.datastore.IndexKey;
-import org.carbondata.core.carbon.datastore.block.AbstractIndex;
-import org.carbondata.core.datastorage.store.impl.FileFactory.FileType;
-import org.carbondata.core.keygenerator.KeyGenerator;
-import org.carbondata.query.filter.executer.FilterExecuter;
-
-/**
- * Below class will have all the properties which needed during query execution
- * for one block
- */
-public class BlockExecutionInfo {
-
-  /**
-   * block on which query will be executed
-   */
-  private AbstractIndex blockIndex;
-
-  /**
-   * each segment key size can be different and in that case we need to update
-   * the fixed key with latest segment key generator. so this property will
-   * tell whether this is required or not if key size is same then it is not
-   * required
-   */
-  private boolean isFixedKeyUpdateRequired;
-
-  /**
-   * in case of detail+order by query when number of output record is same we
-   * need to store data in the disk, so for this check will be used to whether
-   * we can write in the disk or not
-   */
-  private boolean isFileBasedQuery;
-
-  /**
-   * id of the query. this will be used to create directory while writing the
-   * data file in case of detail+order by query
-   */
-  private String queryId;
-
-  /**
-   * this to handle limit query in case of detail query we are pushing down
-   * the limit to executor level so based on the number of limit we can
-   * process only that many records
-   */
-  private int limit;
-
-  /**
-   * below to store all the information required for aggregation during query
-   * execution
-   */
-  private AggregatorInfo aggregatorInfo;
-
-  /**
-   * this will be used to get the first tentative block from which query
-   * execution start, this will be useful in case of filter query to get the
-   * start block based on filter values
-   */
-  private IndexKey startKey;
-
-  /**
-   * this will be used to get the last tentative block till which scanning
-   * will be done, this will be useful in case of filter query to get the last
-   * block based on filter values
-   */
-  private IndexKey endKey;
-
-  /**
-   * masked byte for block which will be used to unpack the fixed length key,
-   * this will be used for updating the older block key with new block key
-   * generator
-   */
-  private int[] maskedByteForBlock;
-
-  /**
-   * flag to check whether query is detail query or aggregation query
-   */
-  private boolean isDetailQuery;
-
-  /**
-   * total number of dimension in block
-   */
-  private int totalNumberDimensionBlock;
-
-  /**
-   * total number of measure in block
-   */
-  private int totalNumberOfMeasureBlock;
-
-  /**
-   * will be used to read the dimension block from file
-   */
-  private int[] allSelectedDimensionBlocksIndexes;
-
-  /**
-   * will be used to read the measure block from file
-   */
-  private int[] allSelectedMeasureBlocksIndexes;
-
-  /**
-   * this will be used to update the older block fixed length keys with the
-   * new block fixed length key
-   */
-  private KeyStructureInfo keyStructureInfo;
-
-  /**
-   * below will be used to sort the data based
-   */
-  private SortInfo sortInfo;
-
-  /**
-   * first block from which query execution will start
-   */
-  private DataRefNode firstDataBlock;
-
-  /**
-   * number of block to be scanned in the query
-   */
-  private long numberOfBlockToScan;
-
-  /**
-   * key size of the fixed length dimension column
-   */
-  private int fixedLengthKeySize;
-
-  /**
-   * dictionary column block indexes based on query
-   */
-  private int[] dictionaryColumnBlockIndex;
-  /**
-   * no dictionary column block indexes in based on the query order
-   */
-  private int[] noDictionaryBlockIndexes;
-
-  /**
-   * key generator used for generating the table block fixed length key
-   */
-  private KeyGenerator blockKeyGenerator;
-
-  /**
-   * each column value size
-   */
-  private int[] eachColumnValueSize;
-
-  /**
-   * partition number
-   */
-  private String partitionId;
-
-  /**
-   * column group block index in file to key structure info mapping
-   */
-  private Map<Integer, KeyStructureInfo> columnGroupToKeyStructureInfo;
-
-  /**
-   * mapping of dictionary dimension to its dictionary mapping which will be
-   * used to get the actual data from dictionary for aggregation, sorting
-   */
-  private Map<String, Dictionary> columnIdToDcitionaryMapping;
-
-  /**
-   * filter tree to execute the filter
-   */
-  private FilterExecuter filterExecuterTree;
-
-  /**
-   * fileType
-   */
-  private FileType fileType;
-
-  /**
-   * whether it needs only raw byte records with out aggregation.
-   */
-  private boolean isRawRecordDetailQuery;
-
-  /**
-   * whether dimensions exist in query.
-   */
-  private boolean isDimensionsExistInQuery;
-
-  /**
-   * @return the tableBlock
-   */
-  public AbstractIndex getDataBlock() {
-    return blockIndex;
-  }
-
-  /**
-   * @param blockIndex the tableBlock to set
-   */
-  public void setDataBlock(AbstractIndex blockIndex) {
-    this.blockIndex = blockIndex;
-  }
-
-  /**
-   * @return the isFixedKeyUpdateRequired
-   */
-  public boolean isFixedKeyUpdateRequired() {
-    return isFixedKeyUpdateRequired;
-  }
-
-  /**
-   * @param isFixedKeyUpdateRequired the isFixedKeyUpdateRequired to set
-   */
-  public void setFixedKeyUpdateRequired(boolean isFixedKeyUpdateRequired) {
-    this.isFixedKeyUpdateRequired = isFixedKeyUpdateRequired;
-  }
-
-  /**
-   * @return the isFileBasedQuery
-   */
-  public boolean isFileBasedQuery() {
-    return isFileBasedQuery;
-  }
-
-  /**
-   * @param isFileBasedQuery the isFileBasedQuery to set
-   */
-  public void setFileBasedQuery(boolean isFileBasedQuery) {
-    this.isFileBasedQuery = isFileBasedQuery;
-  }
-
-  /**
-   * @return the queryId
-   */
-  public String getQueryId() {
-    return queryId;
-  }
-
-  /**
-   * @param queryId the queryId to set
-   */
-  public void setQueryId(String queryId) {
-    this.queryId = queryId;
-  }
-
-  /**
-   * @return the limit
-   */
-  public int getLimit() {
-    return limit;
-  }
-
-  /**
-   * @param limit the limit to set
-   */
-  public void setLimit(int limit) {
-    this.limit = limit;
-  }
-
-  /**
-   * @return the aggregatorInfos
-   */
-  public AggregatorInfo getAggregatorInfo() {
-    return aggregatorInfo;
-  }
-
-  /**
-   * @param aggregatorInfo the aggregatorInfos to set
-   */
-  public void setAggregatorInfo(AggregatorInfo aggregatorInfo) {
-    this.aggregatorInfo = aggregatorInfo;
-  }
-
-  /**
-   * @return the startKey
-   */
-  public IndexKey getStartKey() {
-    return startKey;
-  }
-
-  /**
-   * @param startKey the startKey to set
-   */
-  public void setStartKey(IndexKey startKey) {
-    this.startKey = startKey;
-  }
-
-  /**
-   * @return the endKey
-   */
-  public IndexKey getEndKey() {
-    return endKey;
-  }
-
-  /**
-   * @param endKey the endKey to set
-   */
-  public void setEndKey(IndexKey endKey) {
-    this.endKey = endKey;
-  }
-
-  /**
-   * @return the maskedByteForBlock
-   */
-  public int[] getMaskedByteForBlock() {
-    return maskedByteForBlock;
-  }
-
-  /**
-   * @param maskedByteForBlock the maskedByteForBlock to set
-   */
-  public void setMaskedByteForBlock(int[] maskedByteForBlock) {
-    this.maskedByteForBlock = maskedByteForBlock;
-  }
-
-  /**
-   * @return the isDetailQuery
-   */
-  public boolean isDetailQuery() {
-    return isDetailQuery;
-  }
-
-  /**
-   * @param isDetailQuery the isDetailQuery to set
-   */
-  public void setDetailQuery(boolean isDetailQuery) {
-    this.isDetailQuery = isDetailQuery;
-  }
-
-  /**
-   * @return the totalNumberDimensionBlock
-   */
-  public int getTotalNumberDimensionBlock() {
-    return totalNumberDimensionBlock;
-  }
-
-  /**
-   * @param totalNumberDimensionBlock the totalNumberDimensionBlock to set
-   */
-  public void setTotalNumberDimensionBlock(int totalNumberDimensionBlock) {
-    this.totalNumberDimensionBlock = totalNumberDimensionBlock;
-  }
-
-  /**
-   * @return the totalNumberOfMeasureBlock
-   */
-  public int getTotalNumberOfMeasureBlock() {
-    return totalNumberOfMeasureBlock;
-  }
-
-  /**
-   * @param totalNumberOfMeasureBlock the totalNumberOfMeasureBlock to set
-   */
-  public void setTotalNumberOfMeasureBlock(int totalNumberOfMeasureBlock) {
-    this.totalNumberOfMeasureBlock = totalNumberOfMeasureBlock;
-  }
-
-  /**
-   * @return the allSelectedDimensionBlocksIndexes
-   */
-  public int[] getAllSelectedDimensionBlocksIndexes() {
-    return allSelectedDimensionBlocksIndexes;
-  }
-
-  /**
-   * @param allSelectedDimensionBlocksIndexes the 
allSelectedDimensionBlocksIndexes to set
-   */
-  public void setAllSelectedDimensionBlocksIndexes(int[] 
allSelectedDimensionBlocksIndexes) {
-    this.allSelectedDimensionBlocksIndexes = allSelectedDimensionBlocksIndexes;
-  }
-
-  /**
-   * @return the allSelectedMeasureBlocksIndexes
-   */
-  public int[] getAllSelectedMeasureBlocksIndexes() {
-    return allSelectedMeasureBlocksIndexes;
-  }
-
-  /**
-   * @param allSelectedMeasureBlocksIndexes the 
allSelectedMeasureBlocksIndexes to set
-   */
-  public void setAllSelectedMeasureBlocksIndexes(int[] 
allSelectedMeasureBlocksIndexes) {
-    this.allSelectedMeasureBlocksIndexes = allSelectedMeasureBlocksIndexes;
-  }
-
-  /**
-   * @return the restructureInfos
-   */
-  public KeyStructureInfo getKeyStructureInfo() {
-    return keyStructureInfo;
-  }
-
-  /**
-   * @param keyStructureInfo the restructureInfos to set
-   */
-  public void setKeyStructureInfo(KeyStructureInfo keyStructureInfo) {
-    this.keyStructureInfo = keyStructureInfo;
-  }
-
-  /**
-   * @return the sortInfos
-   */
-  public SortInfo getSortInfo() {
-    return sortInfo;
-  }
-
-  /**
-   * @param sortInfo the sortInfos to set
-   */
-  public void setSortInfo(SortInfo sortInfo) {
-    this.sortInfo = sortInfo;
-  }
-
-  /**
-   * @return the firstDataBlock
-   */
-  public DataRefNode getFirstDataBlock() {
-    return firstDataBlock;
-  }
-
-  /**
-   * @param firstDataBlock the firstDataBlock to set
-   */
-  public void setFirstDataBlock(DataRefNode firstDataBlock) {
-    this.firstDataBlock = firstDataBlock;
-  }
-
-  /**
-   * @return the numberOfBlockToScan
-   */
-  public long getNumberOfBlockToScan() {
-    return numberOfBlockToScan;
-  }
-
-  /**
-   * @param numberOfBlockToScan the numberOfBlockToScan to set
-   */
-  public void setNumberOfBlockToScan(long numberOfBlockToScan) {
-    this.numberOfBlockToScan = numberOfBlockToScan;
-  }
-
-  /**
-   * @return the fixedLengthKeySize
-   */
-  public int getFixedLengthKeySize() {
-    return fixedLengthKeySize;
-  }
-
-  /**
-   * @param fixedLengthKeySize the fixedLengthKeySize to set
-   */
-  public void setFixedLengthKeySize(int fixedLengthKeySize) {
-    this.fixedLengthKeySize = fixedLengthKeySize;
-  }
-
-  /**
-   * @return the filterEvaluatorTree
-   */
-  public FilterExecuter getFilterExecuterTree() {
-    return filterExecuterTree;
-  }
-
-  /**
-   * @param filterExecuterTree the filterEvaluatorTree to set
-   */
-  public void setFilterExecuterTree(FilterExecuter filterExecuterTree) {
-    this.filterExecuterTree = filterExecuterTree;
-  }
-
-  /**
-   * @return the tableBlockKeyGenerator
-   */
-  public KeyGenerator getBlockKeyGenerator() {
-    return blockKeyGenerator;
-  }
-
-  /**
-   * @param tableBlockKeyGenerator the tableBlockKeyGenerator to set
-   */
-  public void setBlockKeyGenerator(KeyGenerator tableBlockKeyGenerator) {
-    this.blockKeyGenerator = tableBlockKeyGenerator;
-  }
-
-  /**
-   * @return the eachColumnValueSize
-   */
-  public int[] getEachColumnValueSize() {
-    return eachColumnValueSize;
-  }
-
-  /**
-   * @param eachColumnValueSize the eachColumnValueSize to set
-   */
-  public void setEachColumnValueSize(int[] eachColumnValueSize) {
-    this.eachColumnValueSize = eachColumnValueSize;
-  }
-
-  /**
-   * @return the partitionId
-   */
-  public String getPartitionId() {
-    return partitionId;
-  }
-
-  /**
-   * @param partitionId the partitionId to set
-   */
-  public void setPartitionId(String partitionId) {
-    this.partitionId = partitionId;
-  }
-
-  /**
-   * @return the dictionaryColumnBlockIndex
-   */
-  public int[] getDictionaryColumnBlockIndex() {
-    return dictionaryColumnBlockIndex;
-  }
-
-  /**
-   * @param dictionaryColumnBlockIndex the dictionaryColumnBlockIndex to set
-   */
-  public void setDictionaryColumnBlockIndex(int[] dictionaryColumnBlockIndex) {
-    this.dictionaryColumnBlockIndex = dictionaryColumnBlockIndex;
-  }
-
-  /**
-   * @return the noDictionaryBlockIndexes
-   */
-  public int[] getNoDictionaryBlockIndexes() {
-    return noDictionaryBlockIndexes;
-  }
-
-  /**
-   * @param noDictionaryBlockIndexes the noDictionaryBlockIndexes to set
-   */
-  public void setNoDictionaryBlockIndexes(int[] noDictionaryBlockIndexes) {
-    this.noDictionaryBlockIndexes = noDictionaryBlockIndexes;
-  }
-
-  /**
-   * @return the columnGroupToKeyStructureInfo
-   */
-  public Map<Integer, KeyStructureInfo> getColumnGroupToKeyStructureInfo() {
-    return columnGroupToKeyStructureInfo;
-  }
-
-  /**
-   * @param columnGroupToKeyStructureInfo the columnGroupToKeyStructureInfo to 
set
-   */
-  public void setColumnGroupToKeyStructureInfo(
-      Map<Integer, KeyStructureInfo> columnGroupToKeyStructureInfo) {
-    this.columnGroupToKeyStructureInfo = columnGroupToKeyStructureInfo;
-  }
-
-  /**
-   * @return the columnIdToDcitionaryMapping
-   */
-  public Map<String, Dictionary> getColumnIdToDcitionaryMapping() {
-    return columnIdToDcitionaryMapping;
-  }
-
-  /**
-   * @param columnIdToDcitionaryMapping the columnIdToDcitionaryMapping to set
-   */
-  public void setColumnIdToDcitionaryMapping(Map<String, Dictionary> 
columnIdToDcitionaryMapping) {
-    this.columnIdToDcitionaryMapping = columnIdToDcitionaryMapping;
-  }
-
-  /**
-   * @return the fileType
-   */
-  public FileType getFileType() {
-    return fileType;
-  }
-
-  /**
-   * @param fileType the fileType to set
-   */
-  public void setFileType(FileType fileType) {
-    this.fileType = fileType;
-  }
-
-  public boolean isRawRecordDetailQuery() {
-    return isRawRecordDetailQuery;
-  }
-
-  public void setRawRecordDetailQuery(boolean rawRecordDetailQuery) {
-    isRawRecordDetailQuery = rawRecordDetailQuery;
-  }
-
-  public boolean isDimensionsExistInQuery() {
-    return isDimensionsExistInQuery;
-  }
-
-  public void setDimensionsExistInQuery(boolean dimensionsExistInQuery) {
-    isDimensionsExistInQuery = dimensionsExistInQuery;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/infos/KeyStructureInfo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/KeyStructureInfo.java
 
b/core/src/main/java/org/carbondata/query/carbon/executor/infos/KeyStructureInfo.java
deleted file mode 100644
index 75e65a2..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/KeyStructureInfo.java
+++ /dev/null
@@ -1,125 +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.carbon.executor.infos;
-
-import org.carbondata.core.keygenerator.KeyGenerator;
-
-/**
- * Below class will store the structure of the key
- * used during query execution
- */
-public class KeyStructureInfo {
-
-  /**
-   * it's actually a latest key generator
-   * last table block as this key generator will be used to
-   * to update the mdkey of the older slice with the new slice
-   */
-  private KeyGenerator keyGenerator;
-
-  /**
-   * mask bytes ranges for the query
-   */
-  private int[] maskByteRanges;
-
-  /**
-   * masked bytes of the query
-   */
-  private int[] maskedBytes;
-
-  /**
-   * max key for query execution
-   */
-  private byte[] maxKey;
-
-  /**
-   * mdkey start index of block
-   */
-  private int blockMdKeyStartOffset;
-
-  /**
-   * @return the keyGenerator
-   */
-  public KeyGenerator getKeyGenerator() {
-    return keyGenerator;
-  }
-
-  /**
-   * @param keyGenerator the keyGenerator to set
-   */
-  public void setKeyGenerator(KeyGenerator keyGenerator) {
-    this.keyGenerator = keyGenerator;
-  }
-
-  /**
-   * @return the maskByteRanges
-   */
-  public int[] getMaskByteRanges() {
-    return maskByteRanges;
-  }
-
-  /**
-   * @param maskByteRanges the maskByteRanges to set
-   */
-  public void setMaskByteRanges(int[] maskByteRanges) {
-    this.maskByteRanges = maskByteRanges;
-  }
-
-  /**
-   * @return the maskedBytes
-   */
-  public int[] getMaskedBytes() {
-    return maskedBytes;
-  }
-
-  /**
-   * @param maskedBytes the maskedBytes to set
-   */
-  public void setMaskedBytes(int[] maskedBytes) {
-    this.maskedBytes = maskedBytes;
-  }
-
-  /**
-   * @return the maxKey
-   */
-  public byte[] getMaxKey() {
-    return maxKey;
-  }
-
-  /**
-   * @param maxKey the maxKey to set
-   */
-  public void setMaxKey(byte[] maxKey) {
-    this.maxKey = maxKey;
-  }
-
-  /**
-   * @param startOffset
-   */
-  public void setBlockMdKeyStartOffset(int startOffset) {
-    this.blockMdKeyStartOffset = startOffset;
-  }
-
-  /**
-   * @return
-   */
-  public int getBlockMdKeyStartOffset() {
-    return this.blockMdKeyStartOffset;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/infos/SortInfo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/SortInfo.java 
b/core/src/main/java/org/carbondata/query/carbon/executor/infos/SortInfo.java
deleted file mode 100644
index 9ab2e25..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/infos/SortInfo.java
+++ /dev/null
@@ -1,125 +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.carbon.executor.infos;
-
-import java.util.List;
-
-import org.carbondata.query.carbon.model.QueryDimension;
-
-/**
- * Below class holds the order by information about the query
- */
-public class SortInfo {
-
-  /**
-   * sorting order of a dimension
-   */
-  private byte[] dimensionSortOrder;
-
-  /**
-   * byte range of each dimension present in the order by
-   */
-  private int[][] maskedByteRangeForSorting;
-
-  /**
-   * dimension indexes which is used in order bye
-   */
-  private byte[] sortDimensionIndex;
-
-  /**
-   * mask key of each dimension
-   * this will be used to sort the dimension
-   */
-  private byte[][] dimensionMaskKeyForSorting;
-
-  /**
-   * sortDimension
-   */
-  private List<QueryDimension> sortDimension;
-
-  /**
-   * @return the dimensionSortOrder
-   */
-  public byte[] getDimensionSortOrder() {
-    return dimensionSortOrder;
-  }
-
-  /**
-   * @param dimensionSortOrder the dimensionSortOrder to set
-   */
-  public void setDimensionSortOrder(byte[] dimensionSortOrder) {
-    this.dimensionSortOrder = dimensionSortOrder;
-  }
-
-  /**
-   * @return the maskedByteRangeForSorting
-   */
-  public int[][] getMaskedByteRangeForSorting() {
-    return maskedByteRangeForSorting;
-  }
-
-  /**
-   * @param maskedByteRangeForSorting the maskedByteRangeForSorting to set
-   */
-  public void setMaskedByteRangeForSorting(int[][] maskedByteRangeForSorting) {
-    this.maskedByteRangeForSorting = maskedByteRangeForSorting;
-  }
-
-  /**
-   * @return the sortDimensionIndex
-   */
-  public byte[] getSortDimensionIndex() {
-    return sortDimensionIndex;
-  }
-
-  /**
-   * @param sortDimensionIndex the sortDimensionIndex to set
-   */
-  public void setSortDimensionIndex(byte[] sortDimensionIndex) {
-    this.sortDimensionIndex = sortDimensionIndex;
-  }
-
-  /**
-   * @return the dimensionMaskKeyForSorting
-   */
-  public byte[][] getDimensionMaskKeyForSorting() {
-    return dimensionMaskKeyForSorting;
-  }
-
-  /**
-   * @param dimensionMaskKeyForSorting the dimensionMaskKeyForSorting to set
-   */
-  public void setDimensionMaskKeyForSorting(byte[][] 
dimensionMaskKeyForSorting) {
-    this.dimensionMaskKeyForSorting = dimensionMaskKeyForSorting;
-  }
-
-  /**
-   * @return the sortDimension
-   */
-  public List<QueryDimension> getSortDimension() {
-    return sortDimension;
-  }
-
-  /**
-   * @param sortDimension the sortDimension to set
-   */
-  public void setSortDimension(List<QueryDimension> sortDimension) {
-    this.sortDimension = sortDimension;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/internal/InternalQueryExecutor.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/internal/InternalQueryExecutor.java
 
b/core/src/main/java/org/carbondata/query/carbon/executor/internal/InternalQueryExecutor.java
deleted file mode 100644
index 089ee82..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/internal/InternalQueryExecutor.java
+++ /dev/null
@@ -1,47 +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.carbon.executor.internal;
-
-import java.util.List;
-
-import org.carbondata.core.datastorage.store.FileHolder;
-import org.carbondata.core.iterator.CarbonIterator;
-import org.carbondata.query.carbon.executor.exception.QueryExecutionException;
-import org.carbondata.query.carbon.executor.infos.BlockExecutionInfo;
-import org.carbondata.query.carbon.result.Result;
-
-/**
- * Query executor interface which will be used to execute the
- * query
- */
-public interface InternalQueryExecutor {
-
-  /**
-   * Method will be used to execute the query
-   *
-   * @param blockExecutionInfos    list of block execution info.
-   *                               execution info will have all the parameters 
required for
-   *                               query execution
-   * @param blockIndexToBeExecuted index of the block to be executed
-   * @return result iterator
-   * @throws QueryExecutionException
-   */
-  CarbonIterator<Result> executeQuery(List<BlockExecutionInfo> 
blockExecutionInfos,
-      int[] blockIndexToBeExecuted, FileHolder fileReader) throws 
QueryExecutionException;
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/util/QueryUtil.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/util/QueryUtil.java 
b/core/src/main/java/org/carbondata/query/carbon/executor/util/QueryUtil.java
deleted file mode 100644
index 516230d..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/util/QueryUtil.java
+++ /dev/null
@@ -1,718 +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.carbon.executor.util;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.carbondata.core.cache.Cache;
-import org.carbondata.core.cache.CacheProvider;
-import org.carbondata.core.cache.CacheType;
-import org.carbondata.core.cache.dictionary.Dictionary;
-import org.carbondata.core.cache.dictionary.DictionaryColumnUniqueIdentifier;
-import org.carbondata.core.carbon.AbsoluteTableIdentifier;
-import org.carbondata.core.carbon.CarbonTableIdentifier;
-import org.carbondata.core.carbon.datastore.block.SegmentProperties;
-import org.carbondata.core.carbon.metadata.CarbonMetadata;
-import org.carbondata.core.carbon.metadata.encoder.Encoding;
-import org.carbondata.core.carbon.metadata.schema.table.CarbonTable;
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonDimension;
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonMeasure;
-import org.carbondata.core.constants.CarbonCommonConstants;
-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.carbon.executor.exception.QueryExecutionException;
-import org.carbondata.query.carbon.executor.infos.KeyStructureInfo;
-import org.carbondata.query.carbon.model.QueryDimension;
-import org.carbondata.query.carbon.model.QueryMeasure;
-import org.carbondata.query.carbon.model.QueryModel;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-/**
- * Utility class for query execution
- */
-public class QueryUtil {
-
-  /**
-   * Below method will be used to get the masked byte range based on the query
-   * dimension. It will give the range in the mdkey. This will be used to get
-   * the actual key array from masked mdkey
-   *
-   * @param queryDimensions query dimension selected in query
-   * @param keyGenerator    key generator
-   * @return masked key
-   */
-  public static int[] getMaskedByteRange(List<QueryDimension> queryDimensions,
-      KeyGenerator keyGenerator) {
-    Set<Integer> byteRangeSet = new TreeSet<Integer>();
-    int[] byteRange = null;
-    for (int i = 0; i < queryDimensions.size(); i++) {
-
-      // as no dictionary column and complex type columns
-      // are not selected in the mdkey
-      // so we will not select the those dimension for calculating the
-      // range
-      if (queryDimensions.get(i).getDimension().getKeyOrdinal() == -1) {
-        continue;
-      }
-      // get the offset of the dimension in the mdkey
-      byteRange =
-          
keyGenerator.getKeyByteOffsets(queryDimensions.get(i).getDimension().getKeyOrdinal());
-      for (int j = byteRange[0]; j <= byteRange[1]; j++) {
-        byteRangeSet.add(j);
-      }
-    }
-    int[] maksedByteRange = new int[byteRangeSet.size()];
-    int index = 0;
-    Iterator<Integer> iterator = byteRangeSet.iterator();
-    // add the masked byte range
-    while (iterator.hasNext()) {
-      maksedByteRange[index++] = iterator.next();
-    }
-    return maksedByteRange;
-  }
-
-  public static int[] getMaskedByteRangeBasedOrdinal(List<Integer> ordinals,
-      KeyGenerator keyGenerator) {
-    Set<Integer> byteRangeSet = new TreeSet<Integer>();
-    int[] byteRange = null;
-    for (int i = 0; i < ordinals.size(); i++) {
-
-      // get the offset of the dimension in the mdkey
-      byteRange = keyGenerator.getKeyByteOffsets(ordinals.get(i));
-      for (int j = byteRange[0]; j <= byteRange[1]; j++) {
-        byteRangeSet.add(j);
-      }
-    }
-    int[] maksedByteRange = new int[byteRangeSet.size()];
-    int index = 0;
-    Iterator<Integer> iterator = byteRangeSet.iterator();
-    // add the masked byte range
-    while (iterator.hasNext()) {
-      maksedByteRange[index++] = iterator.next();
-    }
-    return maksedByteRange;
-  }
-
-  /**
-   * Below method will return the max key based on the dimension ordinal
-   *
-   * @param keyOrdinalList
-   * @param generator
-   * @return
-   * @throws KeyGenException
-   */
-  public static byte[] getMaxKeyBasedOnOrinal(List<Integer> keyOrdinalList, 
KeyGenerator generator)
-      throws KeyGenException {
-    long[] max = new long[generator.getDimCount()];
-    Arrays.fill(max, 0L);
-
-    for (int i = 0; i < keyOrdinalList.size(); i++) {
-      // adding for dimension which is selected in query
-      max[keyOrdinalList.get(i)] = Long.MAX_VALUE;
-    }
-    return generator.generateKey(max);
-  }
-
-  /**
-   * To get the max key based on dimensions. i.e. all other dimensions will be
-   * set to 0 bits and the required query dimension will be masked with all
-   * LONG.MAX so that we can mask key and then compare while aggregating This
-   * can be useful during filter query when only few dimensions were selected
-   * out of row group
-   *
-   * @param queryDimensions dimension selected in query
-   * @param generator       key generator
-   * @return max key for dimension
-   * @throws KeyGenException if any problem while generating the key
-   */
-  public static byte[] getMaxKeyBasedOnDimensions(List<QueryDimension> 
queryDimensions,
-      KeyGenerator generator) throws KeyGenException {
-    long[] max = new long[generator.getDimCount()];
-    Arrays.fill(max, 0L);
-
-    for (int i = 0; i < queryDimensions.size(); i++) {
-      // as no dictionary column and complex type columns
-      // are not selected in the mdkey
-      // so we will not select the those dimension for calculating the
-      // range
-      if (queryDimensions.get(i).getDimension().getKeyOrdinal() == -1) {
-        continue;
-      }
-      // adding for dimension which is selected in query
-      max[queryDimensions.get(i).getDimension().getKeyOrdinal()] = 
Long.MAX_VALUE;
-    }
-
-    return generator.generateKey(max);
-  }
-
-  /**
-   * Below method will be used to get the masked key for query
-   *
-   * @param keySize         size of the masked key
-   * @param maskedKeyRanges masked byte range
-   * @return masked bytes
-   */
-  public static int[] getMaskedByte(int keySize, int[] maskedKeyRanges) {
-    int[] maskedKey = new int[keySize];
-    // all the non selected dimension will be filled with -1
-    Arrays.fill(maskedKey, -1);
-    for (int i = 0; i < maskedKeyRanges.length; i++) {
-      maskedKey[maskedKeyRanges[i]] = i;
-    }
-    return maskedKey;
-  }
-
-  /**
-   * Below method will be used to get the dimension block index in file based
-   * on query dimension
-   *
-   * @param queryDimensions                query dimension
-   * @param dimensionOrdinalToBlockMapping mapping of dimension block in file 
to query dimension
-   * @return block index of file
-   */
-  public static int[] getDimensionsBlockIndexes(List<QueryDimension> 
queryDimensions,
-      Map<Integer, Integer> dimensionOrdinalToBlockMapping,
-      List<CarbonDimension> customAggregationDimension) {
-    // using set as in row group columns will point to same block
-    Set<Integer> dimensionBlockIndex = new HashSet<Integer>();
-    for (int i = 0; i < queryDimensions.size(); i++) {
-      dimensionBlockIndex.add(
-          
dimensionOrdinalToBlockMapping.get(queryDimensions.get(i).getDimension().getOrdinal()));
-    }
-    for (int i = 0; i < customAggregationDimension.size(); i++) {
-      dimensionBlockIndex
-          
.add(dimensionOrdinalToBlockMapping.get(customAggregationDimension.get(i).getOrdinal()));
-    }
-    return ArrayUtils
-        .toPrimitive(dimensionBlockIndex.toArray(new 
Integer[dimensionBlockIndex.size()]));
-  }
-
-  /**
-   * Below method will be used to get the dictionary mapping for all the
-   * dictionary encoded dimension present in the query
-   *
-   * @param queryDimensions            query dimension present in the query 
this will be used to
-   *                                   convert the result from surrogate key 
to actual data
-   * @param absoluteTableIdentifier    absolute table identifier
-   * @return dimension unique id to its dictionary map
-   * @throws QueryExecutionException
-   */
-  public static Map<String, Dictionary> getDimensionDictionaryDetail(
-      List<QueryDimension> queryDimensions,
-      AbsoluteTableIdentifier absoluteTableIdentifier) throws 
QueryExecutionException {
-    // to store dimension unique column id list, this is required as
-    // dimension can be present in
-    // query dimension, as well as some aggregation function will be applied
-    // in the same dimension
-    // so we need to get only one instance of dictionary
-    // direct dictionary skip is done only for the dictionary lookup
-    Set<String> dictionaryDimensionFromQuery = new HashSet<String>();
-    for (int i = 0; i < queryDimensions.size(); i++) {
-      List<Encoding> encodingList = 
queryDimensions.get(i).getDimension().getEncoder();
-      if (CarbonUtil.hasEncoding(encodingList, Encoding.DICTIONARY) && 
!CarbonUtil
-          .hasEncoding(encodingList, Encoding.DIRECT_DICTIONARY)) {
-        
dictionaryDimensionFromQuery.add(queryDimensions.get(i).getDimension().getColumnId());
-      }
-    }
-    // converting to list as api exposed needed list which i think
-    // is not correct
-    List<String> dictionaryColumnIdList =
-        new ArrayList<String>(dictionaryDimensionFromQuery.size());
-    dictionaryColumnIdList.addAll(dictionaryDimensionFromQuery);
-    return getDictionaryMap(dictionaryColumnIdList, absoluteTableIdentifier);
-  }
-
-  /**
-   * Below method will be used to get the column id to its dictionary mapping
-   *
-   * @param dictionaryColumnIdList  dictionary column list
-   * @param absoluteTableIdentifier absolute table identifier
-   * @return dictionary mapping
-   * @throws QueryExecutionException
-   */
-  private static Map<String, Dictionary> getDictionaryMap(List<String> 
dictionaryColumnIdList,
-      AbsoluteTableIdentifier absoluteTableIdentifier) throws 
QueryExecutionException {
-    // this for dictionary unique identifier
-    List<DictionaryColumnUniqueIdentifier> dictionaryColumnUniqueIdentifiers =
-        getDictionaryColumnUniqueIdentifierList(dictionaryColumnIdList,
-            absoluteTableIdentifier.getCarbonTableIdentifier());
-    CacheProvider cacheProvider = CacheProvider.getInstance();
-    Cache forwardDictionaryCache = cacheProvider
-        .createCache(CacheType.FORWARD_DICTIONARY, 
absoluteTableIdentifier.getStorePath());
-    List<Dictionary> columnDictionaryList = null;
-    try {
-      columnDictionaryList = 
forwardDictionaryCache.getAll(dictionaryColumnUniqueIdentifiers);
-    } catch (CarbonUtilException e) {
-      throw new QueryExecutionException(e);
-    }
-    Map<String, Dictionary> columnDictionaryMap = new 
HashMap<>(columnDictionaryList.size());
-    for (int i = 0; i < dictionaryColumnUniqueIdentifiers.size(); i++) {
-      // TODO: null check for column dictionary, if cache size is less it
-      // might return null here, in that case throw exception
-      columnDictionaryMap.put(dictionaryColumnIdList.get(i), 
columnDictionaryList.get(i));
-    }
-    return columnDictionaryMap;
-  }
-
-  /**
-   * Below method will be used to get the dictionary column unique identifier
-   *
-   * @param dictionaryColumnIdList dictionary
-   * @param carbonTableIdentifier
-   * @return
-   */
-  private static List<DictionaryColumnUniqueIdentifier> 
getDictionaryColumnUniqueIdentifierList(
-      List<String> dictionaryColumnIdList, CarbonTableIdentifier 
carbonTableIdentifier) {
-    CarbonTable carbonTable =
-        
CarbonMetadata.getInstance().getCarbonTable(carbonTableIdentifier.getTableUniqueName());
-    List<DictionaryColumnUniqueIdentifier> dictionaryColumnUniqueIdentifiers =
-        new ArrayList<>(dictionaryColumnIdList.size());
-    for (String columnIdentifier : dictionaryColumnIdList) {
-      CarbonDimension dimension = CarbonMetadata.getInstance()
-          .getCarbonDimensionBasedOnColIdentifier(carbonTable, 
columnIdentifier);
-      DictionaryColumnUniqueIdentifier dictionaryColumnUniqueIdentifier =
-          new DictionaryColumnUniqueIdentifier(carbonTableIdentifier, 
columnIdentifier,
-              dimension.getDataType());
-      dictionaryColumnUniqueIdentifiers.add(dictionaryColumnUniqueIdentifier);
-    }
-    return dictionaryColumnUniqueIdentifiers;
-  }
-
-  /**
-   * Below method will used to get the method will be used to get the measure
-   * block indexes to be read from the file
-   *
-   * @param queryMeasures              query measure
-   * @param expressionMeasure          measure present in the expression
-   * @param ordinalToBlockIndexMapping measure ordinal to block mapping
-   * @return block indexes
-   */
-  public static int[] getMeasureBlockIndexes(List<QueryMeasure> queryMeasures,
-      List<CarbonMeasure> expressionMeasure, Map<Integer, Integer> 
ordinalToBlockIndexMapping) {
-    Set<Integer> measureBlockIndex = new HashSet<Integer>();
-    for (int i = 0; i < queryMeasures.size(); i++) {
-      measureBlockIndex
-          
.add(ordinalToBlockIndexMapping.get(queryMeasures.get(i).getMeasure().getOrdinal()));
-    }
-    for (int i = 0; i < expressionMeasure.size(); i++) {
-      
measureBlockIndex.add(ordinalToBlockIndexMapping.get(expressionMeasure.get(i).getOrdinal()));
-    }
-    return ArrayUtils.toPrimitive(measureBlockIndex.toArray(new 
Integer[measureBlockIndex.size()]));
-  }
-
-  /**
-   * Below method will be used to get the masked byte range for dimension
-   * which is present in order by
-   *
-   * @param orderByDimensions order by dimension
-   * @param generator         key generator
-   * @param maskedRanges      masked byte range for dimension
-   * @return range of masked byte for order by dimension
-   */
-  public static int[][] getMaskedByteRangeForSorting(List<QueryDimension> 
orderByDimensions,
-      KeyGenerator generator, int[] maskedRanges) {
-    int[][] dimensionCompareIndex = new int[orderByDimensions.size()][];
-    int index = 0;
-    for (int i = 0; i < dimensionCompareIndex.length; i++) {
-      Set<Integer> integers = new TreeSet<Integer>();
-      if 
(!orderByDimensions.get(i).getDimension().getEncoder().contains(Encoding.DICTIONARY)
-          || orderByDimensions.get(i).getDimension().numberOfChild() > 0) {
-        continue;
-      }
-      int[] range =
-          
generator.getKeyByteOffsets(orderByDimensions.get(i).getDimension().getKeyOrdinal());
-      for (int j = range[0]; j <= range[1]; j++) {
-        integers.add(j);
-      }
-      dimensionCompareIndex[index] = new int[integers.size()];
-      int j = 0;
-      for (Iterator<Integer> iterator = integers.iterator(); 
iterator.hasNext(); ) {
-        Integer integer = (Integer) iterator.next();
-        dimensionCompareIndex[index][j++] = integer.intValue();
-      }
-      index++;
-    }
-    for (int i = 0; i < dimensionCompareIndex.length; i++) {
-      if (null == dimensionCompareIndex[i]) {
-        continue;
-      }
-      int[] range = dimensionCompareIndex[i];
-      if (null != range) {
-        for (int j = 0; j < range.length; j++) {
-          for (int k = 0; k < maskedRanges.length; k++) {
-            if (range[j] == maskedRanges[k]) {
-              range[j] = k;
-              break;
-            }
-          }
-        }
-      }
-
-    }
-    return dimensionCompareIndex;
-  }
-
-  /**
-   * Below method will be used to get the masked key for sorting
-   *
-   * @param orderDimensions           query dimension
-   * @param generator                 key generator
-   * @param maskedByteRangeForSorting masked byte range for sorting
-   * @param maskedRanges              masked range
-   * @return masked byte range
-   * @throws QueryExecutionException
-   */
-  public static byte[][] getMaksedKeyForSorting(List<QueryDimension> 
orderDimensions,
-      KeyGenerator generator, int[][] maskedByteRangeForSorting, int[] 
maskedRanges)
-      throws QueryExecutionException {
-    byte[][] maskedKey = new byte[orderDimensions.size()][];
-    byte[] mdKey = null;
-    long[] key = null;
-    byte[] maskedMdKey = null;
-    try {
-      if (null != maskedByteRangeForSorting) {
-        for (int i = 0; i < maskedByteRangeForSorting.length; i++) {
-          if (null == maskedByteRangeForSorting[i]) {
-            continue;
-          }
-          key = new long[generator.getDimCount()];
-          maskedKey[i] = new byte[maskedByteRangeForSorting[i].length];
-          key[orderDimensions.get(i).getDimension().getKeyOrdinal()] = 
Long.MAX_VALUE;
-          mdKey = generator.generateKey(key);
-          maskedMdKey = new byte[maskedRanges.length];
-          for (int k = 0; k < maskedMdKey.length; k++) { // CHECKSTYLE:OFF
-            // Approval
-            // No:Approval-V1R2C10_001
-            maskedMdKey[k] = mdKey[maskedRanges[k]];
-          }
-          for (int j = 0; j < maskedByteRangeForSorting[i].length; j++) {
-            maskedKey[i][j] = maskedMdKey[maskedByteRangeForSorting[i][j]];
-          }// CHECKSTYLE:ON
-
-        }
-      }
-    } catch (KeyGenException e) {
-      throw new QueryExecutionException(e);
-    }
-    return maskedKey;
-  }
-
-  /**
-   * Below method will be used to get mapping whether dimension is present in
-   * order by or not
-   *
-   * @param sortedDimensions sort dimension present in order by query
-   * @param queryDimensions  query dimension
-   * @return sort dimension indexes
-   */
-  public static byte[] getSortDimensionIndexes(List<QueryDimension> 
sortedDimensions,
-      List<QueryDimension> queryDimensions) {
-    byte[] sortedDims = new byte[queryDimensions.size()];
-    int indexOf = 0;
-    for (int i = 0; i < sortedDims.length; i++) {
-      indexOf = sortedDimensions.indexOf(queryDimensions.get(i));
-      if (indexOf > -1) {
-        sortedDims[i] = 1;
-      }
-    }
-    return sortedDims;
-  }
-
-  /**
-   * Below method will be used to get the mapping of block index and its
-   * restructuring info
-   *
-   * @param queryDimensions   query dimension from query model
-   * @param segmentProperties segment properties
-   * @return map of block index to its restructuring info
-   * @throws KeyGenException if problem while key generation
-   */
-  public static Map<Integer, KeyStructureInfo> getColumnGroupKeyStructureInfo(
-      List<QueryDimension> queryDimensions, SegmentProperties 
segmentProperties)
-      throws KeyGenException {
-    Map<Integer, KeyStructureInfo> rowGroupToItsRSInfo = new HashMap<Integer, 
KeyStructureInfo>();
-    // get column group id and its ordinal mapping of column group
-    Map<Integer, List<Integer>> columnGroupAndItsOrdinalMappingForQuery =
-        getColumnGroupAndItsOrdinalMapping(queryDimensions);
-    KeyGenerator keyGenerator = segmentProperties.getDimensionKeyGenerator();
-
-    Iterator<Entry<Integer, List<Integer>>> iterator =
-        columnGroupAndItsOrdinalMappingForQuery.entrySet().iterator();
-    KeyStructureInfo restructureInfos = null;
-    while (iterator.hasNext()) {
-      Entry<Integer, List<Integer>> next = iterator.next();
-      restructureInfos = new KeyStructureInfo();
-      // sort the ordinal
-      List<Integer> ordinal = next.getValue();
-      Collections.sort(ordinal);
-      // get the masked byte range for column group
-      int[] maskByteRanges = getMaskedByteRangeBasedOrdinal(ordinal, 
keyGenerator);
-      // max key for column group
-      byte[] maxKey = getMaxKeyBasedOnOrinal(ordinal, keyGenerator);
-      // get masked key for column group
-      int[] maksedByte = getMaskedByte(keyGenerator.getKeySizeInBytes(), 
maskByteRanges);
-      restructureInfos.setKeyGenerator(keyGenerator);
-      restructureInfos.setMaskByteRanges(maskByteRanges);
-      restructureInfos.setMaxKey(maxKey);
-      restructureInfos.setMaskedBytes(maksedByte);
-      restructureInfos
-          
.setBlockMdKeyStartOffset(getBlockMdKeyStartOffset(segmentProperties, ordinal));
-      rowGroupToItsRSInfo
-          
.put(segmentProperties.getDimensionOrdinalToBlockMapping().get(ordinal.get(0)),
-              restructureInfos);
-    }
-    return rowGroupToItsRSInfo;
-  }
-
-  /**
-   * It return mdkey start index of given column group
-   * @param segmentProperties
-   * @param ordinal : column group ordinal
-   * @return
-   */
-  public static int getBlockMdKeyStartOffset(SegmentProperties 
segmentProperties,
-      List<Integer> ordinal) {
-    int[][] colGroups = segmentProperties.getColumnGroups();
-    int blockMdkeyStartOffset = 0;
-    for (int i = 0; i < colGroups.length; i++) {
-      if (QueryUtil.searchInArray(colGroups[i], ordinal.get(0))) {
-        break;
-      }
-      blockMdkeyStartOffset += 
segmentProperties.getDimensionColumnsValueSize()[i];
-    }
-    return blockMdkeyStartOffset;
-  }
-
-  /**
-   * return true if given key is found in array
-   *
-   * @param data
-   * @param key
-   * @return
-   */
-  public static boolean searchInArray(int[] data, int key) {
-    for (int i = 0; i < data.length; i++) {
-      if (key == data[i]) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Below method will be used to create a mapping of column group columns
-   * this mapping will have column group id to all the dimension ordinal
-   * present in the column group This mapping will be used during query
-   * execution, to create a mask key for the column group dimension which will
-   * be used in aggregation and filter query as column group dimension will be
-   * stored in bit level
-   */
-  private static Map<Integer, List<Integer>> 
getColumnGroupAndItsOrdinalMapping(
-      List<QueryDimension> origdimensions) {
-
-    List<QueryDimension> dimensions = new 
ArrayList<QueryDimension>(origdimensions.size());
-    dimensions.addAll(origdimensions);
-    /**
-     * sort based on column group id
-     */
-    Collections.sort(dimensions, new Comparator<QueryDimension>() {
-
-      @Override public int compare(QueryDimension o1, QueryDimension o2) {
-        return Integer
-            .compare(o1.getDimension().columnGroupId(), 
o2.getDimension().columnGroupId());
-      }
-    });
-    // list of row groups this will store all the row group column
-    Map<Integer, List<Integer>> columnGroupAndItsOrdinalsMapping =
-        new HashMap<Integer, List<Integer>>();
-    // to store a column group
-    List<Integer> currentColumnGroup = null;
-    // current index
-    int index = 0;
-    // previous column group to check all the column of row id has bee
-    // selected
-    int prvColumnGroupId = -1;
-    while (index < dimensions.size()) {
-      // if dimension group id is not zero and it is same as the previous
-      // column group id
-      // then we need to add ordinal of that column as it belongs to same
-      // column group
-      if (!dimensions.get(index).getDimension().isColumnar()
-          && dimensions.get(index).getDimension().columnGroupId() == 
prvColumnGroupId) {
-        
currentColumnGroup.add(dimensions.get(index).getDimension().getOrdinal());
-      }
-
-      // if dimension is not a columnar then it is column group column
-      else if (!dimensions.get(index).getDimension().isColumnar()) {
-        currentColumnGroup = new ArrayList<Integer>();
-        columnGroupAndItsOrdinalsMapping
-            .put(dimensions.get(index).getDimension().columnGroupId(), 
currentColumnGroup);
-        
currentColumnGroup.add(dimensions.get(index).getDimension().getOrdinal());
-      }
-      // update the row id every time,this is required to group the
-      // columns
-      // of the same row group
-      prvColumnGroupId = dimensions.get(index).getDimension().columnGroupId();
-      index++;
-    }
-    return columnGroupAndItsOrdinalsMapping;
-  }
-
-  /**
-   * Below method will be used to get masked byte
-   *
-   * @param data           actual data
-   * @param maxKey         max key
-   * @param maskByteRanges mask byte range
-   * @param byteCount
-   * @return masked byte
-   */
-  public static byte[] getMaskedKey(byte[] data, byte[] maxKey, int[] 
maskByteRanges,
-      int byteCount) {
-    byte[] maskedKey = new byte[byteCount];
-    int counter = 0;
-    int byteRange = 0;
-    for (int i = 0; i < byteCount; i++) {
-      byteRange = maskByteRanges[i];
-      if (byteRange != -1) {
-        maskedKey[counter++] = (byte) (data[byteRange] & maxKey[byteRange]);
-      }
-    }
-    return maskedKey;
-  }
-
-  /**
-   * Below method will be used to fill block indexes of the query dimension
-   * which will be used in creating a output row Here is method we are passing
-   * two list which store the indexes one for dictionary column other for not
-   * dictionary column. This is done for specific purpose so that in one
-   * iteration we will be able to fill both type dimension block indexes
-   *
-   * @param queryDimensions                  dimension present in the query
-   * @param columnOrdinalToBlockIndexMapping column ordinal to block index 
mapping
-   * @param dictionaryDimensionBlockIndex    list to store dictionary column 
block indexes
-   * @param noDictionaryDimensionBlockIndex  list to store no dictionary block 
indexes
-   */
-  public static void fillQueryDimensionsBlockIndexes(List<QueryDimension> 
queryDimensions,
-      Map<Integer, Integer> columnOrdinalToBlockIndexMapping,
-      Set<Integer> dictionaryDimensionBlockIndex, List<Integer> 
noDictionaryDimensionBlockIndex) {
-    for (QueryDimension queryDimension : queryDimensions) {
-      if (CarbonUtil.hasEncoding(queryDimension.getDimension().getEncoder(), 
Encoding.DICTIONARY)) {
-        dictionaryDimensionBlockIndex
-            
.add(columnOrdinalToBlockIndexMapping.get(queryDimension.getDimension().getOrdinal()));
-      } else {
-        noDictionaryDimensionBlockIndex
-            
.add(columnOrdinalToBlockIndexMapping.get(queryDimension.getDimension().getOrdinal()));
-      }
-    }
-  }
-
-  /**
-   * Below method will be used to resolve the query model
-   * resolve will be setting the actual dimension and measure object
-   * as from driver only column name will be passes to avoid the heavy object
-   * serialization
-   *
-   * @param queryModel query model
-   */
-  public static void resolveQueryModel(QueryModel queryModel) {
-    CarbonMetadata.getInstance().addCarbonTable(queryModel.getTable());
-    // TODO need to load the table from table identifier
-    CarbonTable carbonTable = queryModel.getTable();
-    String tableName =
-        
queryModel.getAbsoluteTableIdentifier().getCarbonTableIdentifier().getTableName();
-    // resolve query dimension
-    for (QueryDimension queryDimension : queryModel.getQueryDimension()) {
-      queryDimension
-          .setDimension(carbonTable.getDimensionByName(tableName, 
queryDimension.getColumnName()));
-    }
-    // resolve sort dimension
-    for (QueryDimension sortDimension : queryModel.getSortDimension()) {
-      sortDimension
-          .setDimension(carbonTable.getDimensionByName(tableName, 
sortDimension.getColumnName()));
-    }
-    // resolve query measure
-    for (QueryMeasure queryMeasure : queryModel.getQueryMeasures()) {
-      // in case of count start column name will  be count * so
-      // for count start add first measure if measure is not present
-      // than add first dimension as a measure
-      if (queryMeasure.getColumnName().equals("count(*)")) {
-        if (carbonTable.getMeasureByTableName(tableName).size() > 0) {
-          
queryMeasure.setMeasure(carbonTable.getMeasureByTableName(tableName).get(0));
-        } else {
-          CarbonMeasure dummyMeasure = new CarbonMeasure(
-              
carbonTable.getDimensionByTableName(tableName).get(0).getColumnSchema(), 0);
-          queryMeasure.setMeasure(dummyMeasure);
-        }
-      } else {
-        queryMeasure
-            .setMeasure(carbonTable.getMeasureByName(tableName, 
queryMeasure.getColumnName()));
-      }
-    }
-    //TODO need to handle expression
-  }
-
-  /**
-   * Below method will be used to get the index of number type aggregator
-   *
-   * @param aggType
-   * @return index in aggregator
-   */
-  public static int[] getNumberTypeIndex(List<String> aggType) {
-    List<Integer> indexList = new ArrayList<Integer>();
-    for (int i = 0; i < aggType.size(); i++) {
-      if (CarbonCommonConstants.SUM.equals(aggType.get(i)) || 
CarbonCommonConstants.AVERAGE
-          .equals(aggType.get(i))) {
-        indexList.add(i);
-      }
-    }
-    return ArrayUtils.toPrimitive(indexList.toArray(new 
Integer[indexList.size()]));
-  }
-
-  /**
-   * below method will be used to get the actual type aggregator
-   *
-   * @param aggType
-   * @return index in aggrgetor
-   */
-  public static int[] getActualTypeIndex(List<String> aggType) {
-    List<Integer> indexList = new ArrayList<Integer>();
-    for (int i = 0; i < aggType.size(); i++) {
-      if (!CarbonCommonConstants.SUM.equals(aggType.get(i)) && 
!CarbonCommonConstants.AVERAGE
-          .equals(aggType.get(i))) {
-        indexList.add(i);
-      }
-    }
-    return ArrayUtils.toPrimitive(indexList.toArray(new 
Integer[indexList.size()]));
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/executor/util/RestructureUtil.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/executor/util/RestructureUtil.java
 
b/core/src/main/java/org/carbondata/query/carbon/executor/util/RestructureUtil.java
deleted file mode 100644
index 166da92..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/executor/util/RestructureUtil.java
+++ /dev/null
@@ -1,128 +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.carbon.executor.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonDimension;
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonMeasure;
-import org.carbondata.core.constants.CarbonCommonConstants;
-import org.carbondata.query.carbon.executor.infos.AggregatorInfo;
-import org.carbondata.query.carbon.model.QueryDimension;
-import org.carbondata.query.carbon.model.QueryMeasure;
-
-/**
- * Utility class for restructuring
- */
-public class RestructureUtil {
-
-  /**
-   * Below method will be used to get the updated query dimension updation
-   * means, after restructuring some dimension will be not present in older
-   * table blocks in that case we need to select only those dimension out of
-   * query dimension which is present in the current table block
-   *
-   * @param queryDimensions
-   * @param tableBlockDimensions
-   * @return list of query dimension which is present in the table block
-   */
-  public static List<QueryDimension> getUpdatedQueryDimension(
-      List<QueryDimension> queryDimensions, List<CarbonDimension> 
tableBlockDimensions) {
-    List<QueryDimension> presentDimension =
-        new 
ArrayList<QueryDimension>(CarbonCommonConstants.DEFAULT_COLLECTION_SIZE);
-    // selecting only those dimension which is present in the query
-    for (QueryDimension queryDimimension : queryDimensions) {
-      for (CarbonDimension tableDimension : tableBlockDimensions) {
-        if (tableDimension.equals(queryDimimension.getDimension())) {
-          presentDimension.add(queryDimimension);
-        }
-      }
-    }
-    return presentDimension;
-  }
-
-  /**
-   * Below method is to add dimension children for complex type dimension as
-   * internally we are creating dimension column for each each complex
-   * dimension so when complex query dimension request will come in the query,
-   * we need to add its children as it is hidden from the user For example if
-   * complex dimension is of Array of String[2] so we are storing 3 dimension
-   * and when user will query for complex type i.e. array type we need to add
-   * its children and then we will read respective block and create a tuple
-   * based on all three dimension
-   *
-   * @param queryDimensions      current query dimensions
-   * @param tableBlockDimensions dimensions which is present in the table block
-   * @return updated dimension(after adding complex type children)
-   */
-  public static List<CarbonDimension> addChildrenForComplexTypeDimension(
-      List<CarbonDimension> queryDimensions, List<CarbonDimension> 
tableBlockDimensions) {
-    List<CarbonDimension> updatedQueryDimension = new 
ArrayList<CarbonDimension>();
-    int numberOfChildren = 0;
-    for (CarbonDimension queryDimension : queryDimensions) {
-      // if number of child is zero, then it is not a complex dimension
-      // so directly add it query dimension
-      if (queryDimension.numberOfChild() == 0) {
-        updatedQueryDimension.add(queryDimension);
-      }
-      // if number of child is more than 1 then add all its children
-      numberOfChildren = queryDimension.getOrdinal() + 
queryDimension.numberOfChild();
-      for (int j = queryDimension.getOrdinal(); j < numberOfChildren; j++) {
-        updatedQueryDimension.add(tableBlockDimensions.get(j));
-      }
-    }
-    return updatedQueryDimension;
-  }
-
-  /**
-   * Below method will be used to get the aggregator info object
-   * in this method some of the properties which will be extracted
-   * from query measure and current block measures will be set
-   *
-   * @param queryMeasures        measures present in query
-   * @param currentBlockMeasures current block measures
-   * @return aggregator info
-   */
-  public static AggregatorInfo getAggregatorInfos(List<QueryMeasure> 
queryMeasures,
-      List<CarbonMeasure> currentBlockMeasures) {
-    AggregatorInfo aggregatorInfos = new AggregatorInfo();
-    int numberOfMeasureInQuery = queryMeasures.size();
-    int[] measureOrdinals = new int[numberOfMeasureInQuery];
-    Object[] defaultValues = new Object[numberOfMeasureInQuery];
-    boolean[] measureExistsInCurrentBlock = new 
boolean[numberOfMeasureInQuery];
-    int index = 0;
-    for (QueryMeasure queryMeasure : queryMeasures) {
-      measureOrdinals[index] = queryMeasure.getMeasure().getOrdinal();
-      // if query measure exists in current dimension measures
-      // then setting measure exists is true
-      // otherwise adding a default value of a measure
-      if (currentBlockMeasures.contains(queryMeasure.getMeasure())) {
-        measureExistsInCurrentBlock[index] = true;
-      } else {
-        defaultValues[index] = queryMeasure.getMeasure().getDefaultValue();
-      }
-      index++;
-    }
-    aggregatorInfos.setDefaultValues(defaultValues);
-    aggregatorInfos.setMeasureOrdinals(measureOrdinals);
-    aggregatorInfos.setMeasureExists(measureExistsInCurrentBlock);
-    return aggregatorInfos;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/model/CarbonQueryPlan.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/model/CarbonQueryPlan.java 
b/core/src/main/java/org/carbondata/query/carbon/model/CarbonQueryPlan.java
deleted file mode 100644
index 3684f4a..0000000
--- a/core/src/main/java/org/carbondata/query/carbon/model/CarbonQueryPlan.java
+++ /dev/null
@@ -1,243 +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.carbon.model;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.carbondata.core.constants.CarbonCommonConstants;
-import org.carbondata.query.expression.Expression;
-
-/**
- * This class contains all the logical information about the query like 
dimensions,measures,
- * sort order, topN etc..
- */
-public class CarbonQueryPlan implements Serializable {
-  /**
-   *
-   */
-  private static final long serialVersionUID = -9036044826928017164L;
-
-  /**
-   * Schema name , if user asks select * from datasight.employee.
-   * then datasight is the schame name.
-   * Remains null if the user does not select schema name.
-   */
-  private String schemaName;
-
-  /**
-   * Cube name .
-   * if user asks select * from datasight.employee. then employee is the cube 
name.
-   * It is mandatory.
-   */
-  private String cubeName;
-
-  /**
-   * List of dimensions.
-   * Ex : select employee_name,department_name,sum(salary) from employee, then 
employee_name
-   * and department_name are dimensions
-   * If there is no dimensions asked in query then it would be remained as 
empty.
-   */
-  private List<QueryDimension> dimensions =
-      new ArrayList<QueryDimension>(CarbonCommonConstants.CONSTANT_SIZE_TEN);
-
-  /**
-   * List of measures.
-   * Ex : select employee_name,department_name,sum(salary) from employee, then 
sum(salary)
-   * would be measure.
-   * If there is no dimensions asked in query then it would be remained as 
empty.
-   */
-  private List<QueryMeasure> measures =
-      new ArrayList<QueryMeasure>(CarbonCommonConstants.CONSTANT_SIZE_TEN);
-
-  /**
-   * Limit
-   */
-  private int limit = -1;
-
-  /**
-   * If it is detail query, no need to aggregate in backend
-   */
-  private boolean detailQuery;
-
-  /**
-   * expression
-   */
-  private Expression expression;
-
-  /**
-   * queryId
-   */
-  private String queryId;
-
-  /**
-   * outLocationPath
-   */
-  private String outLocationPath;
-
-  /**
-   * isCountStarQuery
-   */
-  private boolean isCountStartQuery;
-
-  private List<QueryDimension> sortedDimensions;
-
-  /**
-   * If it is raw detail query, no need to aggregate in backend. And it reurns 
with dictionary data
-   * with out decoding.
-   */
-  private boolean rawDetailQuery;
-
-  /**
-   * Constructor created with cube name.
-   *
-   * @param cubeName
-   */
-  public CarbonQueryPlan(String cubeName) {
-    this.cubeName = cubeName;
-  }
-
-  /**
-   * Constructor created with schema name and cube name.
-   *
-   * @param schemaName
-   * @param cubeName
-   */
-  public CarbonQueryPlan(String schemaName, String cubeName) {
-    this.cubeName = cubeName;
-    this.schemaName = schemaName;
-  }
-
-  /**
-   * @return the dimensions
-   */
-  public List<QueryDimension> getDimensions() {
-    return dimensions;
-  }
-
-  public void addDimension(QueryDimension dimension) {
-    this.dimensions.add(dimension);
-  }
-
-  /**
-   * @return the measures
-   */
-  public List<QueryMeasure> getMeasures() {
-    return measures;
-  }
-
-  public void addMeasure(QueryMeasure measure) {
-    this.measures.add(measure);
-  }
-
-  public Expression getFilterExpression() {
-    return expression;
-  }
-
-  public void setFilterExpression(Expression expression) {
-    this.expression = expression;
-  }
-
-  /**
-   * @return the schemaName
-   */
-  public String getSchemaName() {
-    return schemaName;
-  }
-
-  /**
-   * @return the cubeName
-   */
-  public String getCubeName() {
-    return cubeName;
-  }
-
-  /**
-   * @return the limit
-   */
-  public int getLimit() {
-    return limit;
-  }
-
-  /**
-   * @param limit the limit to set
-   */
-  public void setLimit(int limit) {
-    this.limit = limit;
-  }
-
-  /**
-   * @return the detailQuery
-   */
-  public boolean isDetailQuery() {
-    return detailQuery;
-  }
-
-  /**
-   * @param detailQuery the detailQuery to set
-   */
-  public void setDetailQuery(boolean detailQuery) {
-    this.detailQuery = detailQuery;
-  }
-
-  public String getQueryId() {
-    return queryId;
-  }
-
-  public void setQueryId(String queryId) {
-    this.queryId = queryId;
-  }
-
-  public String getOutLocationPath() {
-    return outLocationPath;
-  }
-
-  public void setOutLocationPath(String outLocationPath) {
-    this.outLocationPath = outLocationPath;
-  }
-
-  public boolean isCountStarQuery() {
-    return isCountStartQuery;
-  }
-
-  public void setCountStartQuery(boolean isCountStartQuery) {
-    this.isCountStartQuery = isCountStartQuery;
-  }
-
-  public List<QueryDimension> getSortedDimemsions() {
-    return sortedDimensions;
-  }
-
-  public void setSortedDimemsions(List<QueryDimension> dims) {
-    this.sortedDimensions = dims;
-  }
-
-  public boolean isRawDetailQuery() {
-    return rawDetailQuery;
-  }
-
-  public void setRawDetailQuery(boolean rawDetailQuery) {
-    this.rawDetailQuery = rawDetailQuery;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/model/DimensionAggregatorInfo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/model/DimensionAggregatorInfo.java
 
b/core/src/main/java/org/carbondata/query/carbon/model/DimensionAggregatorInfo.java
deleted file mode 100644
index b6f8976..0000000
--- 
a/core/src/main/java/org/carbondata/query/carbon/model/DimensionAggregatorInfo.java
+++ /dev/null
@@ -1,113 +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.carbon.model;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonDimension;
-
-/**
- * Dimension aggregation info which will be used to
- * holds the information about dimension and aggregation applied in the 
dimension
- */
-public class DimensionAggregatorInfo implements Serializable {
-
-  /**
-   * serialization version
-   */
-  private static final long serialVersionUID = 4801602263271340969L;
-
-  /**
-   * name of the column in which aggregation is applied
-   */
-  private String columnName;
-
-  /**
-   * dimension in which aggregation is applied
-   */
-  private transient CarbonDimension dim;
-
-  /**
-   * list if aggregate function applied in the dimension
-   */
-  private List<String> aggList;
-
-  /**
-   * order of the aggregate function in which output of aggregation will be
-   * send from executor to driver. Integer represents the order of the output
-   */
-  private List<Integer> orderOfAggregation;
-
-  /**
-   * @return the columnName
-   */
-  public String getColumnName() {
-    return columnName;
-  }
-
-  /**
-   * @param columnName the columnName to set
-   */
-  public void setColumnName(String columnName) {
-    this.columnName = columnName;
-  }
-
-  /**
-   * @return the dim
-   */
-  public CarbonDimension getDim() {
-    return dim;
-  }
-
-  /**
-   * @param dim the dim to set
-   */
-  public void setDim(CarbonDimension dim) {
-    this.dim = dim;
-  }
-
-  /**
-   * @return the aggList
-   */
-  public List<String> getAggList() {
-    return aggList;
-  }
-
-  /**
-   * @param aggList the aggList to set
-   */
-  public void setAggList(List<String> aggList) {
-    this.aggList = aggList;
-  }
-
-  /**
-   * @return the orderList
-   */
-  public List<Integer> getOrderList() {
-    return orderOfAggregation;
-  }
-
-  /**
-   * @param orderList the orderList to set
-   */
-  public void setOrderList(List<Integer> orderList) {
-    this.orderOfAggregation = orderList;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/model/QueryColumn.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/model/QueryColumn.java 
b/core/src/main/java/org/carbondata/query/carbon/model/QueryColumn.java
deleted file mode 100644
index 654996a..0000000
--- a/core/src/main/java/org/carbondata/query/carbon/model/QueryColumn.java
+++ /dev/null
@@ -1,109 +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.carbon.model;
-
-import java.io.Serializable;
-
-import org.carbondata.core.constants.CarbonCommonConstants;
-
-/**
- * query column  which will have information about column
- */
-public class QueryColumn implements Serializable {
-
-  /**
-   * serialVersionUID
-   */
-  private static final long serialVersionUID = -4222306600480181084L;
-
-  /**
-   * name of the column
-   */
-  protected String columnName;
-
-  /**
-   * sort order in which column output will be sorted default it will be none
-   */
-  private SortOrderType sortOrder = SortOrderType.NONE;
-
-  /**
-   * query order in which result of the query will be send
-   */
-  private int queryOrder;
-
-  /**
-   * aggregation function applied on column
-   */
-
-  private String aggregationFunction=CarbonCommonConstants.DUMMY;
-
-  public QueryColumn(String columnName) {
-    this.columnName = columnName;
-  }
-
-  /**
-   * @return the sortOrder
-   */
-  public SortOrderType getSortOrder() {
-    return sortOrder;
-  }
-
-  /**
-   * @param sortOrder the sortOrder to set
-   */
-  public void setSortOrder(SortOrderType sortOrder) {
-    this.sortOrder = sortOrder;
-  }
-
-  /**
-   * @return the columnName
-   */
-  public String getColumnName() {
-    return columnName;
-  }
-
-  /**
-   * @return the queryOrder
-   */
-  public int getQueryOrder() {
-    return queryOrder;
-  }
-
-  /**
-   * @param queryOrder the queryOrder to set
-   */
-  public void setQueryOrder(int queryOrder) {
-    this.queryOrder = queryOrder;
-  }
-
-  /**
-   * @return the aggregationFunction
-   */
-  public String getAggregateFunction() {
-    return aggregationFunction;
-  }
-
-  /**
-   * @param aggregationFunction the aggregationFunction to set
-   */
-  public void setAggregateFunction(String aggregationFunction) {
-    this.aggregationFunction = aggregationFunction;
-  }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/model/QueryDimension.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/model/QueryDimension.java 
b/core/src/main/java/org/carbondata/query/carbon/model/QueryDimension.java
deleted file mode 100644
index 2948166..0000000
--- a/core/src/main/java/org/carbondata/query/carbon/model/QueryDimension.java
+++ /dev/null
@@ -1,57 +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.carbon.model;
-
-import java.io.Serializable;
-
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonDimension;
-
-/**
- * query plan dimension which will holds the information about the query plan 
dimension
- * this is done to avoid heavy object serialization
- */
-public class QueryDimension extends QueryColumn implements Serializable {
-
-  /**
-   * serialVersionUID
-   */
-  private static final long serialVersionUID = -8492704093776645651L;
-  /**
-   * actual dimension column
-   */
-  private transient CarbonDimension dimension;
-
-  public QueryDimension(String columName) {
-    super(columName);
-  }
-
-  /**
-   * @return the dimension
-   */
-  public CarbonDimension getDimension() {
-    return dimension;
-  }
-
-  /**
-   * @param dimension the dimension to set
-   */
-  public void setDimension(CarbonDimension dimension) {
-    this.dimension = dimension;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/1c725f5b/core/src/main/java/org/carbondata/query/carbon/model/QueryMeasure.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/carbondata/query/carbon/model/QueryMeasure.java 
b/core/src/main/java/org/carbondata/query/carbon/model/QueryMeasure.java
deleted file mode 100644
index f697ddd..0000000
--- a/core/src/main/java/org/carbondata/query/carbon/model/QueryMeasure.java
+++ /dev/null
@@ -1,60 +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.carbon.model;
-
-import java.io.Serializable;
-
-import org.carbondata.core.carbon.metadata.schema.table.column.CarbonMeasure;
-
-/**
- * query plan measure, this class will holds the information
- * about measure present in the query, this is done to avoid the serialization
- * of the heavy object
- */
-public class QueryMeasure extends QueryColumn implements Serializable {
-
-  /**
-   * serialVersionUID
-   */
-  private static final long serialVersionUID = 1035512411375495414L;
-
-  /**
-   * actual carbon measure object
-   */
-  private transient CarbonMeasure measure;
-
-  public QueryMeasure(String columName) {
-    super(columName);
-  }
-
-  /**
-   * @return the measure
-   */
-  public CarbonMeasure getMeasure() {
-    return measure;
-  }
-
-  /**
-   * @param measure the measure to set
-   */
-  public void setMeasure(CarbonMeasure measure) {
-    this.measure = measure;
-  }
-
-}

Reply via email to