Skip to content

Commit

Permalink
[ntuple] move RNTupleLocator out of experimental
Browse files Browse the repository at this point in the history
  • Loading branch information
jblomer committed Feb 7, 2025
1 parent ef6dc1f commit 555b382
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 30 deletions.
4 changes: 2 additions & 2 deletions tree/ntuple/v7/inc/ROOT/RNTupleUtil.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,6 @@ public:
ROOT::NTupleSize_t GetIndexInCluster() const { return fIndexInCluster; }
};

namespace Experimental {

/// RNTupleLocator payload that is common for object stores using 64bit location information.
/// This might not contain the full location of the content. In particular, for page locators this information may be
/// used in conjunction with the cluster and column ID.
Expand Down Expand Up @@ -249,6 +247,8 @@ public:
}
};

namespace Experimental {

namespace Internal {

/// The in-memory representation of a 32bit or 64bit on-disk index column. Wraps the integer in a
Expand Down
2 changes: 1 addition & 1 deletion tree/ntuple/v7/inc/ROOT/RPageStorageFile.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ class TDirectory;

namespace ROOT {
class RNTuple; // for making RPageSourceFile a friend of RNTuple
class RNTupleLocator;

namespace Internal {
class RRawFile;
}

namespace Experimental {
class RNTupleLocator;

namespace Internal {
class RClusterPool;
Expand Down
12 changes: 6 additions & 6 deletions tree/ntuple/v7/src/RNTupleSerialize.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ DeserializeExtraTypeInfo(const void *buffer, std::uint64_t bufSize,
return frameSize;
}

std::uint32_t SerializeLocatorPayloadLarge(const ROOT::Experimental::RNTupleLocator &locator, unsigned char *buffer)
std::uint32_t SerializeLocatorPayloadLarge(const ROOT::RNTupleLocator &locator, unsigned char *buffer)
{
if (buffer) {
RNTupleSerializer::SerializeUInt64(locator.GetNBytesOnStorage(), buffer);
Expand All @@ -402,7 +402,7 @@ std::uint32_t SerializeLocatorPayloadLarge(const ROOT::Experimental::RNTupleLoca
return sizeof(std::uint64_t) + sizeof(std::uint64_t);
}

void DeserializeLocatorPayloadLarge(const unsigned char *buffer, ROOT::Experimental::RNTupleLocator &locator)
void DeserializeLocatorPayloadLarge(const unsigned char *buffer, ROOT::RNTupleLocator &locator)
{
std::uint64_t nBytesOnStorage;
std::uint64_t position;
Expand All @@ -412,9 +412,9 @@ void DeserializeLocatorPayloadLarge(const unsigned char *buffer, ROOT::Experimen
locator.SetPosition(position);
}

std::uint32_t SerializeLocatorPayloadObject64(const ROOT::Experimental::RNTupleLocator &locator, unsigned char *buffer)
std::uint32_t SerializeLocatorPayloadObject64(const ROOT::RNTupleLocator &locator, unsigned char *buffer)
{
const auto &data = locator.GetPosition<ROOT::Experimental::RNTupleLocatorObject64>();
const auto &data = locator.GetPosition<ROOT::RNTupleLocatorObject64>();
const uint32_t sizeofNBytesOnStorage = (locator.GetNBytesOnStorage() > std::numeric_limits<std::uint32_t>::max())
? sizeof(std::uint64_t)
: sizeof(std::uint32_t);
Expand All @@ -430,7 +430,7 @@ std::uint32_t SerializeLocatorPayloadObject64(const ROOT::Experimental::RNTupleL
}

void DeserializeLocatorPayloadObject64(const unsigned char *buffer, std::uint32_t sizeofLocatorPayload,
ROOT::Experimental::RNTupleLocator &locator)
ROOT::RNTupleLocator &locator)
{
std::uint64_t location;
if (sizeofLocatorPayload == 12) {
Expand All @@ -446,7 +446,7 @@ void DeserializeLocatorPayloadObject64(const unsigned char *buffer, std::uint32_
} else {
throw ROOT::RException(R__FAIL("invalid DAOS locator payload size: " + std::to_string(sizeofLocatorPayload)));
}
locator.SetPosition(ROOT::Experimental::RNTupleLocatorObject64{location});
locator.SetPosition(ROOT::RNTupleLocatorObject64{location});
}

std::uint32_t SerializeAliasColumn(const ROOT::Experimental::RColumnDescriptor &columnDesc,
Expand Down
5 changes: 2 additions & 3 deletions tree/ntuple/v7/src/RPageStorage.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -984,11 +984,10 @@ void ROOT::Experimental::Internal::RPagePersistentSink::CommitSealedPage(ROOT::D
fOpenPageRanges.at(physicalColumnId).fPageInfos.emplace_back(pageInfo);
}

std::vector<ROOT::Experimental::RNTupleLocator>
ROOT::Experimental::Internal::RPagePersistentSink::CommitSealedPageVImpl(
std::vector<ROOT::RNTupleLocator> ROOT::Experimental::Internal::RPagePersistentSink::CommitSealedPageVImpl(
std::span<RPageStorage::RSealedPageGroup> ranges, const std::vector<bool> &mask)
{
std::vector<ROOT::Experimental::RNTupleLocator> locators;
std::vector<ROOT::RNTupleLocator> locators;
locators.reserve(mask.size());
std::size_t i = 0;
for (auto &range : ranges) {
Expand Down
16 changes: 8 additions & 8 deletions tree/ntuple/v7/src/RPageStorageDaos.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ RDaosURI ParseDaosURI(std::string_view uri)

/// \brief Unpacks a 64-bit RNTuple page locator address for object stores into a pair of 32-bit values:
/// the attribute key under which the cage is stored and the offset within that cage to access the page.
std::pair<uint32_t, uint32_t> DecodeDaosPagePosition(const ROOT::Experimental::RNTupleLocatorObject64 &address)
std::pair<uint32_t, uint32_t> DecodeDaosPagePosition(const ROOT::RNTupleLocatorObject64 &address)
{
auto position = static_cast<uint32_t>(address.GetLocation() & 0xFFFFFFFF);
auto offset = static_cast<uint32_t>(address.GetLocation() >> 32);
Expand All @@ -118,10 +118,10 @@ std::pair<uint32_t, uint32_t> DecodeDaosPagePosition(const ROOT::Experimental::R

/// \brief Packs an attribute key together with an offset within its contents into a single 64-bit address.
/// The offset is kept in the MSb half and defaults to zero, which is the case when caging is disabled.
ROOT::Experimental::RNTupleLocatorObject64 EncodeDaosPagePosition(uint64_t position, uint64_t offset = 0)
ROOT::RNTupleLocatorObject64 EncodeDaosPagePosition(uint64_t position, uint64_t offset = 0)
{
uint64_t address = (position & 0xFFFFFFFF) | (offset << 32);
return ROOT::Experimental::RNTupleLocatorObject64{address};
return ROOT::RNTupleLocatorObject64{address};
}

/// \brief Helper structure concentrating the functionality required to locate an ntuple within a DAOS container.
Expand Down Expand Up @@ -316,7 +316,7 @@ void ROOT::Experimental::Internal::RPageSinkDaos::InitImpl(unsigned char *serial
WriteNTupleHeader(zipBuffer.get(), szZipHeader, length);
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkDaos::CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page)
{
auto element = columnHandle.fColumn->GetElement();
Expand All @@ -330,7 +330,7 @@ ROOT::Experimental::Internal::RPageSinkDaos::CommitPageImpl(ColumnHandle_t colum
return CommitSealedPageImpl(columnHandle.fPhysicalId, sealedPage);
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkDaos::CommitSealedPageImpl(ROOT::DescriptorId_t physicalColumnId,
const RPageStorage::RSealedPage &sealedPage)
{
Expand All @@ -354,12 +354,12 @@ ROOT::Experimental::Internal::RPageSinkDaos::CommitSealedPageImpl(ROOT::Descript
return result;
}

std::vector<ROOT::Experimental::RNTupleLocator>
std::vector<ROOT::RNTupleLocator>
ROOT::Experimental::Internal::RPageSinkDaos::CommitSealedPageVImpl(std::span<RPageStorage::RSealedPageGroup> ranges,
const std::vector<bool> &mask)
{
RDaosContainer::MultiObjectRWOperation_t writeRequests;
std::vector<ROOT::Experimental::RNTupleLocator> locators;
std::vector<RNTupleLocator> locators;
auto nPages = mask.size();
locators.reserve(nPages);

Expand Down Expand Up @@ -427,7 +427,7 @@ std::uint64_t ROOT::Experimental::Internal::RPageSinkDaos::StageClusterImpl()
return std::exchange(fNBytesCurrentCluster, 0);
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkDaos::CommitClusterGroupImpl(unsigned char *serializedPageList,
std::uint32_t length)
{
Expand Down
12 changes: 6 additions & 6 deletions tree/ntuple/v7/src/RPageStorageFile.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ void ROOT::Experimental::Internal::RPageSinkFile::InitImpl(unsigned char *serial
fWriter->WriteNTupleHeader(zipBuffer.get(), szZipHeader, length);
}

inline ROOT::Experimental::RNTupleLocator
inline ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkFile::WriteSealedPage(const RPageStorage::RSealedPage &sealedPage,
std::size_t bytesPacked)
{
Expand All @@ -95,7 +95,7 @@ ROOT::Experimental::Internal::RPageSinkFile::WriteSealedPage(const RPageStorage:
return result;
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkFile::CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page)
{
auto element = columnHandle.fColumn->GetElement();
Expand All @@ -109,7 +109,7 @@ ROOT::Experimental::Internal::RPageSinkFile::CommitPageImpl(ColumnHandle_t colum
return WriteSealedPage(sealedPage, element->GetPackedSize(page.GetNElements()));
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkFile::CommitSealedPageImpl(ROOT::DescriptorId_t physicalColumnId,
const RPageStorage::RSealedPage &sealedPage)
{
Expand Down Expand Up @@ -145,14 +145,14 @@ void ROOT::Experimental::Internal::RPageSinkFile::CommitBatchOfPages(CommitBatch
batch.fSealedPages.clear();
}

std::vector<ROOT::Experimental::RNTupleLocator>
std::vector<ROOT::RNTupleLocator>
ROOT::Experimental::Internal::RPageSinkFile::CommitSealedPageVImpl(std::span<RPageStorage::RSealedPageGroup> ranges,
const std::vector<bool> &mask)
{
const std::uint64_t maxKeySize = fOptions->GetMaxKeySize();

CommitBatch batch{};
std::vector<ROOT::Experimental::RNTupleLocator> locators;
std::vector<RNTupleLocator> locators;

std::size_t iPage = 0;
for (auto rangeIt = ranges.begin(); rangeIt != ranges.end(); ++rangeIt) {
Expand Down Expand Up @@ -223,7 +223,7 @@ std::uint64_t ROOT::Experimental::Internal::RPageSinkFile::StageClusterImpl()
return result;
}

ROOT::Experimental::RNTupleLocator
ROOT::RNTupleLocator
ROOT::Experimental::Internal::RPageSinkFile::CommitClusterGroupImpl(unsigned char *serializedPageList,
std::uint32_t length)
{
Expand Down
4 changes: 2 additions & 2 deletions tree/ntuple/v7/test/ntuple_compat.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -367,9 +367,9 @@ TEST(RNTupleCompat, FutureFieldStructuralRole_Nested)
}

class RPageSinkTestLocator : public RPageSinkFile {
ROOT::Experimental::RNTupleLocator WriteSealedPage(const RPageStorage::RSealedPage &sealedPage, std::size_t)
ROOT::RNTupleLocator WriteSealedPage(const RPageStorage::RSealedPage &sealedPage, std::size_t)
{
auto payload = ROOT::Experimental::RNTupleLocatorObject64{0x420};
auto payload = ROOT::RNTupleLocatorObject64{0x420};
RNTupleLocator result;
result.SetPosition(payload);
result.SetType(ROOT::Experimental::Internal::kTestLocatorType);
Expand Down
4 changes: 2 additions & 2 deletions tree/ntuple/v7/test/ntuple_test.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
#include <vector>

using ROOT::RNTupleLocalIndex;
using ROOT::RNTupleLocator;
using ROOT::RNTupleLocatorObject64;
using ROOT::Experimental::EExtraTypeInfoIds;
using ROOT::Experimental::Internal::RColumnIndex;
using RClusterDescriptor = ROOT::Experimental::RClusterDescriptor;
Expand All @@ -68,8 +70,6 @@ template <class T>
using RField = ROOT::Experimental::RField<T>;
using RFieldBase = ROOT::Experimental::RFieldBase;
using RFieldDescriptor = ROOT::Experimental::RFieldDescriptor;
using RNTupleLocator = ROOT::Experimental::RNTupleLocator;
using RNTupleLocatorObject64 = ROOT::Experimental::RNTupleLocatorObject64;
using RMiniFileReader = ROOT::Experimental::Internal::RMiniFileReader;
using RNTupleAtomicCounter = ROOT::Experimental::Detail::RNTupleAtomicCounter;
using RNTupleAtomicTimer = ROOT::Experimental::Detail::RNTupleAtomicTimer;
Expand Down

0 comments on commit 555b382

Please sign in to comment.