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


---

Reply via email to