From 7583d06be31d909f7a90af6dfd7a950b56a641a6 Mon Sep 17 00:00:00 2001 From: Florine de Geus Date: Mon, 25 May 2026 12:46:16 +0200 Subject: [PATCH] [ntuple] Change internal name of join field This is more consistent with other internal fields (e.g. in RDataFrame), and further reduces the risk of ambiguity compared to just "_join". --- tree/ntuple/src/RNTupleProcessor.cxx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tree/ntuple/src/RNTupleProcessor.cxx b/tree/ntuple/src/RNTupleProcessor.cxx index a634cac6e3ce7..836926f87945e 100644 --- a/tree/ntuple/src/RNTupleProcessor.cxx +++ b/tree/ntuple/src/RNTupleProcessor.cxx @@ -149,12 +149,9 @@ ROOT::Experimental::RNTupleSingleProcessor::CreateAndConnectField(const std::str { assert(fPageSource); - std::string onDiskFieldName = qualifiedFieldName; - - // Strip the "_join" prefix (for join fields) from the field name, if present. - if (onDiskFieldName.find("_join.") == 0) { - onDiskFieldName = onDiskFieldName.substr(6); - } + // Strip the "R_rntproc_join_" prefix (for join fields) from the field name, if present. + const std::string onDiskFieldName = + qualifiedFieldName.find("R_rntproc_join_") == 0 ? qualifiedFieldName.substr(15) : qualifiedFieldName; const auto &desc = fPageSource->GetSharedDescriptorGuard().GetRef(); ROOT::RFieldZero fieldZero; @@ -450,8 +447,8 @@ void ROOT::Experimental::RNTupleJoinProcessor::Initialize( // We prepend the name of the primary processor in this case to prevent reading from the wrong join field in // composed join operations. - auto fieldIdx = AddFieldToEntry(fOptions.GetProcessorName() + "._join." + joinField, "std::uint64_t", nullptr, - Internal::RNTupleProcessorProvenance(fOptions.GetProcessorName())); + auto fieldIdx = AddFieldToEntry(fOptions.GetProcessorName() + ".R_rntproc_join_" + joinField, "std::uint64_t", + nullptr, Internal::RNTupleProcessorProvenance(fOptions.GetProcessorName())); fJoinFieldIdxs.insert(fieldIdx); }