This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-3 by this push:
     new ef8d677374e HBASE-29195 Get Column value with timestamp is giving 
wrong result as not found (#6814)
ef8d677374e is described below

commit ef8d677374ec9d41730304d667a9e8fe6e5ee9ac
Author: Chandra Sekhar K <[email protected]>
AuthorDate: Fri Apr 11 19:11:06 2025 +0530

    HBASE-29195 Get Column value with timestamp is giving wrong result as not 
found (#6814)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit 15789ec56c98022f5ac9cc0832ac06b5639b3cd9)
---
 .../java/org/apache/hadoop/hbase/rest/RowResultGenerator.java     | 7 ++++++-
 .../src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java       | 7 +++++++
 .../java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java | 8 +++++++-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowResultGenerator.java 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowResultGenerator.java
index ce1eda224b4..c836ba9600a 100644
--- 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowResultGenerator.java
+++ 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowResultGenerator.java
@@ -56,7 +56,12 @@ public class RowResultGenerator extends ResultGenerator {
           }
         }
       }
-      get.setTimeRange(rowspec.getStartTime(), rowspec.getEndTime());
+      if (rowspec.isPartialTimeRange()) {
+        get.setTimestamp(rowspec.getTimestamp());
+      } else {
+        get.setTimeRange(rowspec.getStartTime(), rowspec.getEndTime());
+      }
+
       get.readVersions(rowspec.getMaxVersions());
       if (filter != null) {
         get.setFilter(filter);
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java
index e1559dd6723..23dfece6d3d 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java
@@ -46,6 +46,7 @@ public class RowSpec {
   private long endTime = DEFAULT_END_TIMESTAMP;
   private int maxVersions = 1;
   private int maxValues = Integer.MAX_VALUE;
+  private boolean partialTimeRange;
 
   public RowSpec(String path) throws IllegalArgumentException {
     this(path, null);
@@ -216,6 +217,7 @@ public class RowSpec {
       endTime = time1;
     } else {
       endTime = time0;
+      partialTimeRange = true;
     }
     return i;
   }
@@ -426,4 +428,9 @@ public class RowSpec {
     result.append("}");
     return result.toString();
   }
+
+  public boolean isPartialTimeRange() {
+    return partialTimeRange;
+  }
+
 }
diff --git 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java
 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java
index 99b54ea2693..6fae43f43ac 100644
--- 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java
+++ 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerResultGenerator.java
@@ -91,7 +91,13 @@ public class ScannerResultGenerator extends ResultGenerator {
           }
         }
       }
-      scan.setTimeRange(rowspec.getStartTime(), rowspec.getEndTime());
+
+      if (rowspec.isPartialTimeRange()) {
+        scan.setTimestamp(rowspec.getTimestamp());
+      } else {
+        scan.setTimeRange(rowspec.getStartTime(), rowspec.getEndTime());
+      }
+
       scan.readVersions(rowspec.getMaxVersions());
       if (filter != null) {
         scan.setFilter(filter);

Reply via email to