private static DataFileFooter getDataFileFooter(TableBlockInfo tableBlockInfo, boolean forceReadDataFileFooter) throws IOException { BlockletDetailInfo detailInfo = tableBlockInfo.getDetailInfo(); if (detailInfo == null || forceReadDataFileFooter) { AbstractDataFileFooterConverter fileFooterConverter = DataFileFooterConverterFactory.getInstance() .getDataFileFooterConverter(tableBlockInfo.getVersion()); return fileFooterConverter.readDataFileFooter(tableBlockInfo); } else { DataFileFooter fileFooter = new DataFileFooter(); fileFooter.setSchemaUpdatedTimeStamp(detailInfo.getSchemaUpdatedTimeStamp()); ColumnarFormatVersion version = ColumnarFormatVersion.valueOf(detailInfo.getVersionNumber()); AbstractDataFileFooterConverter dataFileFooterConverter = DataFileFooterConverterFactory.getInstance().getDataFileFooterConverter(version); List<ColumnSchema> schema = dataFileFooterConverter.getSchema(tableBlockInfo); fileFooter.setColumnInTable(schema); SegmentInfo segmentInfo = new SegmentInfo(); segmentInfo.setColumnCardinality(detailInfo.getDimLens()); fileFooter.setSegmentInfo(segmentInfo); return fileFooter; } }