From 2f13e4413c81045b6a2d926c7dd6f1e480c5dbc2 Mon Sep 17 00:00:00 2001 From: silverweed Date: Thu, 30 Oct 2025 10:29:40 +0100 Subject: [PATCH] [ntuple] Merger: add field version check to schema validation --- tree/ntuple/src/RNTupleMerger.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tree/ntuple/src/RNTupleMerger.cxx b/tree/ntuple/src/RNTupleMerger.cxx index 9b5462fbf2446..afba0635654e3 100644 --- a/tree/ntuple/src/RNTupleMerger.cxx +++ b/tree/ntuple/src/RNTupleMerger.cxx @@ -488,6 +488,17 @@ CompareDescriptorStructure(const ROOT::RNTupleDescriptor &dst, const ROOT::RNTup errors.push_back(ss.str()); } + // Require that field versions match + const auto srcFldVer = field.fSrc->GetFieldVersion(); + const auto dstFldVer = field.fDst->GetFieldVersion(); + if (srcFldVer != dstFldVer) { + std::stringstream ss; + ss << "Field `" << field.fSrc->GetFieldName() + << "` has a different field version than previously-seen field with the same name (old: " << dstFldVer + << ", new: " << srcFldVer << ")"; + errors.push_back(ss.str()); + } + const auto srcRole = field.fSrc->GetStructure(); const auto dstRole = field.fDst->GetStructure(); if (srcRole != dstRole) {