pvary commented on a change in pull request #1339: URL: https://github.com/apache/hive/pull/1339#discussion_r464306341
########## File path: ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java ########## @@ -118,70 +126,217 @@ */ private long visibilityTxnId; + private List<DeltaFileMetaData> deltaFiles; + public DeltaMetaData() { - this(0,0,new ArrayList<Integer>(), 0); + this(0, 0, new ArrayList<>(), 0, new ArrayList<>()); } + /** + * @param minWriteId min writeId of the delta directory + * @param maxWriteId max writeId of the delta directory * @param stmtIds delta dir suffixes when a single txn writes > 1 delta in the same partition * @param visibilityTxnId maybe 0, if the dir name didn't have it. txnid:0 is always visible + * @param deltaFiles bucketFiles in the directory */ - DeltaMetaData(long minWriteId, long maxWriteId, List<Integer> stmtIds, long visibilityTxnId) { + public DeltaMetaData(long minWriteId, long maxWriteId, List<Integer> stmtIds, long visibilityTxnId, + List<DeltaFileMetaData> deltaFiles) { this.minWriteId = minWriteId; this.maxWriteId = maxWriteId; if (stmtIds == null) { throw new IllegalArgumentException("stmtIds == null"); } this.stmtIds = stmtIds; this.visibilityTxnId = visibilityTxnId; + this.deltaFiles = ObjectUtils.defaultIfNull(deltaFiles, new ArrayList<>()); } - long getMinWriteId() { + + public long getMinWriteId() { return minWriteId; } - long getMaxWriteId() { + + public long getMaxWriteId() { return maxWriteId; } - List<Integer> getStmtIds() { + + public List<Integer> getStmtIds() { return stmtIds; } - long getVisibilityTxnId() { + + public long getVisibilityTxnId() { return visibilityTxnId; } + + public List<DeltaFileMetaData> getDeltaFiles() { + return deltaFiles; + } + + public List<DeltaFileMetaData> getDeltaFilesForStmtId(final Integer stmtId) { + if (stmtIds.size() <= 1 || stmtId == null) { + // If it is not a multistatement delta, we do not store the stmtId in the file list + return deltaFiles; + } else { + return deltaFiles.stream().filter(df -> stmtId.equals(df.getStmtId())).collect(Collectors.toList()); Review comment: Question: How often do we call this? Is it ok to calculate this every time, or it would be better to store in a way that is already filtered, like a map? ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org