root icon indicating copy to clipboard operation
root copied to clipboard

[ntuple] Mark missing fields for automatic schema evolution

Open hahnjo opened this issue 1 year ago • 3 comments

They are skipped while reading in the same way as a transient member.

hahnjo avatar Sep 18 '24 15:09 hahnjo

Test Results

    14 files      14 suites   3d 2h 54m 52s ⏱️  2 679 tests  2 678 ✅ 0 💤 1 ❌ 36 096 runs  36 095 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 7934f0cc.

:recycle: This comment has been updated with latest results.

github-actions[bot] avatar Sep 18 '24 17:09 github-actions[bot]

I wonder if we should call the missing fields "virtual fields", reflecting the fact that they are not backed by a field on disk, but their content may be constructed from other data on disk (e.g., manual schema evolution, enum-to-int automatic evolution). Ignoring the field entirely is then just a special case.

I haven't given much thought on the naming; so essentially you propose to rename fIsMissing -> fIsVirtual and SetMissing() to SetVirtual()?

Linked to this, perhaps the reading should be done entirely by read callbacks. Typically, the field itself won't have enough information to read but, e.g., only the surrounding class can put all the pieces together.

So this is related to ReadMissingImpl, which you would just drop and let RClassField do the necessary work from its side?

hahnjo avatar Sep 24 '24 07:09 hahnjo

I wonder if we should call the missing fields "virtual fields", reflecting the fact that they are not backed by a field on disk,

Note that for a similar (but not exact I think) concept in TStreamerInfo I use 'Artificial'.

We also have the word "Alias" floating around we similar features, don't we?

"Virtual" may or may not clash with the C++ virtual keyword semantic.

pcanal avatar Sep 24 '24 16:09 pcanal