Repository: incubator-carbondata Updated Branches: refs/heads/master 159aae9d3 -> 8652eee83
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/b87c7434 Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/b87c7434 Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/b87c7434 Branch: refs/heads/master Commit: b87c743405987b81e793140d223c5935ac45e8ec Parents: 159aae9 Author: kumarvishal <kumarvishal.1...@gmail.com> Authored: Sat Sep 17 18:55:36 2016 +0530 Committer: Venkata Ramana G <ramana.gollam...@huawei.com> Committed: Sun Sep 18 04:06: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/b87c7434/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/b87c7434/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/b87c7434/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/b87c7434/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/b87c7434/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/b87c7434/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/b87c7434/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); }