@@ -374,13 +374,16 @@ The field version and type version are used for schema evolution.
374
374
375
375
The structural role of the field can have one of the following values:
376
376
377
- | Value | Structural role |
378
- | ----------| --------------------------------------------------------------------------|
379
- | 0x00 | Leaf field in the schema tree |
380
- | 0x01 | The field is the parent of a collection (e.g., a vector) |
381
- | 0x02 | The field is the parent of a record (e.g., a struct) |
382
- | 0x03 | The field is the parent of a variant |
383
- | 0x04 | The field stores objects serialized with the ROOT streamer |
377
+ | Value | Structural role |
378
+ | ----------| ---------------------------------------------------------------------------------|
379
+ | 0x00 | Plain field in the schema tree that does not carry a particular structural role |
380
+ | 0x01 | The field is the parent of a collection (e.g., a vector) |
381
+ | 0x02 | The field is the parent of a record (e.g., a struct) |
382
+ | 0x03 | The field is the parent of a variant |
383
+ | 0x04 | The field stores objects serialized with the ROOT streamer |
384
+
385
+ A plain field is either a leaf or a "wrapper field" in the schema tree such as the parent field of an enum data field
386
+ (see Section "Mapping of C++ Types to Fields and Columns")
384
387
385
388
The "flags" field can have any of the following bits set:
386
389
@@ -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 plain 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 ` plain ` 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 plain 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 plain 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 plain 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