From b433a5bcf85995099fd92e85ddafabbafec279c7 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Thu, 12 Feb 2026 12:01:03 +0200 Subject: [PATCH] query: result_set_row: make noexcept Remove const specifier from result_set_row._cells member to make the class nothrow_move_constructible and nothrow_move_assignable To be used later in query result_set and friends. Signed-off-by: Benny Halevy --- query/query-result-set.cc | 4 +++- query/query-result-set.hh | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/query/query-result-set.cc b/query/query-result-set.cc index 4ce29ddc09..5ebe174eec 100644 --- a/query/query-result-set.cc +++ b/query/query-result-set.cc @@ -19,6 +19,8 @@ namespace query { static_assert(std::is_nothrow_move_constructible_v); static_assert(std::is_nothrow_move_assignable_v); +static_assert(std::is_nothrow_move_constructible_v); +static_assert(std::is_nothrow_move_assignable_v); class deserialization_error : public std::runtime_error { public: @@ -50,7 +52,7 @@ private: }; std::ostream& operator<<(std::ostream& out, const result_set_row& row) { - for (auto&& cell : row._cells) { + for (auto&& cell : row.cells()) { auto&& type = static_cast(cell.second).type(); auto&& value = cell.second; out << cell.first << "=\"" << type->to_string(type->decompose(value)) << "\" "; diff --git a/query/query-result-set.hh b/query/query-result-set.hh index 7819ab68b6..301e9a912d 100644 --- a/query/query-result-set.hh +++ b/query/query-result-set.hh @@ -46,7 +46,7 @@ inline bool operator==(const non_null_data_value& x, const non_null_data_value& // including regular column cells, partition keys, as well as static values. class result_set_row { schema_ptr _schema; - const std::unordered_map _cells; + std::unordered_map _cells; public: result_set_row(schema_ptr schema, std::unordered_map&& cells) : _schema{schema} @@ -54,15 +54,16 @@ public: { } result_set_row(result_set_row&&) = default; result_set_row(const result_set_row&) = delete; + result_set_row& operator=(result_set_row&&) = default; result_set_row& operator=(const result_set_row&) = delete; result_set_row copy() const { - return {_schema, std::unordered_map{_cells}}; + return {_schema, std::unordered_map{cells()}}; } // Look up a deserialized row cell value by column name const data_value* get_data_value(const sstring& column_name) const { - auto it = _cells.find(column_name); - if (it == _cells.end()) { + auto it = cells().find(column_name); + if (it == cells().end()) { return nullptr; } return &static_cast(it->second);