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
@@ -2112,7 +2114,7 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
2112
2114
if (!isTableGroup ) {
2113
2115
filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2114
2116
} else {
2115
- filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2117
+ filter = buildObHTableFilter (null , null , Integer .MAX_VALUE , kv . getQualifier () );
2116
2118
}
2117
2119
} else {
2118
2120
range .setStartKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMin (),
@@ -2134,17 +2136,19 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
2134
2136
ObObj .getMin ()));
2135
2137
range .setEndKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMax (),
2136
2138
ObObj .getMax ()));
2137
- filter = buildObHTableFilter (null , null , Integer .MAX_VALUE );
2139
+ // [MAX_VALUE, MAX_VALUE), delete nothing
2140
+ filter = buildObHTableFilter (null , new TimeRange (Long .MAX_VALUE ), Integer .MAX_VALUE );
2138
2141
} else {
2142
+ TimeRange timeRange = new TimeRange (kv .getTimestamp (), kv .getTimestamp () + 1 );
2139
2143
range .setStartKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMin (),
2140
2144
ObObj .getMin ()));
2141
2145
range .setEndKey (ObRowKey .getInstance (CellUtil .cloneRow (kv ), ObObj .getMax (),
2142
2146
ObObj .getMax ()));
2143
2147
if (!isTableGroup ) {
2144
- filter = buildObHTableFilter (null , new TimeRange ( 0 , kv . getTimestamp () + 1 ) ,
2148
+ filter = buildObHTableFilter (null , timeRange ,
2145
2149
Integer .MAX_VALUE );
2146
2150
} else {
2147
- filter = buildObHTableFilter (null , new TimeRange ( 0 , kv . getTimestamp () + 1 ) ,
2151
+ filter = buildObHTableFilter (null , timeRange ,
2148
2152
Integer .MAX_VALUE , CellUtil .cloneQualifier (kv ));
2149
2153
}
2150
2154
}
@@ -2461,27 +2465,27 @@ public void refreshTableEntry(String familyString, boolean hasTestLoad) throws E
2461
2465
}
2462
2466
2463
2467
public byte [][] getStartKeys () throws IOException {
2464
- byte [][] startKeys = new byte [0 ][];
2465
- try {
2466
- startKeys = obTableClient .getHBaseTableStartKeys (tableNameString );
2467
- } catch (Exception e ) {
2468
- throw new IOException ("Fail to get start keys of HBase Table: " + tableNameString , e );
2468
+ if (regionLocator == null ) {
2469
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2470
+ regionLocator = executor .getRegionLocator (tableNameString );
2469
2471
}
2470
- return startKeys ;
2472
+ return regionLocator . getStartKeys () ;
2471
2473
}
2472
2474
2473
2475
public byte [][] getEndKeys () throws IOException {
2474
- byte [][] endKeys = new byte [0 ][];
2475
- try {
2476
- endKeys = obTableClient .getHBaseTableEndKeys (tableNameString );
2477
- } catch (Exception e ) {
2478
- throw new IOException ("Fail to get start keys of HBase Table: " + tableNameString , e );
2476
+ if (regionLocator == null ) {
2477
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2478
+ regionLocator = executor .getRegionLocator (tableNameString );
2479
2479
}
2480
- return endKeys ;
2480
+ return regionLocator . getEndKeys () ;
2481
2481
}
2482
2482
2483
2483
public Pair <byte [][], byte [][]> getStartEndKeys () throws IOException {
2484
- return new Pair <>(getStartKeys (), getEndKeys ());
2484
+ if (regionLocator == null ) {
2485
+ OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor (tableNameString , obTableClient );
2486
+ regionLocator = executor .getRegionLocator (tableNameString );
2487
+ }
2488
+ return regionLocator .getStartEndKeys ();
2485
2489
}
2486
2490
2487
2491
public static CompareFilter .CompareOp getCompareOp (CompareOperator cmpOp ) {
0 commit comments