From f9176e45780711d6408da469362950cc75a25bec Mon Sep 17 00:00:00 2001 From: zjw Date: Mon, 28 Apr 2025 14:07:40 +0800 Subject: [PATCH 1/2] fix [multi cf] put random binary column, qualifier unexpectedly expands its original size --- src/main/java/com/alipay/oceanbase/hbase/OHTable.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java index 8d5f6b9f..d7eb1725 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -2176,9 +2176,12 @@ private BatchOperation buildBatchOperation(String tableName, List for (KeyValue kv : keyValueList) { singleOpResultNum++; if (isTableGroup) { - KeyValue new_kv = modifyQualifier(kv, - (Bytes.toString(family) + "." + Bytes.toString(kv.getQualifier())) - .getBytes()); + byte [] old_qualifier = kv.getQualifier(); + byte [] new_qualifier = new byte[family.length + 1/* length of "." */ + old_qualifier.length]; + System.arraycopy(family, 0, new_qualifier, 0, family.length); + new_qualifier[family.length] = 0x2E; // 0x2E in utf-8 is "." + System.arraycopy(old_qualifier, 0, new_qualifier, family.length +1,old_qualifier.length ); + KeyValue new_kv = modifyQualifier(kv, new_qualifier); batch .addOperation(buildMutation(new_kv, INSERT_OR_UPDATE, true, put.getTTL())); } else { From 618fcca9ec0902cb35445c5e0eaff20b0b6a3341 Mon Sep 17 00:00:00 2001 From: zjw Date: Mon, 28 Apr 2025 15:25:43 +0800 Subject: [PATCH 2/2] rename variables --- .../java/com/alipay/oceanbase/hbase/OHTable.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java index d7eb1725..0ef873b6 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -2176,14 +2176,14 @@ private BatchOperation buildBatchOperation(String tableName, List for (KeyValue kv : keyValueList) { singleOpResultNum++; if (isTableGroup) { - byte [] old_qualifier = kv.getQualifier(); - byte [] new_qualifier = new byte[family.length + 1/* length of "." */ + old_qualifier.length]; - System.arraycopy(family, 0, new_qualifier, 0, family.length); - new_qualifier[family.length] = 0x2E; // 0x2E in utf-8 is "." - System.arraycopy(old_qualifier, 0, new_qualifier, family.length +1,old_qualifier.length ); - KeyValue new_kv = modifyQualifier(kv, new_qualifier); + byte[] oldQualifier = kv.getQualifier(); + byte[] newQualifier = new byte[family.length + 1/* length of "." */ + oldQualifier.length]; + System.arraycopy(family, 0, newQualifier, 0, family.length); + newQualifier[family.length] = 0x2E; // 0x2E in utf-8 is "." + System.arraycopy(oldQualifier, 0, newQualifier, family.length +1, oldQualifier.length ); + KeyValue newKV = modifyQualifier(kv, newQualifier); batch - .addOperation(buildMutation(new_kv, INSERT_OR_UPDATE, true, put.getTTL())); + .addOperation(buildMutation(newKV, INSERT_OR_UPDATE, true, put.getTTL())); } else { batch.addOperation(buildMutation(kv, INSERT_OR_UPDATE, false, put.getTTL())); }