From ac17bc5764b541a8b442724fbbbff0adf200fd2e Mon Sep 17 00:00:00 2001 From: WeiXinChan Date: Tue, 11 Mar 2025 16:18:37 +0800 Subject: [PATCH 1/2] open distributed execute before tests --- .../OHTableSecondaryPartAppendTest.java | 2 ++ .../OHTableSecondaryPartBatchGetTest.java | 2 ++ ...HTableSecondaryPartCheckAndMutateTest.java | 2 ++ .../OHTableSecondaryPartGetTest.java | 2 ++ .../OHTableSecondaryPartIncrementTest.java | 2 ++ .../OHTableSecondaryPartPutTest.java | 4 ++- .../OHTableSecondaryPartScanTest.java | 2 ++ .../hbase/util/ObHTableSecondaryPartUtil.java | 12 +++++++ .../hbase/util/ObHTableTestUtil.java | 11 ++++++ .../hbase/util/TableTemplateManager.java | 35 ++++++++++--------- 10 files changed, 56 insertions(+), 18 deletions(-) diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartAppendTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartAppendTest.java index d175a278..32bc5ef1 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartAppendTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartAppendTest.java @@ -49,6 +49,7 @@ public class OHTableSecondaryPartAppendTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -56,6 +57,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartBatchGetTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartBatchGetTest.java index f05772ab..2f59b330 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartBatchGetTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartBatchGetTest.java @@ -45,6 +45,7 @@ public class OHTableSecondaryPartBatchGetTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -52,6 +53,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartCheckAndMutateTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartCheckAndMutateTest.java index 04c49fb1..9c815871 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartCheckAndMutateTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartCheckAndMutateTest.java @@ -45,6 +45,7 @@ public class OHTableSecondaryPartCheckAndMutateTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -52,6 +53,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java index 84a4ebf0..3fadf09c 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java @@ -35,6 +35,7 @@ import static com.alipay.oceanbase.hbase.util.ObHTableSecondaryPartUtil.*; import static com.alipay.oceanbase.hbase.util.ObHTableTestUtil.FOR_EACH; +import static com.alipay.oceanbase.hbase.util.TableTemplateManager.TableType.SECONDARY_PARTITIONED_KEY_RANGE; import static org.apache.hadoop.hbase.util.Bytes.toBytes; import static org.junit.Assert.assertEquals; @@ -53,6 +54,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartIncrementTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartIncrementTest.java index d4d7a4cc..26af03f8 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartIncrementTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartIncrementTest.java @@ -49,6 +49,7 @@ public class OHTableSecondaryPartIncrementTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -56,6 +57,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartPutTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartPutTest.java index add0d03a..45beb82b 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartPutTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartPutTest.java @@ -43,6 +43,7 @@ public class OHTableSecondaryPartPutTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -50,7 +51,8 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { - dropTables(tableNames, group2tableNames); + closeDistributedExecute(); + dropTables(tableNames, group2tableNames); } @Before diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java index 036d9789..561a34f5 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java @@ -48,6 +48,7 @@ public class OHTableSecondaryPartScanTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); } @@ -55,6 +56,7 @@ public static void before() throws Exception { @AfterClass public static void finish() throws Exception { + closeDistributedExecute(); dropTables(tableNames, group2tableNames); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableSecondaryPartUtil.java b/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableSecondaryPartUtil.java index 48535e96..59f95f3a 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableSecondaryPartUtil.java +++ b/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableSecondaryPartUtil.java @@ -25,6 +25,18 @@ public class ObHTableSecondaryPartUtil { + public static void openDistributedExecute() throws Exception { + Connection conn = ObHTableTestUtil.getSysConnection(); + String stmt = "ALTER SYSTEM SET _obkv_feature_mode = 'distributed_execute=on';"; + conn.createStatement().execute(stmt); + } + + public static void closeDistributedExecute() throws Exception { + Connection conn = ObHTableTestUtil.getSysConnection(); + String stmt = "ALTER SYSTEM SET _obkv_feature_mode = 'distributed_execute=off';"; + conn.createStatement().execute(stmt); + } + public static void createTables(TableTemplateManager.TableType type, List tableNames, Map> group2tableNames, boolean printSql) throws Exception { Connection conn = ObHTableTestUtil.getConnection(); // single cf table diff --git a/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableTestUtil.java b/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableTestUtil.java index 584bdb39..b5e4be84 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableTestUtil.java +++ b/src/test/java/com/alipay/oceanbase/hbase/util/ObHTableTestUtil.java @@ -157,6 +157,17 @@ static public Connection getConnection() { } } + static public Connection getSysConnection() { + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + Connection conn = DriverManager.getConnection(JDBC_URL, SYS_USER_NAME, SYS_PASSWORD); + + return conn; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @FunctionalInterface public interface CheckedConsumer { void accept(T t) throws Exception; diff --git a/src/test/java/com/alipay/oceanbase/hbase/util/TableTemplateManager.java b/src/test/java/com/alipay/oceanbase/hbase/util/TableTemplateManager.java index 21c23081..6a257fdc 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/util/TableTemplateManager.java +++ b/src/test/java/com/alipay/oceanbase/hbase/util/TableTemplateManager.java @@ -21,6 +21,7 @@ import java.util.EnumMap; import java.util.Map; public class TableTemplateManager { + public static final long PART_NUM = 3; public static final String TABLE_GROUP_PREFIX = "test_group_"; public static final String COLUMN_FAMILY = "cf"; public enum TableType { @@ -41,7 +42,7 @@ public enum TableType { static { // 普通表非分区表模版 SQL_TEMPLATES.put(TableType.NON_PARTITIONED_REGULAR, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -50,7 +51,7 @@ public enum TableType { ") TABLEGROUP = %s"); // 时序表非分区表模版 SQL_TEMPLATES.put(TableType.NON_PARTITIONED_TIME_SERIES, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + " `S` bigint(20) NOT NULL,\n" + @@ -59,7 +60,7 @@ public enum TableType { ") TABLEGROUP = %s"); // 普通表一级分区模板 SQL_TEMPLATES.put(TableType.SINGLE_PARTITIONED_REGULAR, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -68,7 +69,7 @@ public enum TableType { ") TABLEGROUP = %s PARTITION BY KEY(`K`) PARTITIONS %d "); // 时序表一级分区模板 SQL_TEMPLATES.put(TableType.SINGLE_PARTITIONED_TIME_SERIES, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + " `S` bigint(20) NOT NULL,\n" + @@ -77,7 +78,7 @@ public enum TableType { ") TABLEGROUP = %s PARTITION BY KEY(`K`) PARTITIONS %d "); // 普通表RANGE-KEY分区(使用K) SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_RANGE_KEY, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -93,7 +94,7 @@ public enum TableType { // 合并GEN类型的注释处理 SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_RANGE_KEY_GEN, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -109,7 +110,7 @@ public enum TableType { // 普通表KEY-RANGE分区(使用K) SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_KEY_RANGE, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -126,7 +127,7 @@ public enum TableType { // 普通表KEY-RANGE分区(使用生成列) SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_KEY_RANGE_GEN, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `Q` varbinary(256) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + @@ -143,7 +144,7 @@ public enum TableType { // 时序表RANGE-KEY分区 SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_TIME_RANGE_KEY, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + " `S` bigint(20) NOT NULL,\n" + @@ -159,7 +160,7 @@ public enum TableType { // 时序表KEY-RANGE分区 SQL_TEMPLATES.put(TableType.SECONDARY_PARTITIONED_TIME_KEY_RANGE, - "CREATE TABLE `%s` (\n" + + "CREATE TABLE IF NOT EXISTS `%s` (\n" + " `K` varbinary(1024) NOT NULL,\n" + " `T` bigint(20) NOT NULL,\n" + " `S` bigint(20) NOT NULL,\n" + @@ -188,7 +189,7 @@ public static String getCreateTableSQL(TableType type, String tableName, break; case SINGLE_PARTITIONED_REGULAR: case SINGLE_PARTITIONED_TIME_SERIES: // 合并相同处理逻辑 - params = new Object[]{tableName, tableGroup, 97}; + params = new Object[]{tableName, tableGroup, PART_NUM}; break; case SECONDARY_PARTITIONED_RANGE_KEY: case SECONDARY_PARTITIONED_RANGE_KEY_GEN: @@ -200,7 +201,7 @@ public static String getCreateTableSQL(TableType type, String tableName, getGeneratedColumn(type), tableGroup, isGen ? "K_PREFIX" : "K", - 97, + PART_NUM, timeRange.lowerBound1(), timeRange.lowerBound1() + 86400000, timeRange.lowerBound1() + 172800000 @@ -213,7 +214,7 @@ public static String getCreateTableSQL(TableType type, String tableName, "", tableGroup, "K", - 97, + PART_NUM, timeRange.lowerBound1(), timeRange.lowerBound1() + 86400000, timeRange.lowerBound1() + 172800000 @@ -241,13 +242,13 @@ private static String getGeneratedColumn(TableType type) { private static String getPartitionStrategy(TableType type) { if (type.name().contains("RANGE_KEY")) { return type.name().contains("GEN") - ? "RANGE COLUMNS(`G`) SUBPARTITION BY KEY(`K_PREFIX`) SUBPARTITIONS 97" - : "RANGE COLUMNS(`G`) SUBPARTITION BY KEY(`K`) SUBPARTITIONS 97"; + ? "RANGE COLUMNS(`G`) SUBPARTITION BY KEY(`K_PREFIX`) SUBPARTITIONS " + PART_NUM + : "RANGE COLUMNS(`G`) SUBPARTITION BY KEY(`K`) SUBPARTITIONS "+ PART_NUM; } if (type.name().contains("KEY_RANGE")) { return type.name().contains("GEN") - ? "KEY(`K_PREFIX`) PARTITIONS 97 SUBPARTITION BY RANGE COLUMNS(`G`)" - : "KEY(`K`) PARTITIONS 97 SUBPARTITION BY RANGE COLUMNS(`G`)"; + ? "KEY(`K_PREFIX`) PARTITIONS "+ PART_NUM +" SUBPARTITION BY RANGE COLUMNS(`G`)" + : "KEY(`K`) PARTITIONS "+ PART_NUM +" SUBPARTITION BY RANGE COLUMNS(`G`)"; } return ""; } From 2ef9df41b72b1a8a0ec2d4549d4b991ad1abfe80 Mon Sep 17 00:00:00 2001 From: WeiXinChan Date: Tue, 11 Mar 2025 17:35:15 +0800 Subject: [PATCH 2/2] fix test --- .../oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java index 3fadf09c..386a91b3 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartGetTest.java @@ -35,7 +35,6 @@ import static com.alipay.oceanbase.hbase.util.ObHTableSecondaryPartUtil.*; import static com.alipay.oceanbase.hbase.util.ObHTableTestUtil.FOR_EACH; -import static com.alipay.oceanbase.hbase.util.TableTemplateManager.TableType.SECONDARY_PARTITIONED_KEY_RANGE; import static org.apache.hadoop.hbase.util.Bytes.toBytes; import static org.junit.Assert.assertEquals; @@ -47,6 +46,7 @@ public class OHTableSecondaryPartGetTest { @BeforeClass public static void before() throws Exception { + openDistributedExecute(); for (TableTemplateManager.TableType type : TableTemplateManager.TableType.values()) { createTables(type, tableNames, group2tableNames, true); }