From ba55c834d1803524c08479a4e0d515d6321d5bc7 Mon Sep 17 00:00:00 2001 From: zhouhongfeng Date: Fri, 31 Jul 2026 14:08:36 +0800 Subject: [PATCH 1/3] fix: force-inline Status::~Status to enhance reading performance --- cpp/src/arrow/status.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/arrow/status.h b/cpp/src/arrow/status.h index 5757440cee7e..65784e5dd0f8 100644 --- a/cpp/src/arrow/status.h +++ b/cpp/src/arrow/status.h @@ -148,7 +148,7 @@ class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparableis_constant) { DeleteState(); From 14c8d558a4247547657c1e7c17ee7854c62ee08e Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Mon, 26 Oct 2026 15:20:05 +0100 Subject: [PATCH 2/3] Move the deletion path away --- cpp/src/arrow/status.cc | 4 +--- cpp/src/arrow/status.h | 13 ++++++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/cpp/src/arrow/status.cc b/cpp/src/arrow/status.cc index 50eb001c3a73..5e54c267fbe5 100644 --- a/cpp/src/arrow/status.cc +++ b/cpp/src/arrow/status.cc @@ -32,9 +32,7 @@ Status::Status(StatusCode code, std::string msg, std::shared_ptr d void Status::CopyFrom(const Status& s) { if (ARROW_PREDICT_FALSE(state_ != NULL)) { - if (!state_->is_constant) { - DeleteState(); - } + DeleteState(); } if (s.state_ == nullptr) { state_ = nullptr; diff --git a/cpp/src/arrow/status.h b/cpp/src/arrow/status.h index 65784e5dd0f8..8928ad48cf74 100644 --- a/cpp/src/arrow/status.h +++ b/cpp/src/arrow/status.h @@ -148,11 +148,10 @@ class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparableis_constant) { - DeleteState(); - } + DeleteState(); } } @@ -409,7 +408,9 @@ class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparableis_constant) { + delete state_; + } } void CopyFrom(const Status& s); inline void MoveFrom(Status& s); @@ -419,9 +420,7 @@ class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparableis_constant) { - DeleteState(); - } + DeleteState(); } state_ = s.state_; s.state_ = NULLPTR; From 81aef89647d350116c17745530ddef7f7c1d6033 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 27 Oct 2026 10:52:51 +0100 Subject: [PATCH 3/3] Add comment and GH reference --- cpp/src/arrow/status.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/arrow/status.h b/cpp/src/arrow/status.h index 8928ad48cf74..39f31141e84f 100644 --- a/cpp/src/arrow/status.h +++ b/cpp/src/arrow/status.h @@ -149,6 +149,8 @@ class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparable