diff --git a/alternator/executor.cc b/alternator/executor.cc index 842925b28a..4e495cbd64 100644 --- a/alternator/executor.cc +++ b/alternator/executor.cc @@ -3621,7 +3621,7 @@ static rjson::value encode_paging_state(const schema& schema, const service::pag // We conditionally include these fields when reading CQL tables through alternator. if (!is_alternator_keyspace(schema.ks_name()) && (!pos.has_key() || pos.get_bound_weight() != bound_weight::equal)) { rjson::add_with_string_name(last_evaluated_key, scylla_paging_region, rjson::empty_object()); - rjson::add(last_evaluated_key[scylla_paging_region.data()], "S", rjson::from_string(to_string(pos.region()))); + rjson::add(last_evaluated_key[scylla_paging_region.data()], "S", rjson::from_string(fmt::to_string(pos.region()))); rjson::add_with_string_name(last_evaluated_key, scylla_paging_weight, rjson::empty_object()); rjson::add(last_evaluated_key[scylla_paging_weight.data()], "N", static_cast(pos.get_bound_weight())); } diff --git a/mutation/mutation_fragment.cc b/mutation/mutation_fragment.cc index 1a0e18f8bc..2fb494c6aa 100644 --- a/mutation/mutation_fragment.cc +++ b/mutation/mutation_fragment.cc @@ -38,16 +38,6 @@ operator<<(std::ostream& os, const partition_end& eop) { return os << "{partition_end}"; } -std::string_view to_string(partition_region r) { - switch (r) { - case partition_region::partition_start: return "partition_start"; - case partition_region::static_row: return "static_row"; - case partition_region::clustered: return "clustered"; - case partition_region::partition_end: return "partition_end"; - } - std::abort(); // compiler will error before we reach here -} - partition_region parse_partition_region(std::string_view s) { if (s == "partition_start") { return partition_region::partition_start; @@ -63,7 +53,8 @@ partition_region parse_partition_region(std::string_view s) { } std::ostream& operator<<(std::ostream& out, partition_region r) { - return out << to_string(r); + fmt::print(out, "{}", r); + return out; } std::ostream& operator<<(std::ostream& os, position_in_partition_view::printer p) { diff --git a/mutation/position_in_partition.hh b/mutation/position_in_partition.hh index f53ed93081..653396e656 100644 --- a/mutation/position_in_partition.hh +++ b/mutation/position_in_partition.hh @@ -82,8 +82,25 @@ enum class partition_region : uint8_t { struct view_and_holder; +template <> +struct fmt::formatter : fmt::formatter { + template + auto format(const ::partition_region& r, FormatContext& ctx) const { + switch (r) { + case partition_region::partition_start: + return formatter::format("partition_start", ctx); + case partition_region::static_row: + return formatter::format("static_row", ctx); + case partition_region::clustered: + return formatter::format("clustered", ctx); + case partition_region::partition_end: + return formatter::format("partition_end", ctx); + } + std::abort(); // compiler will error before we reach here + } +}; + std::ostream& operator<<(std::ostream&, partition_region); -std::string_view to_string(partition_region); partition_region parse_partition_region(std::string_view); class position_in_partition_view {