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..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" @@ -227,10 +228,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 +249,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..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" @@ -78,10 +79,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..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 @@ -281,7 +282,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..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" @@ -272,11 +273,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 +294,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 +370,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..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 @@ -136,15 +137,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