|
23 | 23 | import static java.lang.Math.max;
|
24 | 24 |
|
25 | 25 | import android.text.TextUtils;
|
| 26 | +import android.util.Pair; |
26 | 27 | import androidx.annotation.NonNull;
|
27 | 28 | import androidx.annotation.Nullable;
|
28 | 29 | import com.google.firebase.Timestamp;
|
|
58 | 59 | import java.util.Iterator;
|
59 | 60 | import java.util.List;
|
60 | 61 | import java.util.Map;
|
61 |
| -import java.util.Objects; |
62 | 62 | import java.util.PriorityQueue;
|
63 | 63 | import java.util.Queue;
|
64 | 64 | import java.util.SortedSet;
|
@@ -478,17 +478,19 @@ public List<DocumentKey> getDocumentsMatchingTarget(Target target) {
|
478 | 478 |
|
479 | 479 | List<String> subQueries = new ArrayList<>();
|
480 | 480 | List<Object> bindings = new ArrayList<>();
|
481 |
| - List<Target> subTargets = getSubTargets(target); |
| 481 | + List<Pair<Target, FieldIndex>> indexes = new ArrayList<>(); |
482 | 482 |
|
483 |
| - for (Target subTarget : subTargets) { |
| 483 | + for (Target subTarget : getSubTargets(target)) { |
484 | 484 | FieldIndex fieldIndex = getFieldIndex(subTarget);
|
485 | 485 | if (fieldIndex == null) {
|
486 | 486 | return null;
|
487 | 487 | }
|
| 488 | + indexes.add(Pair.create(subTarget, fieldIndex)); |
488 | 489 | }
|
489 | 490 |
|
490 |
| - for (Target subTarget : subTargets) { |
491 |
| - @NonNull FieldIndex fieldIndex = Objects.requireNonNull(getFieldIndex(subTarget)); |
| 491 | + for (Pair<Target, FieldIndex> pair : indexes) { |
| 492 | + Target subTarget = pair.first; |
| 493 | + @NonNull FieldIndex fieldIndex = pair.second; |
492 | 494 | @Nullable List<Value> arrayValues = subTarget.getArrayValues(fieldIndex);
|
493 | 495 | @Nullable Collection<Value> notInValues = subTarget.getNotInValues(fieldIndex);
|
494 | 496 | Bound lowerBound = subTarget.getLowerBound(fieldIndex);
|
|
0 commit comments