65
65
import org .apache .hadoop .hbase .util .VersionInfo ;
66
66
import org .slf4j .Logger ;
67
67
68
+ import javax .swing .plaf .synth .Region ;
68
69
import java .io .ByteArrayOutputStream ;
69
70
import java .io .IOException ;
70
71
import java .util .*;
@@ -195,6 +196,7 @@ public class OHTable implements Table {
195
196
196
197
private int scannerTimeout ;
197
198
199
+ private RegionLocator regionLocator ;
198
200
/**
199
201
* Creates an object to access a HBase table.
200
202
* Shares oceanbase table obTableClient and other resources with other OHTable instances
@@ -2082,7 +2084,7 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
2082
2084
if (!isTableGroup ) {
2083
2085
filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2084
2086
} else {
2085
- filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2087
+ filter = buildObHTableFilter (null , null , Integer .MAX_VALUE , kv . getQualifier () );
2086
2088
}
2087
2089
} else {
2088
2090
range .setStartKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMin (),
@@ -2104,19 +2106,21 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
2104
2106
ObObj .getMin ()));
2105
2107
range .setEndKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMax (),
2106
2108
ObObj .getMax ()));
2107
- filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2109
+ // [MAX_VALUE, MAX_VALUE), delete nothing
2110
+ filter = buildObHTableFilter (null , new TimeRange (Long .MAX_VALUE ), Integer .MAX_VALUE );
2108
2111
} else {
2112
+ TimeRange timeRange = new TimeRange (kv .getTimestamp (), kv .getTimestamp () + 1 );
2109
2113
range .setStartKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMin (),
2110
2114
ObObj .getMin ()));
2111
2115
range .setEndKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMax (),
2112
2116
ObObj .getMax ()));
2113
2117
if (!isTableGroup ) {
2114
2118
filter = buildObHTableFilter (null ,
2115
- new TimeRange ( 0 , kv . getTimestamp () + 1 ) ,
2119
+ timeRange ,
2116
2120
Integer .MAX_VALUE );
2117
2121
} else {
2118
2122
filter = buildObHTableFilter (null ,
2119
- new TimeRange ( 0 , kv . getTimestamp () + 1 ) ,
2123
+ timeRange ,
2120
2124
Integer .MAX_VALUE , CellUtil .cloneQualifier (kv ));
2121
2125
}
2122
2126
}
@@ -2432,27 +2436,27 @@ public void refreshTableEntry(String familyString, boolean hasTestLoad) throws E
2432
2436
}
2433
2437
2434
2438
public byte [][] getStartKeys () throws IOException {
2435
- byte [][] startKeys = new byte [0 ][];
2436
- try {
2437
- startKeys = obTableClient .getHBaseTableStartKeys (tableNameString );
2438
- } catch (Exception e ) {
2439
- throw new IOException ("Fail to get start keys of HBase Table: " + tableNameString , e );
2439
+ if (regionLocator == null ) {
2440
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2441
+ regionLocator = executor .getRegionLocator (tableNameString );
2440
2442
}
2441
- return startKeys ;
2443
+ return regionLocator . getStartKeys () ;
2442
2444
}
2443
2445
2444
2446
public byte [][] getEndKeys () throws IOException {
2445
- byte [][] endKeys = new byte [0 ][];
2446
- try {
2447
- endKeys = obTableClient .getHBaseTableEndKeys (tableNameString );
2448
- } catch (Exception e ) {
2449
- throw new IOException ("Fail to get start keys of HBase Table: " + tableNameString , e );
2447
+ if (regionLocator == null ) {
2448
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2449
+ regionLocator = executor .getRegionLocator (tableNameString );
2450
2450
}
2451
- return endKeys ;
2451
+ return regionLocator . getEndKeys () ;
2452
2452
}
2453
2453
2454
2454
public Pair <byte [][], byte [][]> getStartEndKeys () throws IOException {
2455
- return new Pair <>(getStartKeys (), getEndKeys ());
2455
+ if (regionLocator == null ) {
2456
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2457
+ regionLocator = executor .getRegionLocator (tableNameString );
2458
+ }
2459
+ return regionLocator .getStartEndKeys ();
2456
2460
}
2457
2461
2458
2462
private CompareFilter .CompareOp getCompareOp (CompareOperator cmpOp ) {
0 commit comments