in src/iceberg/json_internal.cc [1074:1095]
Status ParseSortOrders(const nlohmann::json& json, int8_t format_version,
int32_t& default_sort_order_id,
std::vector<std::shared_ptr<SortOrder>>& sort_orders) {
if (json.contains(kSortOrders)) {
ICEBERG_ASSIGN_OR_RAISE(default_sort_order_id,
GetJsonValue<int32_t>(json, kDefaultSortOrderId));
ICEBERG_ASSIGN_OR_RAISE(auto sort_order_array,
GetJsonValue<nlohmann::json>(json, kSortOrders));
for (const auto& sort_order_json : sort_order_array) {
ICEBERG_ASSIGN_OR_RAISE(auto sort_order, SortOrderFromJson(sort_order_json));
sort_orders.push_back(std::move(sort_order));
}
} else {
if (format_version > 1) {
return JsonParseError("{} must exist in format v{}", kSortOrders, format_version);
}
auto sort_order = SortOrder::Unsorted();
default_sort_order_id = sort_order->order_id();
sort_orders.push_back(std::move(sort_order));
}
return {};
}