From 510513bbe74c3fe599cf5ce2178f7ab347b4b044 Mon Sep 17 00:00:00 2001 From: cherylEnkidu Date: Mon, 8 Sep 2025 16:54:51 -0400 Subject: [PATCH 1/2] replace absl::flat_hash_map --- Firestore/core/CMakeLists.txt | 2 -- Firestore/core/src/model/object_value.cc | 8 ++++++-- Firestore/core/src/model/object_value.h | 4 +++- Firestore/core/src/remote/datastore.cc | 4 +++- Firestore/core/src/remote/remote_objc_bridge.cc | 12 +++++++++--- Firestore/core/src/remote/remote_objc_bridge.h | 8 ++++++-- Firestore/core/test/unit/api/aggregate_query_test.cc | 4 +++- 7 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Firestore/core/CMakeLists.txt b/Firestore/core/CMakeLists.txt index 65238165549..cb405074816 100644 --- a/Firestore/core/CMakeLists.txt +++ b/Firestore/core/CMakeLists.txt @@ -137,7 +137,6 @@ target_compile_definitions( target_link_libraries( firestore_util PUBLIC absl::base - absl::flat_hash_map absl::memory absl::meta absl::optional @@ -250,7 +249,6 @@ target_link_libraries( firestore_core PUBLIC LevelDB::LevelDB absl::base - absl::flat_hash_map absl::memory absl::meta absl::optional diff --git a/Firestore/core/src/model/object_value.cc b/Firestore/core/src/model/object_value.cc index 3b812fe535d..570cc38ad62 100644 --- a/Firestore/core/src/model/object_value.cc +++ b/Firestore/core/src/model/object_value.cc @@ -227,10 +227,12 @@ ObjectValue ObjectValue::FromFieldsEntry( return ObjectValue{std::move(value)}; } +// TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version +// is upgraded to later than 20250127.0 ObjectValue ObjectValue::FromAggregateFieldsEntry( google_firestore_v1_AggregationResult_AggregateFieldsEntry* fields_entry, pb_size_t count, - const absl::flat_hash_map& aliasMap) { + const std::unordered_map& aliasMap) { Message value; value->which_value_type = google_firestore_v1_Value_map_value_tag; @@ -246,7 +248,9 @@ ObjectValue ObjectValue::FromAggregateFieldsEntry( // using the client-side alias. ByteString serverAlias(entry.key); std::string serverAliasString = serverAlias.ToString(); - HARD_ASSERT(aliasMap.contains(serverAliasString), + // TODO(b/443765747) Revert back to aliasMap.contains(serverAliasString) + // after the absl version is upgraded to later than 20250127.0 + HARD_ASSERT(aliasMap.find(serverAliasString) != aliasMap.end(), "%s not present in aliasMap", serverAlias.ToString()); ByteString clientAlias(aliasMap.find(serverAliasString)->second); diff --git a/Firestore/core/src/model/object_value.h b/Firestore/core/src/model/object_value.h index a306a92705e..5af8ea26d83 100644 --- a/Firestore/core/src/model/object_value.h +++ b/Firestore/core/src/model/object_value.h @@ -78,10 +78,12 @@ class ObjectValue { * @param count Count of fields in `fields_entry`. * @return The created `ObjectValue`. */ + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 static ObjectValue FromAggregateFieldsEntry( google_firestore_v1_AggregationResult_AggregateFieldsEntry* fields_entry, pb_size_t count, - const absl::flat_hash_map& aliasMap); + const std::unordered_map& aliasMap); /** Recursively extracts the FieldPaths that are set in this ObjectValue. */ FieldMask ToFieldMask() const; diff --git a/Firestore/core/src/remote/datastore.cc b/Firestore/core/src/remote/datastore.cc index 47a8fb716b5..8d0508fd9b7 100644 --- a/Firestore/core/src/remote/datastore.cc +++ b/Firestore/core/src/remote/datastore.cc @@ -281,7 +281,9 @@ void Datastore::RunAggregateQueryWithCredentials( const core::Query& query, const std::vector& aggregates, api::AggregateQueryCallback&& callback) { - absl::flat_hash_map aliasMap; + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 + std::unordered_map aliasMap; grpc::ByteBuffer message = MakeByteBuffer(datastore_serializer_.EncodeAggregateQueryRequest( query, aggregates, aliasMap)); diff --git a/Firestore/core/src/remote/remote_objc_bridge.cc b/Firestore/core/src/remote/remote_objc_bridge.cc index ae7fcb246ea..13c73aae452 100644 --- a/Firestore/core/src/remote/remote_objc_bridge.cc +++ b/Firestore/core/src/remote/remote_objc_bridge.cc @@ -272,11 +272,13 @@ DatastoreSerializer::MergeLookupResponses( return result; } +// TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version +// is upgraded to later than 20250127.0 Message DatastoreSerializer::EncodeAggregateQueryRequest( const core::Query& query, const std::vector& aggregates, - absl::flat_hash_map& aliasMap) const { + std::unordered_map& aliasMap) const { Message result; auto encodedTarget = serializer_.EncodeQueryTarget(query.ToAggregateTarget()); result->parent = encodedTarget.parent; @@ -291,7 +293,9 @@ DatastoreSerializer::EncodeAggregateQueryRequest( // De-duplicate aggregates based on the alias. // Since aliases are auto-computed from the operation and path, // equal aggregate will have the same alias. - absl::flat_hash_map uniqueAggregates; + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 + std::unordered_map uniqueAggregates; for (const AggregateField& aggregate : aggregates) { auto pair = std::pair( aggregate.alias.StringValue(), aggregate); @@ -365,9 +369,11 @@ DatastoreSerializer::EncodeAggregateQueryRequest( return result; } +// TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version +// is upgraded to later than 20250127.0 util::StatusOr DatastoreSerializer::DecodeAggregateQueryResponse( const grpc::ByteBuffer& response, - const absl::flat_hash_map& aliasMap) const { + const std::unordered_map& aliasMap) const { ByteBufferReader reader{response}; auto message = Message::TryParse( diff --git a/Firestore/core/src/remote/remote_objc_bridge.h b/Firestore/core/src/remote/remote_objc_bridge.h index 0aa2b93f988..03138ab6739 100644 --- a/Firestore/core/src/remote/remote_objc_bridge.h +++ b/Firestore/core/src/remote/remote_objc_bridge.h @@ -136,15 +136,19 @@ class DatastoreSerializer { util::StatusOr> MergeLookupResponses( const std::vector& responses) const; + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 nanopb::Message EncodeAggregateQueryRequest( const core::Query& query, const std::vector& aggregates, - absl::flat_hash_map& aliasMap) const; + std::unordered_map& aliasMap) const; + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 util::StatusOr DecodeAggregateQueryResponse( const grpc::ByteBuffer& response, - const absl::flat_hash_map& aliasMap) const; + const std::unordered_map& aliasMap) const; const Serializer& serializer() const { return serializer_; diff --git a/Firestore/core/test/unit/api/aggregate_query_test.cc b/Firestore/core/test/unit/api/aggregate_query_test.cc index 2a2ca9c7d6c..71a6f361a78 100644 --- a/Firestore/core/test/unit/api/aggregate_query_test.cc +++ b/Firestore/core/test/unit/api/aggregate_query_test.cc @@ -110,7 +110,9 @@ TEST(AggregateQuery, GetCallsGetAggregateOk) { aggregate_fields_entry[0].value.integer_value = 10; // Test alias map - absl::flat_hash_map alias_map; + // TODO(b/443765747) Revert back to absl::flat_hash_map after the absl version + // is upgraded to later than 20250127.0 + std::unordered_map alias_map; alias_map["aggregate_0"] = "count"; // Test ObjectValue result From 41cc20e5aa084e847906db23b3af6c44f0c2cacb Mon Sep 17 00:00:00 2001 From: cherylEnkidu Date: Wed, 10 Sep 2025 13:28:27 -0400 Subject: [PATCH 2/2] add library link --- Firestore/core/src/model/object_value.cc | 1 + Firestore/core/src/model/object_value.h | 1 + Firestore/core/src/remote/datastore.cc | 1 + Firestore/core/src/remote/remote_objc_bridge.cc | 1 + Firestore/core/src/remote/remote_objc_bridge.h | 1 + 5 files changed, 5 insertions(+) diff --git a/Firestore/core/src/model/object_value.cc b/Firestore/core/src/model/object_value.cc index 570cc38ad62..d1660aa40cd 100644 --- a/Firestore/core/src/model/object_value.cc +++ b/Firestore/core/src/model/object_value.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include "Firestore/Protos/nanopb/google/firestore/v1/document.nanopb.h" #include "Firestore/core/src/model/value_util.h" diff --git a/Firestore/core/src/model/object_value.h b/Firestore/core/src/model/object_value.h index 5af8ea26d83..9dcf819831b 100644 --- a/Firestore/core/src/model/object_value.h +++ b/Firestore/core/src/model/object_value.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "Firestore/Protos/nanopb/google/firestore/v1/document.nanopb.h" diff --git a/Firestore/core/src/remote/datastore.cc b/Firestore/core/src/remote/datastore.cc index 8d0508fd9b7..83eef482622 100644 --- a/Firestore/core/src/remote/datastore.cc +++ b/Firestore/core/src/remote/datastore.cc @@ -16,6 +16,7 @@ #include "Firestore/core/src/remote/datastore.h" +#include #include #include diff --git a/Firestore/core/src/remote/remote_objc_bridge.cc b/Firestore/core/src/remote/remote_objc_bridge.cc index 13c73aae452..1eb27fbeed0 100644 --- a/Firestore/core/src/remote/remote_objc_bridge.cc +++ b/Firestore/core/src/remote/remote_objc_bridge.cc @@ -17,6 +17,7 @@ #include "Firestore/core/src/remote/remote_objc_bridge.h" #include +#include #include "Firestore/core/src/core/database_info.h" #include "Firestore/core/src/core/query.h" diff --git a/Firestore/core/src/remote/remote_objc_bridge.h b/Firestore/core/src/remote/remote_objc_bridge.h index 03138ab6739..66d02e48429 100644 --- a/Firestore/core/src/remote/remote_objc_bridge.h +++ b/Firestore/core/src/remote/remote_objc_bridge.h @@ -19,6 +19,7 @@ #include #include +#include #include #include