@@ -376,12 +376,15 @@ The structural role of the field can have one of the following values:
376
376
377
377
| Value | Structural role |
378
378
| ----------| --------------------------------------------------------------------------|
379
- | 0x00 | Leaf field in the schema tree |
379
+ | 0x00 | Static field in the schema tree (see below) |
380
380
| 0x01 | The field is the parent of a collection (e.g., a vector) |
381
381
| 0x02 | The field is the parent of a record (e.g., a struct) |
382
382
| 0x03 | The field is the parent of a variant |
383
383
| 0x04 | The field stores objects serialized with the ROOT streamer |
384
384
385
+ A static field is either a leaf or an inner field with exactly one subfield of same cardinality
386
+ (modulo field repetition).
387
+
385
388
The "flags" field can have any of the following bits set:
386
389
387
390
| Bit | Meaning |
@@ -403,7 +406,7 @@ these columns are alias columns to physical columns attached to the source field
403
406
The following restrictions apply on field projections:
404
407
- The source field and the target field must have the same structural role,
405
408
except for an ` RNTupleCardinality ` field, which must have a collection field as a source.
406
- - For streamer fields and leaf fields, the type name of the source field and the projected field must be identical.
409
+ - For streamer fields and static fields, the type name of the source field and the projected field must be identical.
407
410
- Projections involving variants or fixed-size arrays are unsupported.
408
411
- Projected fields must be on the same schema path of collection fields as the source field.
409
412
For instance, one can project a vector of structs with floats to individual vectors of floats but cannot
@@ -830,7 +833,7 @@ For example, the type name `const pair<size_t, array<class ::Event, 2>>` will be
830
833
831
834
### Fundamental Types
832
835
833
- The following fundamental types are stored as ` leaf ` fields with a single column each.
836
+ The following fundamental types are stored as ` static ` fields with a single column each.
834
837
Fundamental C++ types can potentially be stored in multiple possible column types.
835
838
The possible combinations are marked as ` W ` in the following table.
836
839
Additionally, some types allow for reading from certain column types but not to write into them.
@@ -923,7 +926,7 @@ The child fields are named `_0`, `_1`, ...
923
926
924
927
#### std::bitset\< N\>
925
928
926
- A bitset is stored as a repetitive leaf field with an attached ` Bit ` column.
929
+ A bitset is stored as a repetitive static field with an attached ` Bit ` column.
927
930
The bitset size ` N ` is stored as repetition parameter in the field metadata.
928
931
Within the repetition blocks, bits are stored in little-endian order, i.e. the least significant bits come first.
929
932
@@ -952,13 +955,13 @@ whose principal column is of type `(Split)Index[64|32]` and a child field of typ
952
955
953
956
### std::atomic\< T\>
954
957
955
- Atomic types are stored as a leaf field with a single subfield named ` _0 ` .
958
+ Atomic types are stored as a static field with a single subfield named ` _0 ` .
956
959
The parent field has no attached columns.
957
960
The subfield corresponds to the inner type ` T ` .
958
961
959
962
### User-defined enums
960
963
961
- User-defined enums are stored as a leaf field with a single subfield named ` _0 ` .
964
+ User-defined enums are stored as a static field with a single subfield named ` _0 ` .
962
965
The parent field has no attached columns.
963
966
The subfield corresponds to the integer type the underlies the enum.
964
967
Unscoped and scoped enums are supported as long as the enum has a dictionary.
0 commit comments