Github user ndwangsen commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2601#discussion_r207430989
--- Diff:
core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java ---
@@ -3212,28 +3213,27 @@ public static ColumnarFormatVersion
getFormatVersion(CarbonTable carbonTable)
}
storePath =
carbonTable.getSegmentPath(validSegments.get(0).getSegmentNo());
}
-
- CarbonFile[] carbonFiles = FileFactory
- .getCarbonFile(storePath)
- .listFiles(new CarbonFileFilter() {
- @Override
- public boolean accept(CarbonFile file) {
- if (file == null) {
- return false;
- }
- return file.getName().endsWith("carbondata");
- }
- });
- if (carbonFiles == null || carbonFiles.length < 1) {
- return CarbonProperties.getInstance().getFormatVersion();
+ // get the carbon index file header
+ FileFactory.FileType fileType = FileFactory.getFileType(storePath);
+ ColumnarFormatVersion version = null;
+ if (FileFactory.isFileExist(storePath, fileType)) {
+ SegmentIndexFileStore fileStore = new SegmentIndexFileStore();
+ fileStore.readAllIIndexOfSegment(storePath);
+ Map<String, byte[]> carbonIndexMap = fileStore.getCarbonIndexMap();
+ if (carbonIndexMap.size() == 0) {
+ version = CarbonProperties.getInstance().getFormatVersion();
+ }
+ CarbonIndexFileReader indexReader = new CarbonIndexFileReader();
+ for (byte[] fileData : carbonIndexMap.values()) {
+ indexReader.openThriftReader(fileData);
+ IndexHeader indexHeader = indexReader.readIndexHeader();
+ version =
ColumnarFormatVersion.valueOf((short)indexHeader.getVersion());
+ break;
--- End diff --
modified according to review comments
---