Skip to content

Commit

Permalink
GH-465: Clarify backward-compatibility rules on LIST type
Browse files Browse the repository at this point in the history
  • Loading branch information
wgtmac committed Oct 30, 2024
1 parent 4f20815 commit fc8aca3
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions LogicalTypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -655,10 +655,14 @@ should always be determined by the following rules:
1. If the repeated field is not a group, then its type is the element type and
elements are required.
2. If the repeated field is a group with multiple fields, then its type is the
element type and elements are required.
3. If the repeated field is a group with one field and is named either `array`
or uses the `LIST`-annotated group's name with `_tuple` appended then the
repeated type is the element type and elements are required.
element type and elements are required. To be clear, if the group does not
have annotation, the element type resolves to a multi-field Tuple. If the
group is `LIST`-annotated or `MAP`-annotated, it should resolve to List or
Map type, respectively.
3. If the repeated field is a group (without annotation) with one `required` or
`optional` field, and is named either `array` or uses the `LIST`-annotated
group's name with `_tuple` appended, then the repeated type (a single-field
Tuple type) is the element type and elements are required.
4. Otherwise, the repeated field's type is the element type with the repeated
field's repetition.

Expand Down Expand Up @@ -691,6 +695,14 @@ optional group my_list (LIST) {
required binary str (STRING);
};
}
// List<List<Integer>> (outer list is nullable with non-null elements,
// inner list is non-null with non-null elements)
optional group my_list (LIST) {
repeated group array (LIST) {
repeated int32 array;
}
}
```

### Maps
Expand Down

0 comments on commit fc8aca3

Please sign in to comment.