diff --git a/packages/firestore/CHANGELOG.md b/packages/firestore/CHANGELOG.md index 7281ff0d962..0231cea2cd0 100644 --- a/packages/firestore/CHANGELOG.md +++ b/packages/firestore/CHANGELOG.md @@ -1,4 +1,6 @@ # Unreleased +- [fixed] Fixed a performance regression introduced by the addition of + `Query.limitToLast(n: number)` in Firestore 1.7.0 (Firebase 7.3.0) (#2620). - [fixed] Fixed an issue where `CollectionReference.add()` would reject custom types when using `withConverter()`. (#2606) diff --git a/packages/firestore/src/util/sorted_set.ts b/packages/firestore/src/util/sorted_set.ts index dc788079b55..100b760102c 100644 --- a/packages/firestore/src/util/sorted_set.ts +++ b/packages/firestore/src/util/sorted_set.ts @@ -135,6 +135,13 @@ export class SortedSet { unionWith(other: SortedSet): SortedSet { let result: SortedSet = this; + + // Make sure `result` always refers to the larger one of the two sets. + if (result.size < other.size) { + result = other; + other = this; + } + other.forEach(elem => { result = result.add(elem); }); diff --git a/packages/testing/src/api/index.ts b/packages/testing/src/api/index.ts index b4114e2de76..5fd64c41b32 100644 --- a/packages/testing/src/api/index.ts +++ b/packages/testing/src/api/index.ts @@ -134,7 +134,7 @@ function initializeApp( ({ getToken: async () => ({ accessToken: accessToken }), getUid: () => null, - addAuthTokenListener: (listener) => { + addAuthTokenListener: listener => { // Call listener once immediately with predefined accessToken. listener(accessToken); },