@@ -1101,6 +1101,7 @@ public List<ResultScanner> getScanners(final Scan scan) throws IOException {
1101
1101
operationTimeout ) {
1102
1102
public List <ResultScanner > call () throws IOException {
1103
1103
byte [] family = new byte [] {};
1104
+ List <ResultScanner > resultScanners = new ArrayList <ResultScanner >();
1104
1105
ObTableClientQueryAsyncStreamResult clientQueryAsyncStreamResult ;
1105
1106
ObTableQueryAsyncRequest request ;
1106
1107
ObTableQuery obTableQuery ;
@@ -1112,12 +1113,14 @@ public List<ResultScanner> call() throws IOException {
1112
1113
// In a Scan operation where the family map is greater than 1 or equal to 0,
1113
1114
// we handle this by appending the column family to the qualifier on the client side.
1114
1115
// The server can then use this information to filter the appropriate column families and qualifiers.
1116
+ if (!scan .getColumnFamilyTimeRange ().isEmpty ()) {
1117
+ throw new FeatureNotSupportedException ("setColumnFamilyTimeRange is only supported in single column family for now" );
1118
+ }
1115
1119
NavigableSet <byte []> columnFilters = new TreeSet <>(Bytes .BYTES_COMPARATOR );
1116
1120
processColumnFilters (columnFilters , scan .getFamilyMap ());
1117
1121
filter = buildObHTableFilter (scan .getFilter (), scan .getTimeRange (),
1118
1122
scan .getMaxVersions (), columnFilters );
1119
1123
obTableQuery = buildObTableQuery (filter , scan );
1120
- List <ResultScanner > resultScanners = new ArrayList <ResultScanner >();
1121
1124
1122
1125
request = buildObTableQueryAsyncRequest (obTableQuery ,
1123
1126
getTargetTableName (tableNameString ));
@@ -1138,11 +1141,21 @@ public List<ResultScanner> call() throws IOException {
1138
1141
for (Map .Entry <byte [], NavigableSet <byte []>> entry : scan .getFamilyMap ()
1139
1142
.entrySet ()) {
1140
1143
family = entry .getKey ();
1144
+ if (!scan .getColumnFamilyTimeRange ().isEmpty ()) {
1145
+ Map <byte [], TimeRange > colFamTimeRangeMap = scan .getColumnFamilyTimeRange ();
1146
+ if (colFamTimeRangeMap .size () > 1 ) {
1147
+ throw new FeatureNotSupportedException ("setColumnFamilyTimeRange is only supported in single column family for now" );
1148
+ } else if (colFamTimeRangeMap .get (family ) == null ) {
1149
+ throw new IllegalArgumentException ("Scan family is not matched in ColumnFamilyTimeRange" );
1150
+ } else {
1151
+ TimeRange tr = colFamTimeRangeMap .get (family );
1152
+ scan .setTimeRange (tr .getMin (), tr .getMax ());
1153
+ }
1154
+ }
1141
1155
filter = buildObHTableFilter (scan .getFilter (), scan .getTimeRange (),
1142
1156
scan .getMaxVersions (), entry .getValue ());
1143
1157
obTableQuery = buildObTableQuery (filter , scan );
1144
1158
1145
- List <ResultScanner > resultScanners = new ArrayList <ResultScanner >();
1146
1159
String targetTableName = getTargetTableName (tableNameString , Bytes .toString (family ),
1147
1160
configuration );
1148
1161
request = buildObTableQueryAsyncRequest (obTableQuery , targetTableName );
0 commit comments