* Add Public API for Or Query
* Add Or query swift tests
* Add Swift tests for IN
* Adding back FIRFirestore+Internal as include file
* Add Documentation
* Address feedback
* Update the changelog.
---------
Co-authored-by: Ehsan Nasiri <ehsann@google.com>
* Proto serialization
* Wire up api
* End to end functional
* Linting
* Add aggregate source
* Fix cmake and style
* Comments, emulators and lints
* Feedback.
* More feedback.
* Implement the Composite Filter class
* Polish code
* add tests for composite filter
* fix broken test
* Improve the implementation of flattern filters
* change the flatten_filters implementation with some other things
* Change the implementation of Filter in Composite Filter
* Address feedback
* Match Android Tests
This would conflict with any definition of a `util` namespace imported from a header. While this applies to other aliases as well, `util` is the one most likely to clash and the one that has actually caused problems.
#no-changelog
* `operator==` (isEqual) behavior for DocumentSnapshot.
* Do not consider MutableDocument's state for DocumentSnapshot comparison.
* Address comments.
* Update changelog.
* Don't compare the key twice.
* Remove unused namespace alias.
* Remove unused 'using' statements.
* Remove more unused 'using' and namspace aliases.
* Prefer absl::StrContains over comparing `find` result with `npos`.
* Remove more unused things.
* Prefer usage of `empty()` over `size()` when possible.
* Remove more unused things.
* Address code review.
* Address code review.
* More fixes to query_core.cc
* comment should match parameter name.
* Pre-allocate container capacity for better performance.
* More fixes.
* Fix inconsistent declaration parameter name.
* Fix inconsistent declaration parameter name.
* Fix inconsistent declaration parameter name.
* Address bugprone-inaccurate-erase (inappropriate `erase` overload was used).
* Fix return type of move and copy constructor.
* Fix bugprone use after move.
* Fix formatting.
* Reflect the param name change in the doc.
* Throw more specific exceptions when the error is due to bad input (backport of cr/359824564) (note that this only applies to the Unity build);
* Always log exceptions to make sure they make it into the log (regardless of exception handling by the user and any potential issues with the exception propagation mechanism).
#no-changelog
If a user calls terminate and immediately disposes their reference to Firestore, it's possible that while termination is in process, the last remaining reference (more precisely, shared pointer) to Firestore is in a listener. When that listener is destroyed as part of the termination, it leads to `api::Firestore` being destroyed. Importantly, termination happens on the worker queue. The destructor of `api::Firestore` calls `Dispose` which presumes it's not called from the worker queue and tries to enqueue work, leading to a failing assertion and a crash.
The solution is simply to remove the sequential order checks when the queue enters/is in restricted mode. There is a legitimate case where the Firestore destructor can run on the worker queue, as the original issue shows. The complexity of #7412 also indicates that a simpler solution is preferable.
Fixes#6909.