You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ra...@apache.org on 2016/09/22 05:36:26 UTC

[28/50] [abbrv] incubator-carbondata git commit: equalsAndHashCodeIssue

equalsAndHashCodeIssue


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

Branch: refs/heads/branch-0.1
Commit: 303ccd93371b4234332cde17c38f71def369661b
Parents: cc5ca87
Author: kumarvishal <ku...@gmail.com>
Authored: Sat Sep 17 18:55:36 2016 +0530
Committer: ravipesala <ra...@gmail.com>
Committed: Thu Sep 22 10:01:25 2016 +0530

----------------------------------------------------------------------
 .../core/carbon/datastore/BlockIndexStore.java  |  73 +++++++------
 .../core/carbon/datastore/block/BlockInfo.java  | 107 +++++++++++++++++++
 .../carbon/datastore/block/TableBlockInfo.java  |  18 ++--
 .../impl/btree/BlockBTreeLeafNode.java          |   7 +-
 .../impl/btree/BlockletBTreeLeafNode.java       |   4 +-
 .../metadata/blocklet/DataFileFooter.java       |  12 +--
 .../core/util/DataFileFooterConverter.java      |   3 +-
 7 files changed, 169 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/datastore/BlockIndexStore.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/BlockIndexStore.java b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/BlockIndexStore.java
index 4a36373..bbebda0 100644
--- a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/BlockIndexStore.java
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/BlockIndexStore.java
@@ -31,11 +31,10 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.carbondata.common.logging.LogService;
-import org.apache.carbondata.common.logging.LogServiceFactory;
 import org.apache.carbondata.core.carbon.AbsoluteTableIdentifier;
 import org.apache.carbondata.core.carbon.datastore.block.AbstractIndex;
 import org.apache.carbondata.core.carbon.datastore.block.BlockIndex;
+import org.apache.carbondata.core.carbon.datastore.block.BlockInfo;
 import org.apache.carbondata.core.carbon.datastore.block.TableBlockInfo;
 import org.apache.carbondata.core.carbon.datastore.exception.IndexBuilderException;
 import org.apache.carbondata.core.carbon.metadata.blocklet.DataFileFooter;
@@ -50,8 +49,6 @@ import org.apache.carbondata.core.util.CarbonUtilException;
  */
 public class BlockIndexStore {
 
-  private static final LogService LOGGER =
-      LogServiceFactory.getLogService(BlockIndexStore.class.getName());
   /**
    * singleton instance
    */
@@ -60,13 +57,13 @@ public class BlockIndexStore {
   /**
    * map to hold the table and its list of blocks
    */
-  private Map<AbsoluteTableIdentifier, Map<TableBlockInfo, AbstractIndex>> tableBlocksMap;
+  private Map<AbsoluteTableIdentifier, Map<BlockInfo, AbstractIndex>> tableBlocksMap;
 
   /**
    * map to maintain segment id to block info map, this map will be used to
    * while removing the block from memory when segment is compacted or deleted
    */
-  private Map<AbsoluteTableIdentifier, Map<String, List<TableBlockInfo>>> segmentIdToBlockListMap;
+  private Map<AbsoluteTableIdentifier, Map<String, List<BlockInfo>>> segmentIdToBlockListMap;
 
   /**
    * map of block info to lock object map, while loading the btree this will be filled
@@ -74,7 +71,7 @@ public class BlockIndexStore {
    * while loading the tree concurrently so only block level lock will be applied another
    * block can be loaded concurrently
    */
-  private Map<TableBlockInfo, Object> blockInfoLock;
+  private Map<BlockInfo, Object> blockInfoLock;
 
   /**
    * table and its lock object to this will be useful in case of concurrent
@@ -84,12 +81,11 @@ public class BlockIndexStore {
   private Map<AbsoluteTableIdentifier, Object> tableLockMap;
 
   private BlockIndexStore() {
-    tableBlocksMap =
-        new ConcurrentHashMap<AbsoluteTableIdentifier, Map<TableBlockInfo, AbstractIndex>>(
-            CarbonCommonConstants.DEFAULT_COLLECTION_SIZE);
+    tableBlocksMap = new ConcurrentHashMap<AbsoluteTableIdentifier, Map<BlockInfo, AbstractIndex>>(
+        CarbonCommonConstants.DEFAULT_COLLECTION_SIZE);
     tableLockMap = new ConcurrentHashMap<AbsoluteTableIdentifier, Object>(
         CarbonCommonConstants.DEFAULT_COLLECTION_SIZE);
-    blockInfoLock = new ConcurrentHashMap<TableBlockInfo, Object>();
+    blockInfoLock = new ConcurrentHashMap<BlockInfo, Object>();
     segmentIdToBlockListMap = new ConcurrentHashMap<>();
   }
 
@@ -118,7 +114,7 @@ public class BlockIndexStore {
 
     // get the instance
     Object lockObject = tableLockMap.get(absoluteTableIdentifier);
-    Map<TableBlockInfo, AbstractIndex> tableBlockMapTemp = null;
+    Map<BlockInfo, AbstractIndex> tableBlockMapTemp = null;
     int numberOfCores = 1;
     try {
       numberOfCores = Integer.parseInt(CarbonProperties.getInstance()
@@ -130,19 +126,20 @@ public class BlockIndexStore {
     ExecutorService executor = Executors.newFixedThreadPool(numberOfCores);
     // Acquire the lock to ensure only one query is loading the table blocks
     // if same block is assigned to both the queries
+    List<BlockInfo> blockInfosNeedToLoad = null;
     synchronized (lockObject) {
       tableBlockMapTemp = tableBlocksMap.get(absoluteTableIdentifier);
       // if it is loading for first time
       if (null == tableBlockMapTemp) {
-        tableBlockMapTemp = new ConcurrentHashMap<TableBlockInfo, AbstractIndex>();
+        tableBlockMapTemp = new ConcurrentHashMap<BlockInfo, AbstractIndex>();
         tableBlocksMap.put(absoluteTableIdentifier, tableBlockMapTemp);
       }
-      fillSegmentIdToTableInfoMap(tableBlocksInfos, absoluteTableIdentifier);
+      blockInfosNeedToLoad = fillSegmentIdToTableInfoMap(tableBlocksInfos, absoluteTableIdentifier);
     }
     AbstractIndex tableBlock = null;
     List<Future<AbstractIndex>> blocksList = new ArrayList<Future<AbstractIndex>>();
     int counter = -1;
-    for (TableBlockInfo blockInfo : tableBlocksInfos) {
+    for (BlockInfo blockInfo : blockInfosNeedToLoad) {
       counter++;
       // if table block is already loaded then do not load
       // that block
@@ -204,23 +201,29 @@ public class BlockIndexStore {
    * @param tableBlockInfos         table block infos
    * @param absoluteTableIdentifier absolute table identifier
    */
-  private void fillSegmentIdToTableInfoMap(List<TableBlockInfo> tableBlockInfos,
+  private List<BlockInfo> fillSegmentIdToTableInfoMap(List<TableBlockInfo> tableBlockInfos,
       AbsoluteTableIdentifier absoluteTableIdentifier) {
-    Map<String, List<TableBlockInfo>> map = segmentIdToBlockListMap.get(absoluteTableIdentifier);
+    Map<String, List<BlockInfo>> map = segmentIdToBlockListMap.get(absoluteTableIdentifier);
     if (null == map) {
-      map = new ConcurrentHashMap<String, List<TableBlockInfo>>();
+      map = new ConcurrentHashMap<String, List<BlockInfo>>();
       segmentIdToBlockListMap.put(absoluteTableIdentifier, map);
     }
+    BlockInfo temp = null;
+    List<BlockInfo> blockInfosNeedToLoad = new ArrayList<>();
+
     for (TableBlockInfo info : tableBlockInfos) {
-      List<TableBlockInfo> tempTableBlockInfos = map.get(info.getSegmentId());
+      List<BlockInfo> tempTableBlockInfos = map.get(info.getSegmentId());
       if (null == tempTableBlockInfos) {
         tempTableBlockInfos = new ArrayList<>();
         map.put(info.getSegmentId(), tempTableBlockInfos);
       }
-      if (!tempTableBlockInfos.contains(info)) {
-        tempTableBlockInfos.add(info);
+      temp = new BlockInfo(info);
+      if (!tempTableBlockInfos.contains(temp)) {
+        tempTableBlockInfos.add(temp);
       }
+      blockInfosNeedToLoad.add(temp);
     }
+    return blockInfosNeedToLoad;
   }
 
   /**
@@ -246,15 +249,16 @@ public class BlockIndexStore {
     }
   }
 
-  private AbstractIndex loadBlock(Map<TableBlockInfo, AbstractIndex> tableBlockMapTemp,
-      TableBlockInfo blockInfo) throws CarbonUtilException {
+  private AbstractIndex loadBlock(Map<BlockInfo, AbstractIndex> tableBlockMapTemp,
+      BlockInfo blockInfo) throws CarbonUtilException {
     AbstractIndex tableBlock;
     DataFileFooter footer;
     // getting the data file meta data of the block
-    footer = CarbonUtil.readMetadatFile(blockInfo.getFilePath(), blockInfo.getBlockOffset(),
-        blockInfo.getBlockLength());
+    footer = CarbonUtil.readMetadatFile(blockInfo.getTableBlockInfo().getFilePath(),
+        blockInfo.getTableBlockInfo().getBlockOffset(),
+        blockInfo.getTableBlockInfo().getBlockLength());
     tableBlock = new BlockIndex();
-    footer.setTableBlockInfo(blockInfo);
+    footer.setBlockInfo(blockInfo);
     // building the block
     tableBlock.buildIndex(Arrays.asList(footer));
     tableBlockMapTemp.put(blockInfo, tableBlock);
@@ -293,25 +297,25 @@ public class BlockIndexStore {
     if (null == lockObject) {
       return;
     }
-    Map<TableBlockInfo, AbstractIndex> map = tableBlocksMap.get(absoluteTableIdentifier);
+    Map<BlockInfo, AbstractIndex> map = tableBlocksMap.get(absoluteTableIdentifier);
     // if there is no loaded blocks then return
     if (null == map || map.isEmpty()) {
       return;
     }
-    Map<String, List<TableBlockInfo>> segmentIdToBlockInfoMap =
+    Map<String, List<BlockInfo>> segmentIdToBlockInfoMap =
         segmentIdToBlockListMap.get(absoluteTableIdentifier);
     if (null == segmentIdToBlockInfoMap || segmentIdToBlockInfoMap.isEmpty()) {
       return;
     }
     synchronized (lockObject) {
       for (String segmentId : segmentsToBeRemoved) {
-        List<TableBlockInfo> tableBlockInfoList = segmentIdToBlockInfoMap.remove(segmentId);
+        List<BlockInfo> tableBlockInfoList = segmentIdToBlockInfoMap.remove(segmentId);
         if (null == tableBlockInfoList) {
           continue;
         }
-        Iterator<TableBlockInfo> tableBlockInfoIterator = tableBlockInfoList.iterator();
+        Iterator<BlockInfo> tableBlockInfoIterator = tableBlockInfoList.iterator();
         while (tableBlockInfoIterator.hasNext()) {
-          TableBlockInfo info = tableBlockInfoIterator.next();
+          BlockInfo info = tableBlockInfoIterator.next();
           map.remove(info);
         }
       }
@@ -336,13 +340,12 @@ public class BlockIndexStore {
     /**
      * table block info to block index map
      */
-    private Map<TableBlockInfo, AbstractIndex> tableBlockMap;
+    private Map<BlockInfo, AbstractIndex> tableBlockMap;
 
     // block info
-    private TableBlockInfo blockInfo;
+    private BlockInfo blockInfo;
 
-    private BlockLoaderThread(TableBlockInfo blockInfo,
-        Map<TableBlockInfo, AbstractIndex> tableBlockMap) {
+    private BlockLoaderThread(BlockInfo blockInfo, Map<BlockInfo, AbstractIndex> tableBlockMap) {
       this.tableBlockMap = tableBlockMap;
       this.blockInfo = blockInfo;
     }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/BlockInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/BlockInfo.java b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/BlockInfo.java
new file mode 100644
index 0000000..8092c7c
--- /dev/null
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/BlockInfo.java
@@ -0,0 +1,107 @@
+/*
+ * 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.apache.carbondata.core.carbon.datastore.block;
+
+/**
+ * Below class will be used to store table block info
+ * As in blocklet distribution we are dividing the same block
+ * in parts but in case of block loading blocklets belongs to same
+ * block will be loaded together. This class will be used to store table block info
+ * and equals and hash code method is used to identify blocklet belongs to same block
+ */
+public class BlockInfo {
+
+  /**
+   * table block info, stores all the details
+   * about the block
+   */
+  private TableBlockInfo info;
+
+  /**
+   * Constructor
+   *
+   * @param info
+   */
+  public BlockInfo(TableBlockInfo info) {
+    this.info = info;
+  }
+
+  /**
+   * @return table Block info
+   */
+  public TableBlockInfo getTableBlockInfo() {
+    return info;
+  }
+
+  /**
+   * To set the table block info
+   *
+   * @param info
+   */
+  public void setTableBlockInfo(TableBlockInfo info) {
+    this.info = info;
+  }
+
+  /**
+   * method to get the hash code
+   */
+  @Override public int hashCode() {
+    int result = info.getFilePath().hashCode();
+    result = 31 * result + (int) (info.getBlockOffset() ^ (info.getBlockOffset() >>> 32));
+    result = 31 * result + (int) (info.getBlockLength() ^ (info.getBlockLength() >>> 32));
+    result = 31 * result + info.getSegmentId().hashCode();
+    return result;
+  }
+
+  /**
+   * To check the equality
+   *
+   * @param obj
+   */
+  @Override public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof BlockInfo)) {
+      return false;
+    }
+    BlockInfo other = (BlockInfo) obj;
+    if (!info.getSegmentId().equals(other.info.getSegmentId())) {
+      return false;
+    }
+    if (info.getBlockOffset() != other.info.getBlockOffset()) {
+      return false;
+    }
+    if (info.getBlockLength() != info.getBlockLength()) {
+      return false;
+    }
+
+    if (info.getFilePath() == null && other.info.getFilePath() != null) {
+      return false;
+    } else if (info.getFilePath() != null && other.info.getFilePath() == null) {
+      return false;
+    } else if (!info.getFilePath().equals(other.info.getFilePath())) {
+      return false;
+    }
+    return true;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/TableBlockInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/TableBlockInfo.java b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/TableBlockInfo.java
index 3d393b6..f8da9af 100644
--- a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/TableBlockInfo.java
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/block/TableBlockInfo.java
@@ -19,7 +19,6 @@
 package org.apache.carbondata.core.carbon.datastore.block;
 
 import java.io.Serializable;
-import java.util.Arrays;
 
 import org.apache.carbondata.core.carbon.path.CarbonTablePath;
 import org.apache.carbondata.core.carbon.path.CarbonTablePath.DataFileUtil;
@@ -74,6 +73,7 @@ public class TableBlockInfo extends Distributable
 
   /**
    * constructor to initialize the TbaleBlockInfo with BlockletInfos
+   *
    * @param filePath
    * @param blockOffset
    * @param segmentId
@@ -105,7 +105,6 @@ public class TableBlockInfo extends Distributable
     return blockOffset;
   }
 
-
   /**
    * @return the segmentId
    */
@@ -145,14 +144,16 @@ public class TableBlockInfo extends Distributable
     if (blockLength != other.blockLength) {
       return false;
     }
-
-    if (filePath == null) {
-      if (other.filePath != null) {
-        return false;
-      }
+    if (filePath == null && other.filePath != null) {
+      return false;
+    } else if (filePath != null && other.filePath == null) {
+      return false;
     } else if (!filePath.equals(other.filePath)) {
       return false;
     }
+    if (blockletInfos.getStartBlockletNumber() != other.blockletInfos.getStartBlockletNumber()) {
+      return false;
+    }
     return true;
   }
 
@@ -225,7 +226,6 @@ public class TableBlockInfo extends Distributable
     result = 31 * result + (int) (blockOffset ^ (blockOffset >>> 32));
     result = 31 * result + (int) (blockLength ^ (blockLength >>> 32));
     result = 31 * result + segmentId.hashCode();
-    result = 31 * result + Arrays.hashCode(locations);
     result = 31 * result + blockletInfos.getStartBlockletNumber();
     return result;
   }
@@ -236,6 +236,7 @@ public class TableBlockInfo extends Distributable
 
   /**
    * returns BlockletInfos
+   *
    * @return
    */
   public BlockletInfos getBlockletInfos() {
@@ -244,6 +245,7 @@ public class TableBlockInfo extends Distributable
 
   /**
    * set the blocklestinfos
+   *
    * @param blockletInfos
    */
   public void setBlockletInfos(BlockletInfos blockletInfos) {

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockBTreeLeafNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockBTreeLeafNode.java b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockBTreeLeafNode.java
index fcc98c2..34468a6 100644
--- a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockBTreeLeafNode.java
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockBTreeLeafNode.java
@@ -19,6 +19,7 @@
 package org.apache.carbondata.core.carbon.datastore.impl.btree;
 
 import org.apache.carbondata.core.carbon.datastore.BTreeBuilderInfo;
+import org.apache.carbondata.core.carbon.datastore.block.BlockInfo;
 import org.apache.carbondata.core.carbon.datastore.block.TableBlockInfo;
 import org.apache.carbondata.core.carbon.metadata.blocklet.DataFileFooter;
 import org.apache.carbondata.core.carbon.metadata.blocklet.index.BlockletMinMaxIndex;
@@ -30,7 +31,7 @@ import org.apache.carbondata.core.carbon.metadata.blocklet.index.BlockletMinMaxI
  */
 public class BlockBTreeLeafNode extends AbstractBTreeLeafNode {
 
-  private TableBlockInfo blockInfo;
+  private BlockInfo blockInfo;
 
   /**
    * Create a leaf node
@@ -47,7 +48,7 @@ public class BlockBTreeLeafNode extends AbstractBTreeLeafNode {
     minKeyOfColumns = minMaxIndex.getMinValues();
     numberOfKeys = 1;
     this.nodeNumber = nodeNumber;
-    this.blockInfo = footer.getTableBlockInfo();
+    this.blockInfo = footer.getBlockInfo();
   }
 
   /**
@@ -58,7 +59,7 @@ public class BlockBTreeLeafNode extends AbstractBTreeLeafNode {
    * @return TableBlockInfo
    */
   public TableBlockInfo getTableBlockInfo() {
-    return blockInfo;
+    return blockInfo.getTableBlockInfo();
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockletBTreeLeafNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockletBTreeLeafNode.java b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockletBTreeLeafNode.java
index 2bbddda..4293610 100644
--- a/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockletBTreeLeafNode.java
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/datastore/impl/btree/BlockletBTreeLeafNode.java
@@ -70,7 +70,7 @@ public class BlockletBTreeLeafNode extends AbstractBTreeLeafNode {
     dimensionChunksReader = new CompressedDimensionChunkFileBasedReader(
         builderInfos.getFooterList().get(0).getBlockletList().get(leafIndex)
             .getDimensionColumnChunk(), builderInfos.getDimensionColumnValueSize(),
-        builderInfos.getFooterList().get(0).getTableBlockInfo().getFilePath());
+        builderInfos.getFooterList().get(0).getBlockInfo().getTableBlockInfo().getFilePath());
     // get the value compression model which was used to compress the measure values
     ValueCompressionModel valueCompressionModel = CarbonUtil.getValueCompressionModel(
         builderInfos.getFooterList().get(0).getBlockletList().get(leafIndex)
@@ -79,7 +79,7 @@ public class BlockletBTreeLeafNode extends AbstractBTreeLeafNode {
     measureColumnChunkReader = new CompressedMeasureChunkFileBasedReader(
         builderInfos.getFooterList().get(0).getBlockletList().get(leafIndex)
             .getMeasureColumnChunk(), valueCompressionModel,
-            builderInfos.getFooterList().get(0).getTableBlockInfo().getFilePath());
+            builderInfos.getFooterList().get(0).getBlockInfo().getTableBlockInfo().getFilePath());
     this.nodeNumber = nodeNumber;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/carbon/metadata/blocklet/DataFileFooter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/carbon/metadata/blocklet/DataFileFooter.java b/core/src/main/java/org/apache/carbondata/core/carbon/metadata/blocklet/DataFileFooter.java
index 55587da..d4741eb 100644
--- a/core/src/main/java/org/apache/carbondata/core/carbon/metadata/blocklet/DataFileFooter.java
+++ b/core/src/main/java/org/apache/carbondata/core/carbon/metadata/blocklet/DataFileFooter.java
@@ -21,7 +21,7 @@ package org.apache.carbondata.core.carbon.metadata.blocklet;
 import java.io.Serializable;
 import java.util.List;
 
-import org.apache.carbondata.core.carbon.datastore.block.TableBlockInfo;
+import org.apache.carbondata.core.carbon.datastore.block.BlockInfo;
 import org.apache.carbondata.core.carbon.metadata.blocklet.index.BlockletIndex;
 import org.apache.carbondata.core.carbon.metadata.schema.table.column.ColumnSchema;
 
@@ -68,7 +68,7 @@ public class DataFileFooter implements Serializable {
   /**
    * to store the block info detail like file name block index and locations
    */
-  private TableBlockInfo tableBlockInfo;
+  private BlockInfo blockInfo;
 
   /**
    * @return the versionId
@@ -157,14 +157,14 @@ public class DataFileFooter implements Serializable {
   /**
    * @return the tableBlockInfo
    */
-  public TableBlockInfo getTableBlockInfo() {
-    return tableBlockInfo;
+  public BlockInfo getBlockInfo() {
+    return blockInfo;
   }
 
   /**
    * @param tableBlockInfo the tableBlockInfo to set
    */
-  public void setTableBlockInfo(TableBlockInfo tableBlockInfo) {
-    this.tableBlockInfo = tableBlockInfo;
+  public void setBlockInfo(BlockInfo tableBlockInfo) {
+    this.blockInfo = tableBlockInfo;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/303ccd93/core/src/main/java/org/apache/carbondata/core/util/DataFileFooterConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/util/DataFileFooterConverter.java b/core/src/main/java/org/apache/carbondata/core/util/DataFileFooterConverter.java
index 8d7e893..5f3565c 100644
--- a/core/src/main/java/org/apache/carbondata/core/util/DataFileFooterConverter.java
+++ b/core/src/main/java/org/apache/carbondata/core/util/DataFileFooterConverter.java
@@ -29,6 +29,7 @@ import java.util.List;
 
 import org.apache.carbondata.common.logging.LogService;
 import org.apache.carbondata.common.logging.LogServiceFactory;
+import org.apache.carbondata.core.carbon.datastore.block.BlockInfo;
 import org.apache.carbondata.core.carbon.datastore.block.TableBlockInfo;
 import org.apache.carbondata.core.carbon.metadata.blocklet.BlockletInfo;
 import org.apache.carbondata.core.carbon.metadata.blocklet.DataFileFooter;
@@ -101,7 +102,7 @@ public class DataFileFooterConverter {
         dataFileFooter.setBlockletIndex(blockletIndex);
         dataFileFooter.setColumnInTable(columnSchemaList);
         dataFileFooter.setNumberOfRows(readBlockIndexInfo.getNum_rows());
-        dataFileFooter.setTableBlockInfo(tableBlockInfo);
+        dataFileFooter.setBlockInfo(new BlockInfo(tableBlockInfo));
         dataFileFooter.setSegmentInfo(segmentInfo);
         dataFileFooters.add(dataFileFooter);
       }