You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2026/09/15 09:19:01 UTC
(hbase) branch branch-3 updated: HBASE-30149 Fix PrefixFilter and range scans on hbase:meta (#8610)
This is an automated email from the ASF dual-hosted git repository.
Apache9 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 cd4c7a13d37 HBASE-30149 Fix PrefixFilter and range scans on hbase:meta (#8610)
cd4c7a13d37 is described below
commit cd4c7a13d37474983909fd1463942cd65f743435
Author: Ma Zhengxuan <49...@users.noreply.github.com>
AuthorDate: Tue Sep 15 15:07:15 2026 +0800
HBASE-30149 Fix PrefixFilter and range scans on hbase:meta (#8610)
Signed-off-by: Duo Zhang <zh...@apache.org>
(cherry picked from commit db9eff6e76d2308bf30b302022b45f862047e779)
---
.../java/org/apache/hadoop/hbase/MetaCellComparator.java | 6 +++---
.../java/org/apache/hadoop/hbase/TestMetaTableAccessor.java | 13 +++++++++++++
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/MetaCellComparator.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/MetaCellComparator.java
index 2a7d86ded11..925b0af9f6d 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/MetaCellComparator.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/MetaCellComparator.java
@@ -148,11 +148,11 @@ public class MetaCellComparator extends CellComparatorImpl {
if (result != 0) {
return result;
} else {
- if (leftDelimiter < 0 && rightDelimiter >= 0) {
+ if (leftFarDelimiter < 0 && rightFarDelimiter >= 0) {
return -1;
- } else if (rightDelimiter < 0 && leftDelimiter >= 0) {
+ } else if (rightFarDelimiter < 0 && leftFarDelimiter >= 0) {
return 1;
- } else if (leftDelimiter < 0) {
+ } else if (leftFarDelimiter < 0) {
return 0;
}
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
index d3cde97a741..dac46485cd8 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
@@ -41,7 +41,9 @@ import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.client.RegionLocator;
import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.ipc.CallRunner;
import org.apache.hadoop.hbase.ipc.DelegatingRpcScheduler;
import org.apache.hadoop.hbase.ipc.PriorityFunction;
@@ -428,6 +430,17 @@ public class TestMetaTableAccessor {
doReturn(true).when(visitor).visit(any());
MetaTableAccessor.scanMeta(connection, visitor, tableName, Bytes.toBytes("region_ac"), 1);
verify(visitor, times(1)).visit(any());
+
+ byte[] prefix = Bytes.add(tableName.getName(), new byte[] { HConstants.DELIMITER });
+ try (Table metaTable = connection.getTable(TableName.META_TABLE_NAME)) {
+ Scan rangeScan = new Scan().withStartRow(prefix)
+ .withStopRow(Bytes.add(tableName.getName(), new byte[] { HConstants.DELIMITER + 1 }));
+ assertEquals(3, HBaseTestingUtil.countRows(metaTable, rangeScan));
+
+ Scan prefixScan = new Scan();
+ prefixScan.setFilter(new PrefixFilter(prefix));
+ assertEquals(3, HBaseTestingUtil.countRows(metaTable, prefixScan));
+ }
table.close();
}