From 687a2cbd26feab0eb522422606ce61445882a1f9 Mon Sep 17 00:00:00 2001 From: maochongxin Date: Mon, 31 Mar 2025 19:36:56 +0800 Subject: [PATCH 1/4] add K Q T to scan range column --- src/main/java/com/alipay/oceanbase/hbase/OHTable.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java index 4b3e3ad1..dfdef186 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -1927,6 +1927,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, byte[] start, obTableQuery.setIndexName("PRIMARY"); obTableQuery.sethTableFilter(filter); obTableQuery.addKeyRange(obNewRange); + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; } @@ -1953,6 +1954,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, final Scan scan) { : configuration.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE)); obTableQuery.setObKVParams(buildOBKVParams(scan)); + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; } @@ -1978,6 +1980,7 @@ private ObTableQuery buildObTableQuery(final Get get, Collection columnQ get.getTimeRange()); } obTableQuery.setObKVParams(buildOBKVParams(get)); + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; } From 50af7ab8bb625d5dd0acc1df4f0527e3346931b8 Mon Sep 17 00:00:00 2001 From: maochongxin Date: Mon, 31 Mar 2025 20:08:03 +0800 Subject: [PATCH 2/4] fix --- .../java/com/alipay/oceanbase/hbase/OHTable.java | 12 +++++++++--- 1 file changed, 9 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 dfdef186..b5ee6d5b 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -1927,7 +1927,9 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, byte[] start, obTableQuery.setIndexName("PRIMARY"); obTableQuery.sethTableFilter(filter); obTableQuery.addKeyRange(obNewRange); - obTableQuery.setScanRangeColumns("K", "Q", "T"); + if (obTableClient.isOdpMode()) { + obTableQuery.setScanRangeColumns("K", "Q", "T"); + } return obTableQuery; } @@ -1954,7 +1956,9 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, final Scan scan) { : configuration.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE)); obTableQuery.setObKVParams(buildOBKVParams(scan)); - obTableQuery.setScanRangeColumns("K", "Q", "T"); + if (obTableClient.isOdpMode()) { + obTableQuery.setScanRangeColumns("K", "Q", "T"); + } return obTableQuery; } @@ -1980,7 +1984,9 @@ private ObTableQuery buildObTableQuery(final Get get, Collection columnQ get.getTimeRange()); } obTableQuery.setObKVParams(buildOBKVParams(get)); - obTableQuery.setScanRangeColumns("K", "Q", "T"); + if (obTableClient.isOdpMode()) { + obTableQuery.setScanRangeColumns("K", "Q", "T"); + } return obTableQuery; } From 826e980815ef573d25e1cde076404852d7292d10 Mon Sep 17 00:00:00 2001 From: maochongxin Date: Tue, 1 Apr 2025 19:33:49 +0800 Subject: [PATCH 3/4] check not support cases --- .../OHTableSecondaryPartScanTest.java | 14 ++---- .../secondary/OHTableTimeSeriesScanTest.java | 50 ++++++++----------- 2 files changed, 25 insertions(+), 39 deletions(-) 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 d248ccce..34a966ad 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartScanTest.java @@ -226,17 +226,11 @@ public static void testScanImpl(String tableName) throws Exception { Scan scan = new Scan(keys[1].getBytes(), "putKey".getBytes()); scan.addFamily(family.getBytes()); scan.setReversed(true); - ResultScanner scanner = hTable.getScanner(scan); - List cells = getCellsFromScanner(scanner); - - int cellIndex = 0; - for (int i = 1; i >= 0; i--) { - for (String column : columns) { - AssertKeyValue(keys[i], column, lastTs, latestValue, cells.get(cellIndex)); - cellIndex++; - } + try { + hTable.getScanner(scan); + } catch (Exception e) { + Assert.assertTrue(e.getCause().getMessage().contains("secondary partitioned hbase table with reverse query not supported")); } - assertEquals(columns.length * 2, cells.size()); } hTable.close(); } diff --git a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableTimeSeriesScanTest.java b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableTimeSeriesScanTest.java index 4ef33070..d0765c2f 100644 --- a/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableTimeSeriesScanTest.java +++ b/src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableTimeSeriesScanTest.java @@ -151,6 +151,7 @@ public static void testScanImpl(String tableName) throws Exception { // 4. scan using setStartRow/setEndRow { Scan scan = new Scan(); + scan.addFamily(family.getBytes()); scan.setStartRow(keys[0].getBytes()); scan.setStopRow(endKey.getBytes()); ResultScanner scanner = hTable.getScanner(scan); @@ -173,15 +174,13 @@ public static void testScanImpl(String tableName) throws Exception { Scan scan = new Scan(keys[0].getBytes(), endKey.getBytes()); scan.addFamily(family.getBytes()); scan.setBatch(batchSize); - ResultScanner scanner = hTable.getScanner(scan); - Result result = null; - int resultSize = (keys.length * columns.length * values.length) / batchSize; - for (int i = 0; i < resultSize; i++) { - result = scanner.next(); - Assert.assertEquals(2, result.size()); + try { + ResultScanner scanner = hTable.getScanner(scan); + } catch (Exception e) { + Assert.assertTrue(e.getCause().getMessage() + .contains("timeseries hbase table with batch query not supported")); } - result = scanner.next(); - Assert.assertEquals(null, result); + } // 7. scan using setAllowPartialResults/setAllowPartialResults @@ -190,32 +189,25 @@ public static void testScanImpl(String tableName) throws Exception { scan.addFamily(family.getBytes()); scan.setMaxResultSize(10); scan.setAllowPartialResults(true); - ResultScanner scanner = hTable.getScanner(scan); - int resultSize = keys.length * columns.length * values.length; - for (int i = 0; i < resultSize; i++) { - Result result = scanner.next(); - Assert.assertEquals(1, result.size()); + try { + ResultScanner scanner = hTable.getScanner(scan); + } catch (Exception e) { + Assert.assertTrue(e.getCause().getMessage() + .contains("timeseries hbase table with allow partial results query not supported")); } - Result result = scanner.next(); - Assert.assertEquals(null, result); } // 8. scan in reverse { -// Scan scan = new Scan(keys[2].getBytes(), keys[0].getBytes()); -// scan.addFamily(family.getBytes()); -// scan.setReversed(true); -// ResultScanner scanner = hTable.getScanner(scan); -// List cells = getCellsFromScanner(scanner); -// -// int cellIndex = 0; -// for (int i = 1; i >= 0; i--) { -// for (String column : columns) { -// AssertKeyValue(keys[i], column, lastTs, latestValue, cells.get(cellIndex)); -// cellIndex++; -// } -// } -// assertEquals(columns.length * 2, cells.size()); + Scan scan = new Scan(keys[2].getBytes(), keys[0].getBytes()); + scan.addFamily(family.getBytes()); + scan.setReversed(true); + try { + ResultScanner scanner = hTable.getScanner(scan); + } catch (Exception e) { + Assert.assertTrue(e.getCause().getMessage() + .contains("timeseries hbase table with reverse query not supported")); + } } } From dd0e7814803af2a08ffa7922b1db431d824ae3ad Mon Sep 17 00:00:00 2001 From: maochongxin Date: Wed, 2 Apr 2025 11:48:02 +0800 Subject: [PATCH 4/4] always add scan range columns --- .../java/com/alipay/oceanbase/hbase/OHTable.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java index b5ee6d5b..dfdef186 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -1927,9 +1927,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, byte[] start, obTableQuery.setIndexName("PRIMARY"); obTableQuery.sethTableFilter(filter); obTableQuery.addKeyRange(obNewRange); - if (obTableClient.isOdpMode()) { - obTableQuery.setScanRangeColumns("K", "Q", "T"); - } + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; } @@ -1956,9 +1954,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, final Scan scan) { : configuration.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE)); obTableQuery.setObKVParams(buildOBKVParams(scan)); - if (obTableClient.isOdpMode()) { - obTableQuery.setScanRangeColumns("K", "Q", "T"); - } + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; } @@ -1984,9 +1980,7 @@ private ObTableQuery buildObTableQuery(final Get get, Collection columnQ get.getTimeRange()); } obTableQuery.setObKVParams(buildOBKVParams(get)); - if (obTableClient.isOdpMode()) { - obTableQuery.setScanRangeColumns("K", "Q", "T"); - } + obTableQuery.setScanRangeColumns("K", "Q", "T"); return obTableQuery; }