From 479a6bfb4b75cab8c6e4f97c9705793a282a9cf2 Mon Sep 17 00:00:00 2001 From: Wu-Hui Date: Wed, 12 Feb 2020 14:54:06 -0500 Subject: [PATCH 1/3] Add optimization to SortedSet.unionWith --- packages/firestore/src/util/sorted_set.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/firestore/src/util/sorted_set.ts b/packages/firestore/src/util/sorted_set.ts index dc788079b55..8f09039612e 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 set. + if (result.size < other.size) { + result = other; + other = this; + } + other.forEach(elem => { result = result.add(elem); }); From 7ea15f89c906e1ce1992aefdbb547391636359e1 Mon Sep 17 00:00:00 2001 From: Wu-Hui Date: Wed, 12 Feb 2020 15:19:51 -0500 Subject: [PATCH 2/3] Add changelog. --- packages/firestore/CHANGELOG.md | 1 + packages/firestore/src/util/sorted_set.ts | 2 +- packages/testing/src/api/index.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/firestore/CHANGELOG.md b/packages/firestore/CHANGELOG.md index 7281ff0d962..20c7b81c0e3 100644 --- a/packages/firestore/CHANGELOG.md +++ b/packages/firestore/CHANGELOG.md @@ -1,4 +1,5 @@ # Unreleased +- [fixed] Fixed a performance regression introduced in 1.7.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 8f09039612e..100b760102c 100644 --- a/packages/firestore/src/util/sorted_set.ts +++ b/packages/firestore/src/util/sorted_set.ts @@ -136,7 +136,7 @@ export class SortedSet { unionWith(other: SortedSet): SortedSet { let result: SortedSet = this; - // Make sure `result` always refers to the larger one of the two set. + // Make sure `result` always refers to the larger one of the two sets. if (result.size < other.size) { result = other; other = this; 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); }, From 00e271b17fe28460e2863721b724fc81f4e9e6ec Mon Sep 17 00:00:00 2001 From: Wu-Hui Date: Wed, 12 Feb 2020 21:18:02 -0500 Subject: [PATCH 3/3] Update changelog --- packages/firestore/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/firestore/CHANGELOG.md b/packages/firestore/CHANGELOG.md index 20c7b81c0e3..0231cea2cd0 100644 --- a/packages/firestore/CHANGELOG.md +++ b/packages/firestore/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased -- [fixed] Fixed a performance regression introduced in 1.7.0. (#2620) +- [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)