Github user gvramana commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2131#discussion_r178518466 --- Diff: core/src/main/java/org/apache/carbondata/core/indexstore/blockletindex/BlockletDataMapFactory.java --- @@ -83,28 +85,59 @@ public DataMapWriter createWriter(Segment segment, String writeDirectoryPath) { } @Override - public List<CoarseGrainDataMap> getDataMaps(Segment segment) throws IOException { + public List<CoarseGrainDataMap> getDataMaps(Segment segment, ReadCommitted readCommitted) + throws IOException { List<TableBlockIndexUniqueIdentifier> tableBlockIndexUniqueIdentifiers = - getTableBlockIndexUniqueIdentifiers(segment); + getTableBlockIndexUniqueIdentifiers(segment, readCommitted); return cache.getAll(tableBlockIndexUniqueIdentifiers); } - private List<TableBlockIndexUniqueIdentifier> getTableBlockIndexUniqueIdentifiers( - Segment segment) throws IOException { + private List<TableBlockIndexUniqueIdentifier> getTableBlockIndexUniqueIdentifiers(Segment segment, + ReadCommitted readCommitted) throws IOException { List<TableBlockIndexUniqueIdentifier> tableBlockIndexUniqueIdentifiers = segmentMap.get(segment.getSegmentNo()); if (tableBlockIndexUniqueIdentifiers == null) { tableBlockIndexUniqueIdentifiers = new ArrayList<>(); + // TODO: integrate with ReadCommitted + // ReadCommitted readCommitted; + // if (job.getConfiguration().get(CARBON_UNMANAGED_TABLE).equalsIgnoreCase("true")) { + // updateStatusManager = null; + // readCommitted = new LatestFilesReadCommitted(identifier.getTablePath()); + // } else { + // loadMetadataDetails = SegmentStatusManager + // .readTableStatusFile(CarbonTablePath + // .getTableStatusFilePath(identifier.getTablePath())); + // updateStatusManager = + // new SegmentUpdateStatusManager(identifier, loadMetadataDetails); + // readCommitted = + // new TableStatusReadCommitted(job, this, loadMetadataDetails, updateStatusManager); + // } + // Map<String, String> indexFiles = readCommitted.getCommittedIndexList(segment); Map<String, String> indexFiles; - if (segment.getSegmentFileName() == null) { - String path = - CarbonTablePath.getSegmentPath(identifier.getTablePath(), segment.getSegmentNo()); - indexFiles = new SegmentIndexFileStore().getIndexFilesFromSegment(path); + if (CarbonUtil.isUnmanagedCarbonTable(identifier.getTablePath(), true)) { + if (null != readCommitted) { + indexFiles = readCommitted.getCommittedIndexMapSegments(); + } else { + indexFiles = + new SegmentIndexFileStore().getIndexFilesFromSegment(identifier.getTablePath()); + } } else { - SegmentFileStore fileStore = - new SegmentFileStore(identifier.getTablePath(), segment.getSegmentFileName()); - indexFiles = fileStore.getIndexFiles(); + if (segment.getSegmentFileName() == null) { + + if (null != readCommitted) { + indexFiles = readCommitted.getCommittedIndexMapPerSegment(segment); --- End diff -- This logic should be common across managed and unmanaged
---