From fd0931daf88a57b794ce3b3d80203837856a7f99 Mon Sep 17 00:00:00 2001 From: maochongxin Date: Tue, 24 Jun 2025 11:01:00 +0800 Subject: [PATCH] fix add case for secondary partition region locator --- .../oceanbase/hbase/OHConnectionTest.java | 33 ++++++++++++++ src/test/java/unit_test_db.sql | 43 +++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/src/test/java/com/alipay/oceanbase/hbase/OHConnectionTest.java b/src/test/java/com/alipay/oceanbase/hbase/OHConnectionTest.java index 3e4046ce..9473efd3 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/OHConnectionTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/OHConnectionTest.java @@ -1050,6 +1050,39 @@ public void testKeyPartitionWithRegionLocator() throws IOException { Assert.assertEquals(startKeys[0], endKeys[0]); Assert.assertEquals(startKeys[0], HConstants.EMPTY_BYTE_ARRAY); } + + @Test + public void testRangeKeySecondaryPartitionWithRegionLocator() throws IOException { + final String tableNameStr = "test_secondary_range_key"; + final TableName tableName = TableName.valueOf(tableNameStr); + final Configuration conf = ObHTableTestUtil.newConfiguration(); + connection = ConnectionFactory.createConnection(conf); + hTable = connection.getTable(tableName); + RegionLocator locator = connection.getRegionLocator(tableName); + byte[][] startKeys = locator.getStartKeys(); + byte[][] endKeys = locator.getEndKeys(); + Assert.assertEquals("Should have 1 region", 1, startKeys.length); + Assert.assertEquals("Should have 1 region", 1, endKeys.length); + Assert.assertEquals(startKeys[0], endKeys[0]); + Assert.assertEquals(startKeys[0], HConstants.EMPTY_BYTE_ARRAY); + } + + @Test + public void testKeyRangeSecondaryPartitionWithRegionLocator() throws IOException { + final String tableNameStr = "test_secondary_key_range"; + final TableName tableName = TableName.valueOf(tableNameStr); + final Configuration conf = ObHTableTestUtil.newConfiguration(); + connection = ConnectionFactory.createConnection(conf); + hTable = connection.getTable(tableName); + RegionLocator locator = connection.getRegionLocator(tableName); + byte[][] startKeys = locator.getStartKeys(); + byte[][] endKeys = locator.getEndKeys(); + Assert.assertEquals("Should have 1 region", 1, startKeys.length); + Assert.assertEquals("Should have 1 region", 1, endKeys.length); + Assert.assertEquals(startKeys[0], endKeys[0]); + Assert.assertEquals(startKeys[0], HConstants.EMPTY_BYTE_ARRAY); + } + @Test public void testBufferedMutatorPeriodicFlush() throws Exception { diff --git a/src/test/java/unit_test_db.sql b/src/test/java/unit_test_db.sql index cc7ddfec..3fd00d75 100644 --- a/src/test/java/unit_test_db.sql +++ b/src/test/java/unit_test_db.sql @@ -339,3 +339,46 @@ PARTITION BY RANGE COLUMNS(K) ( PARTITION p9 VALUES LESS THAN ('v'), PARTITION p10 VALUES LESS THAN (MAXVALUE) ); + +CREATE TABLEGROUP test_secondary_key_range SHARDING = 'ADAPTIVE'; +CREATE TABLE IF NOT EXISTS `test_secondary_key_range$family1` ( + `K` varbinary(1024) NOT NULL, + `Q` varbinary(256) NOT NULL, + `T` bigint(20) NOT NULL, + `V` varbinary(1024) DEFAULT NULL, + `G` bigint(20) GENERATED ALWAYS AS (ABS(T)), + PRIMARY KEY (`K`, `Q`, `T`) +) TABLEGROUP = test_secondary_key_range PARTITION BY KEY(`K`) PARTITIONS 3 +SUBPARTITION BY RANGE COLUMNS(`G`) SUBPARTITION TEMPLATE ( + SUBPARTITION `p1` VALUES LESS THAN (100), + SUBPARTITION `p2` VALUES LESS THAN (200), + SUBPARTITION `p3` VALUES LESS THAN MAXVALUE +); +CREATE TABLE IF NOT EXISTS `test_secondary_key_range$family2` ( + `K` varbinary(1024) NOT NULL, + `Q` varbinary(256) NOT NULL, + `T` bigint(20) NOT NULL, + `V` varbinary(1024) DEFAULT NULL, + `G` bigint(20) GENERATED ALWAYS AS (ABS(T)), + PRIMARY KEY (`K`, `Q`, `T`) +) TABLEGROUP = test_secondary_key_range PARTITION BY KEY(`K`) PARTITIONS 3 +SUBPARTITION BY RANGE COLUMNS(`G`) SUBPARTITION TEMPLATE ( + SUBPARTITION `p1` VALUES LESS THAN (100), + SUBPARTITION `p2` VALUES LESS THAN (200), + SUBPARTITION `p3` VALUES LESS THAN MAXVALUE +); + +CREATE TABLEGROUP test_secondary_range_key SHARDING = 'ADAPTIVE'; +CREATE TABLE IF NOT EXISTS `test_secondary_range_key$family1` ( + `K` varbinary(1024) NOT NULL, + `Q` varbinary(256) NOT NULL, + `T` bigint(20) NOT NULL, + `V` varbinary(1024) DEFAULT NULL, + `G` bigint(20) GENERATED ALWAYS AS (ABS(T)), + PRIMARY KEY (`K`, `Q`, `T`) +) TABLEGROUP = test_secondary_range_key PARTITION BY RANGE COLUMNS(`G`) +SUBPARTITION BY KEY(`K`) SUBPARTITIONS 3 +( PARTITION `p1` VALUES LESS THAN (100), + PARTITION `p2` VALUES LESS THAN (200), + PARTITION `p3` VALUES LESS THAN MAXVALUE +);