suxiaogang223 commented on code in PR #46911: URL: https://github.com/apache/doris/pull/46911#discussion_r1966984470
########## fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/source/PaimonScanNode.java: ########## @@ -245,38 +246,34 @@ public List<Split> getSplits(int numBackends) throws UserException { splitStat.setType(SplitReadType.NATIVE); splitStat.setRawFileConvertable(true); List<RawFile> rawFiles = optRawFiles.get(); - if (optDeletionFiles.isPresent()) { - List<DeletionFile> deletionFiles = optDeletionFiles.get(); - for (int i = 0; i < rawFiles.size(); i++) { - RawFile file = rawFiles.get(i); - DeletionFile deletionFile = deletionFiles.get(i); - LocationPath locationPath = new LocationPath(file.path(), - source.getCatalog().getProperties()); - try { - List<Split> dorisSplits = FileSplitter.splitFile( - locationPath, - getRealFileSplitSize(0), - null, - file.length(), - -1, - true, - null, - PaimonSplit.PaimonSplitCreator.DEFAULT); - for (Split dorisSplit : dorisSplits) { - // the element in DeletionFiles might be null - if (deletionFile != null) { - splitStat.setHasDeletionVector(true); - ((PaimonSplit) dorisSplit).setDeletionFile(deletionFile); - } - splits.add(dorisSplit); + for (int i = 0; i < rawFiles.size(); i++) { + RawFile file = rawFiles.get(i); + LocationPath locationPath = new LocationPath(file.path(), + source.getCatalog().getProperties()); + try { + List<Split> dorisSplits = FileSplitter.splitFile( + locationPath, + // if applyCountPushdown is true, we can't to split the file + // becasue the raw file and deletion vector is one-to-one mapping + getRealFileSplitSize(applyCountPushdown ? Long.MAX_VALUE : 0), + null, + file.length(), + -1, + true, + null, + PaimonSplit.PaimonSplitCreator.DEFAULT); + for (Split dorisSplit : dorisSplits) { + // try to set deletion file + if (optDeletionFiles.isPresent() && optDeletionFiles.get().get(i) != null) { + ((PaimonSplit) dorisSplit).setDeletionFile(optDeletionFiles.get().get(i)); + splitStat.setHasDeletionVector(true); } - ++rawFileSplitNum; - } catch (IOException e) { - throw new UserException("Paimon error to split file: " + e.getMessage(), e); } + splits.addAll(dorisSplits); + ++rawFileSplitNum; + } catch (IOException e) { + throw new UserException("Paimon error to split file: " + e.getMessage(), e); } - } else { - createRawFileSplits(rawFiles, splits, applyCountPushdown ? Long.MAX_VALUE : 0); Review Comment: We can put the conditional branch about whether there is a deletionFile in the for loop.The modified logic is equivalent to the previous one. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org