keith-turner commented on code in PR #5335:
URL: https://github.com/apache/accumulo/pull/5335#discussion_r1956612982


##########
core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletsMetadata.java:
##########
@@ -326,82 +318,12 @@ public Options checkConsistency() {
     public Options fetch(ColumnType... colsToFetch) {
       Preconditions.checkArgument(colsToFetch.length > 0);
 
-      for (ColumnType colToFetch : colsToFetch) {
-
-        fetchedCols.add(colToFetch);
-
-        switch (colToFetch) {
-          case CLONED:
-            families.add(ClonedColumnFamily.NAME);
-            break;
-          case DIR:
-            qualifiers.add(DIRECTORY_COLUMN);
-            break;
-          case FILES:
-            families.add(DataFileColumnFamily.NAME);
-            break;
-          case FLUSH_ID:
-            qualifiers.add(FLUSH_COLUMN);
-            break;
-          case AVAILABILITY:
-            
qualifiers.add(TabletsSection.TabletColumnFamily.AVAILABILITY_COLUMN);
-            break;
-          case HOSTING_REQUESTED:
-            qualifiers.add(TabletsSection.TabletColumnFamily.REQUESTED_COLUMN);
-            break;
-          case LAST:
-            families.add(LastLocationColumnFamily.NAME);
-            break;
-          case LOADED:
-            families.add(BulkFileColumnFamily.NAME);
-            break;
-          case LOCATION:
-            families.add(CurrentLocationColumnFamily.NAME);
-            families.add(FutureLocationColumnFamily.NAME);
-            break;
-          case LOGS:
-            families.add(LogColumnFamily.NAME);
-            break;
-          case PREV_ROW:
-            qualifiers.add(PREV_ROW_COLUMN);
-            break;
-          case SCANS:
-            families.add(ScanFileColumnFamily.NAME);
-            break;
-          case SUSPEND:
-            
families.add(SuspendLocationColumn.SUSPEND_COLUMN.getColumnFamily());
-            break;
-          case TIME:
-            qualifiers.add(TIME_COLUMN);
-            break;
-          case ECOMP:
-            families.add(ExternalCompactionColumnFamily.NAME);
-            break;
-          case MERGED:
-            families.add(MergedColumnFamily.NAME);
-            break;
-          case OPID:
-            qualifiers.add(OPID_COLUMN);
-            break;
-          case SELECTED:
-            qualifiers.add(SELECTED_COLUMN);
-            break;
-          case COMPACTED:
-            families.add(CompactedColumnFamily.NAME);
-            break;
-          case USER_COMPACTION_REQUESTED:
-            families.add(UserCompactionRequestedColumnFamily.NAME);
-            break;
-          case UNSPLITTABLE:
-            qualifiers.add(SplitColumnFamily.UNSPLITTABLE_COLUMN);
-            break;
-          case MERGEABILITY:
-            qualifiers.add(TabletColumnFamily.MERGEABILITY_COLUMN);
-            break;
-          default:
-            throw new IllegalArgumentException("Unknown col type " + 
colToFetch);
-        }
-      }
+      var columns = Set.of(colsToFetch);
+      fetchedCols.addAll(columns);
+      Map<Boolean,Set<ColumnType>> groups = columns.stream()
+          .collect(Collectors.partitioningBy(FETCH_QUALIFIERS::contains, 
Collectors.toSet()));
+      qualifiers.addAll(ColumnType.resolveQualifiers(groups.get(true)));
+      families.addAll(ColumnType.resolveFamiliesAsText(groups.get(false)));

Review Comment:
   The following may do the same thing w/o allocating the intermediate sets, 
maps, and streams.
   
   ```suggestion
         for(var col : fetchedCols) {
           fetchedCols.add(col);
           var colFq = COLUMNS_TO_QUALIFIERS.get(col);
           if(colFq != null) {
             qualifiers.add(colFq);
           } else {
             families.addAll(COLUMNS_TO_FAMILIES.get(col));
           }
         }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to