This is an automated email from the ASF dual-hosted git repository.
kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 9f9844d HIVE-24975: Fix a bug in ValidWriteIdList comparison in
TxnIdUtils (#2641) (Sourabh Goyal reviewed by Zoltan Haindrich)
9f9844d is described below
commit 9f9844dbc881e2a9267c259b8c04e7787f7fadc4
Author: Sourabh Goyal <[email protected]>
AuthorDate: Thu Dec 9 01:21:08 2021 -0800
HIVE-24975: Fix a bug in ValidWriteIdList comparison in TxnIdUtils (#2641)
(Sourabh Goyal reviewed by Zoltan Haindrich)
---
.../src/java/org/apache/hive/common/util/TxnIdUtils.java | 2 +-
.../src/test/org/apache/hive/common/util/TestTxnIdUtils.java | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/storage-api/src/java/org/apache/hive/common/util/TxnIdUtils.java
b/storage-api/src/java/org/apache/hive/common/util/TxnIdUtils.java
index bd972d4..7de7464 100644
--- a/storage-api/src/java/org/apache/hive/common/util/TxnIdUtils.java
+++ b/storage-api/src/java/org/apache/hive/common/util/TxnIdUtils.java
@@ -67,7 +67,7 @@ public class TxnIdUtils {
}
} else {
if (b.getHighWatermark() != a.getInvalidWriteIds()[minLen] -1) {
- return Long.signum(b.getHighWatermark() -
(a.getInvalidWriteIds()[minLen] -1));
+ return Long.signum((a.getInvalidWriteIds()[minLen] - 1) -
b.getHighWatermark());
}
if (allInvalidFrom(a.getInvalidWriteIds(), minLen,
a.getHighWatermark())) {
return 0;
diff --git
a/storage-api/src/test/org/apache/hive/common/util/TestTxnIdUtils.java
b/storage-api/src/test/org/apache/hive/common/util/TestTxnIdUtils.java
index ab5a472..1f646a3 100644
--- a/storage-api/src/test/org/apache/hive/common/util/TestTxnIdUtils.java
+++ b/storage-api/src/test/org/apache/hive/common/util/TestTxnIdUtils.java
@@ -19,6 +19,7 @@ package org.apache.hive.common.util;
import java.util.BitSet;
+import org.apache.hadoop.hive.common.ValidWriteIdList;
import org.apache.hadoop.hive.common.ValidReaderWriteIdList;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -190,5 +191,15 @@ public class TestTxnIdUtils {
new ValidReaderWriteIdList("default.table2", new long[] {8,10,11}, new
BitSet(), 11)),
-1);
+ ValidWriteIdList a =
+ new ValidReaderWriteIdList("default.test:1:1:1:");
+ ValidWriteIdList b =
+ new ValidReaderWriteIdList("default.test:1:9223372036854775807::");
+
+ // should return -1 since b is more recent
+ assertEquals(TxnIdUtils.compare(a, b), -1);
+
+ // should return 1 since b is more recent
+ assertEquals(TxnIdUtils.compare(b, a), 1);
}
}