From 6994dacad37c79e510c5946559e8cedee3f0ade5 Mon Sep 17 00:00:00 2001 From: Christian Heusel Date: Sat, 15 Mar 2025 12:59:11 +0100 Subject: [PATCH] GH-45807: [C++] introduce compatiblity with protobuf 30 This version of protobuf has switched a few interface types from `std::string` to `std::string_view` and therefore introcuces some breaking changes in the code. Fix these by applying appropriate casts. Link: https://protobuf.dev/support/migration/#v30 Signed-off-by: Christian Heusel --- cpp/src/arrow/engine/substrait/expression_internal.cc | 2 +- cpp/src/arrow/engine/substrait/serde.cc | 4 ++-- cpp/src/arrow/engine/substrait/util_internal.cc | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/src/arrow/engine/substrait/expression_internal.cc b/cpp/src/arrow/engine/substrait/expression_internal.cc index 16dcba8944832..02e453fbff9f9 100644 --- a/cpp/src/arrow/engine/substrait/expression_internal.cc +++ b/cpp/src/arrow/engine/substrait/expression_internal.cc @@ -142,7 +142,7 @@ std::string EnumToString(int value, const google::protobuf::EnumDescriptor* desc if (value_desc == nullptr) { return "unknown"; } - return value_desc->name(); + return std::string(value_desc->name()); } Result FromProto(const substrait::Expression::ReferenceSegment* ref, diff --git a/cpp/src/arrow/engine/substrait/serde.cc b/cpp/src/arrow/engine/substrait/serde.cc index 6b4c05a3b1dd5..db2dcb5928299 100644 --- a/cpp/src/arrow/engine/substrait/serde.cc +++ b/cpp/src/arrow/engine/substrait/serde.cc @@ -62,8 +62,8 @@ Status ParseFromBufferImpl(const Buffer& buf, const std::string& full_name, template Result ParseFromBuffer(const Buffer& buf) { Message message; - ARROW_RETURN_NOT_OK( - ParseFromBufferImpl(buf, Message::descriptor()->full_name(), &message)); + ARROW_RETURN_NOT_OK(ParseFromBufferImpl( + buf, std::string(Message::descriptor()->full_name()), &message)); return message; } diff --git a/cpp/src/arrow/engine/substrait/util_internal.cc b/cpp/src/arrow/engine/substrait/util_internal.cc index 89034784ab5bd..35e3baf94a6cd 100644 --- a/cpp/src/arrow/engine/substrait/util_internal.cc +++ b/cpp/src/arrow/engine/substrait/util_internal.cc @@ -30,7 +30,7 @@ std::string EnumToString(int value, const google::protobuf::EnumDescriptor& desc if (value_desc == nullptr) { return "unknown"; } - return value_desc->name(); + return std::string(value_desc->name()); } std::unique_ptr CreateVersion() {