diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx index 9591bd6925888..8af7925ea54d8 100644 --- a/core/testsupport/src/TestSupport.cxx +++ b/core/testsupport/src/TestSupport.cxx @@ -58,12 +58,6 @@ static struct ForbidDiagnostics { return; } - // FIXME: RNTuple warns that it's in beta stage. - if (level == kWarning && strstr(msg, "Merging RNTuples is experimental") != nullptr) { - std::cerr << "Warning in " << location << " " << msg << std::endl; - return; - } - // FIXME: DOAS backend is experimental. if (level == kWarning && strstr(msg, "The DAOS backend is experimental and still under development") != nullptr) { diff --git a/io/io/src/TFileMerger.cxx b/io/io/src/TFileMerger.cxx index 727bc530701a0..e7b007e41bc13 100644 --- a/io/io/src/TFileMerger.cxx +++ b/io/io/src/TFileMerger.cxx @@ -613,8 +613,6 @@ Bool_t TFileMerger::MergeOne(TDirectory *target, TList *sourcelist, Int_t type, } else if (!cl->IsTObject() && cl->GetMerge()) { // merge objects that don't derive from TObject if (cl->InheritsFrom(R__RNTuple_Class)) { - Warning("MergeRecursive", "Merging RNTuples is experimental"); - // Collect all the data to be passed on to the merger TList mergeData; // First entry is the TKey of the ntuple diff --git a/net/net/test/testParallelMergingFile.cxx b/net/net/test/testParallelMergingFile.cxx index 4f2a6c7bb40c1..2defbddd0f617 100644 --- a/net/net/test/testParallelMergingFile.cxx +++ b/net/net/test/testParallelMergingFile.cxx @@ -128,7 +128,6 @@ TEST(TParallelMergingFile, UploadAndResetNonTObject) ROOT::TestSupport::CheckDiagsRAII diags; diags.optionalDiag(kWarning, "TParallelMergingFile::ResetObjects", "can not be ResetAfterMerge", false); - diags.requiredDiag(kWarning, "TFileMerger::MergeRecursive", "Merging RNTuples is experimental"); constexpr auto kNEntries = 10000; constexpr auto kNUploads = 4; diff --git a/roottest/root/ntuple/metrics/metrics_env_enabled.ref b/roottest/root/ntuple/metrics/metrics_env_enabled.ref index 378512a40c9b7..289372a209b92 100644 --- a/roottest/root/ntuple/metrics/metrics_env_enabled.ref +++ b/roottest/root/ntuple/metrics/metrics_env_enabled.ref @@ -1,4 +1,3 @@ Processing test_rntuple_metrics_env.C... Metrics enabled: true nPageCommitted: 1 -Warning in : Merging RNTuples is experimental diff --git a/tree/ntuple/inc/ROOT/REntry.hxx b/tree/ntuple/inc/ROOT/REntry.hxx index 4950c195c39f4..02405e311b126 100644 --- a/tree/ntuple/inc/ROOT/REntry.hxx +++ b/tree/ntuple/inc/ROOT/REntry.hxx @@ -38,10 +38,13 @@ class RNTupleAttrSetReader; namespace Internal { struct RNTupleAttrEntry; -class RNTupleMergeStrategySlow; } } // namespace Experimental +namespace Internal { +class RNTupleMergeStrategySlow; +} + // clang-format off /** \class ROOT::REntry @@ -57,7 +60,7 @@ class REntry { friend class RNTupleModel; friend class RNTupleReader; friend class Experimental::RNTupleAttrSetReader; - friend class Experimental::Internal::RNTupleMergeStrategySlow; + friend class Internal::RNTupleMergeStrategySlow; friend struct Experimental::Internal::RNTupleAttrEntry; private: diff --git a/tree/ntuple/inc/ROOT/RNTupleMerger.hxx b/tree/ntuple/inc/ROOT/RNTupleMerger.hxx index 4f02bc66ecc95..ba1d15b84a24e 100644 --- a/tree/ntuple/inc/ROOT/RNTupleMerger.hxx +++ b/tree/ntuple/inc/ROOT/RNTupleMerger.hxx @@ -31,14 +31,10 @@ class REntry; class RNTuple; namespace Internal { -class RPageSource; -} // namespace Internal - -namespace Experimental::Internal { +class RPageSource; class RNTupleMergeStrategySlow; struct RNTupleSlowMergeData; -struct RDescriptorsComparison; enum class ENTupleMergingMode { /// The merger will discard all columns that aren't present in the prototype model (i.e. the model of the first @@ -156,7 +152,7 @@ public: // clang-format off /** - * \class ROOT::Experimental::Internal::RNTupleMerger + * \class ROOT::Internal::RNTupleMerger * \ingroup NTuple * \brief Given a set of RPageSources merge them into an RPagePersistentSink, optionally changing their compression. * This can also be used to change the compression of a single RNTuple by just passing a single source. @@ -186,7 +182,7 @@ public: }; // end of class RNTupleMerger -} // namespace Experimental::Internal +} // namespace Internal } // namespace ROOT #endif diff --git a/tree/ntuple/src/RNTupleMerger.cxx b/tree/ntuple/src/RNTupleMerger.cxx index 9b235cc9f71e0..ff99230bda247 100644 --- a/tree/ntuple/src/RNTupleMerger.cxx +++ b/tree/ntuple/src/RNTupleMerger.cxx @@ -50,7 +50,7 @@ using ROOT::Internal::RPageSource; using ROOT::Internal::RPageSourceFile; using ROOT::Internal::RPageStorage; -using namespace ROOT::Experimental::Internal; +using namespace ROOT::Internal; static ROOT::RLogChannel &NTupleMergeLog() { @@ -404,10 +404,6 @@ struct RColumnInfoGroup { std::vector fCommonColumns; }; -} // namespace - -// These structs cannot be in the anon namespace becase they're used in RNTupleMerger's private interface. -namespace ROOT::Experimental::Internal { template using FieldCollectionMap_t = std::unordered_map>; @@ -428,7 +424,8 @@ struct RDescriptorsComparison { FieldCollectionMap_t fColReprMappings; FieldCollectionMap_t fColReprExtensions; }; -} // namespace ROOT::Experimental::Internal + +} // namespace // Subprocedure of CompareDescriptorStructure, extracted for readability. // Given two fields, attempts to match their column representations and schedules column extensions if necessary. @@ -1652,7 +1649,7 @@ ROOT::RResult RNTupleMergeStrategyDefault::MergeSource(RPageSource &source // MergeStrategySlow // // ========================================================================================= -namespace ROOT::Experimental::Internal { +namespace ROOT::Internal { // Strategy used for L4 merging (https://github.com/root-project/root/blob/master/tree/ntuple/doc/Merging.md#glossary). // This class must be in ROOT::Experimental::Internal because it befriends ROOT::REntry class RNTupleMergeStrategySlow final : public RNTupleMergeStrategy { @@ -1723,7 +1720,7 @@ class RNTupleMergeStrategySlow final : public RNTupleMergeStrategy { } } }; -} // namespace ROOT::Experimental::Internal +} // namespace ROOT::Internal ROOT::RResult RNTupleMergeStrategySlow::MergeSource(RPageSource &source, RDescriptorsComparison &descCmp) { @@ -1848,7 +1845,7 @@ RNTupleMerger::RNTupleMerger(std::unique_ptr destination) - : ROOT::Experimental::Internal::RNTupleMerger(std::move(destination), nullptr) + : ROOT::Internal::RNTupleMerger(std::move(destination), nullptr) { } diff --git a/tree/ntuple/test/ntuple_merger.cxx b/tree/ntuple/test/ntuple_merger.cxx index d59bf9a64d7f3..2afd4cedd286c 100644 --- a/tree/ntuple/test/ntuple_merger.cxx +++ b/tree/ntuple/test/ntuple_merger.cxx @@ -758,7 +758,6 @@ TEST(RNTupleMerger, MergeThroughTFileMergerIncremental) TEST(RNTupleMerger, MergeThroughTFileMergerKey) { ROOT::TestSupport::CheckDiagsRAII diags; - diags.requiredDiag(kWarning, "TFileMerger", "Merging RNTuples is experimental"); diags.requiredDiag(kError, "ROOT.NTuple.Merge", "Output file already has key, but not of type RNTuple!"); diags.requiredDiag(kError, "TFileMerger", "Could NOT merge RNTuples!"); diags.requiredDiag(kError, "TFileMerger", "error during merge of your ROOT files"); @@ -796,7 +795,6 @@ TEST(RNTupleMerger, MergeThroughTFileMergerKey) TEST(RNTupleMerger, MergeThroughTBufferMerger) { ROOT::TestSupport::CheckDiagsRAII diags; - diags.requiredDiag(kWarning, "TFileMerger", "Merging RNTuples is experimental"); diags.requiredDiag(kWarning, "TBufferMergerFile", "not attached to the directory", false); FileRaii fileGuard("test_ntuple_merge_TBufferMerger.root"); @@ -2424,7 +2422,6 @@ TEST(RNTupleMerger, MergeAsymmetric1TFileMerger) diags.requiredDiag(kError, "TFileMerger::Merge", "error during merge", false); diags.requiredDiag(kError, "ROOT.NTuple.Merge", "missing the following field", false); diags.requiredDiag(kError, "TFileMerger::MergeRecursive", "Could NOT merge RNTuples!", false); - diags.optionalDiag(kWarning, "TFileMerger::MergeRecursive", "Merging RNTuples is experimental", false); auto res = fileMerger.Merge(); EXPECT_FALSE(res); } @@ -2440,7 +2437,6 @@ TEST(RNTupleMerger, MergeAsymmetric1TFileMerger) diags.requiredDiag(kError, "TFileMerger::Merge", "error during merge", false); diags.requiredDiag(kError, "ROOT.NTuple.Merge", "missing the following field", false); diags.requiredDiag(kError, "TFileMerger::MergeRecursive", "Could NOT merge RNTuples!", false); - diags.optionalDiag(kWarning, "TFileMerger::MergeRecursive", "Merging RNTuples is experimental", false); auto res = fileMerger.Merge(); EXPECT_FALSE(res); } @@ -2453,7 +2449,6 @@ TEST(RNTupleMerger, MergeAsymmetric1TFileMerger) fileMerger.AddFile(nt2.get()); fileMerger.SetMergeOptions(TString("rntuple.MergingMode=Union")); CheckDiagsRAII diags; - diags.optionalDiag(kWarning, "TFileMerger::MergeRecursive", "Merging RNTuples is experimental", false); auto res = fileMerger.Merge(); EXPECT_TRUE(res); } @@ -4651,7 +4646,7 @@ TEST(RNTupleMerger, MergeNewerVersion) auto destination = std::make_unique("ntuple", fileGuardOut.GetPath(), RNTupleWriteOptions()); RNTupleMerger merger{std::move(destination)}; RNTupleMergeOptions opts; - opts.fVersionBehavior = ROOT::Experimental::Internal::ENTupleMergeVersionBehavior::kAbortOnHigherVersion; + opts.fVersionBehavior = ROOT::Internal::ENTupleMergeVersionBehavior::kAbortOnHigherVersion; auto res = merger.Merge(sourcePtrs, opts); EXPECT_FALSE(bool(res)); EXPECT_THAT(res.GetError()->GetReport(), testing::HasSubstr("has a higher format version")); diff --git a/tree/ntuple/test/ntuple_test.hxx b/tree/ntuple/test/ntuple_test.hxx index c2c98c9172605..538ac99170eda 100644 --- a/tree/ntuple/test/ntuple_test.hxx +++ b/tree/ntuple/test/ntuple_test.hxx @@ -92,9 +92,9 @@ using RNTupleWriter = ROOT::RNTupleWriter; using RNTupleWriteOptions = ROOT::RNTupleWriteOptions; using RNTupleWriteOptionsDaos = ROOT::Experimental::RNTupleWriteOptionsDaos; using RNTupleMetrics = ROOT::Experimental::Detail::RNTupleMetrics; -using RNTupleMerger = ROOT::Experimental::Internal::RNTupleMerger; -using RNTupleMergeOptions = ROOT::Experimental::Internal::RNTupleMergeOptions; -using ENTupleMergingMode = ROOT::Experimental::Internal::ENTupleMergingMode; +using RNTupleMerger = ROOT::Internal::RNTupleMerger; +using RNTupleMergeOptions = ROOT::Internal::RNTupleMergeOptions; +using ENTupleMergingMode = ROOT::Internal::ENTupleMergingMode; using RNTupleModel = ROOT::RNTupleModel; using RNTupleInputSpec = ROOT::RNTupleInputSpec; using RNTuplePlainCounter = ROOT::Experimental::Detail::RNTuplePlainCounter;