From 85e2c6f2a7af2a51e674e68698ad2a88944f2b46 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Mon, 30 Mar 2026 13:20:09 +0300 Subject: [PATCH] sstables: add fmt::formatter for large_data_type Add a fmt::formatter specialization for sstables::large_data_type and use it in scylla-sstable.cc instead of the local to_string() overload, which is removed. --- sstables/types.hh | 21 +++++++++++++++++++++ tools/scylla-sstable.cc | 13 +------------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/sstables/types.hh b/sstables/types.hh index 9c14b64d22..68140a7dec 100644 --- a/sstables/types.hh +++ b/sstables/types.hh @@ -898,3 +898,24 @@ struct fmt::formatter { dt.marked_for_delete_at, dt.local_deletion_time); } }; + +template <> +struct fmt::formatter : fmt::formatter { + template + auto format(sstables::large_data_type type, FormatContext& ctx) const { + using enum sstables::large_data_type; + switch (type) { + case partition_size: + return formatter::format("partition_size", ctx); + case row_size: + return formatter::format("row_size", ctx); + case cell_size: + return formatter::format("cell_size", ctx); + case rows_in_partition: + return formatter::format("rows_in_partition", ctx); + case elements_in_collection: + return formatter::format("elements_in_collection", ctx); + } + return formatter::format("unknown", ctx); + } +}; diff --git a/tools/scylla-sstable.cc b/tools/scylla-sstable.cc index c8c3380d4a..3b3c306a41 100644 --- a/tools/scylla-sstable.cc +++ b/tools/scylla-sstable.cc @@ -1342,17 +1342,6 @@ const char* to_string(sstables::scylla_metadata_type t) { std::abort(); } -const char* to_string(sstables::large_data_type t) { - switch (t) { - case sstables::large_data_type::partition_size: return "partition_size"; - case sstables::large_data_type::row_size: return "row_size"; - case sstables::large_data_type::cell_size: return "cell_size"; - case sstables::large_data_type::rows_in_partition: return "rows_in_partition"; - case sstables::large_data_type::elements_in_collection: return "elements_in_collection"; - } - std::abort(); -} - const char* to_string(sstables::ext_timestamp_stats_type t) { switch (t) { case sstables::ext_timestamp_stats_type::min_live_timestamp: return "min_live_timestamp"; @@ -1440,7 +1429,7 @@ public: void operator()(const sstables::scylla_metadata::large_data_stats& val) const { _writer.StartObject(); for (const auto& [k, v] : val.map) { - _writer.Key(to_string(k)); + _writer.Key(fmt::format("{}", k)); _writer.StartObject(); _writer.Key("max_value"); _writer.Uint64(v.max_value);