Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,9 @@ For the purposes of this discussion we classify features into the following buck
the feature enabled can be read under an older version of the format, but
some metadata might be missing or performance might be suboptimal. Simply
phrased, forward compatible means all data can be read back in an older
version of the format. New logical types are considered forward
compatible despite the loss of semantic meaning.
version of the format. New logical types and new combinations of existing
logical/physical types are considered forward compatible despite the loss
of semantic meaning.

3. Forward incompatible. A file written under a newer version of the format with
the feature enabled cannot be read under an older version of the format (e.g.
Expand Down
9 changes: 9 additions & 0 deletions LogicalTypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ according to well defined conversion rules.

### Compatibility

#### ConvertedType

The Thrift definition of the metadata has two fields for logical types: `ConvertedType` and `LogicalType`.
`ConvertedType` is an enum of all available annotations. Since Thrift enums can't have additional type parameters,
it is cumbersome to define additional type parameters, like decimal scale and precision
Expand All @@ -54,6 +56,13 @@ in case `LogicalType` annotations are not present. Parquet writers must always w
`LogicalType` annotations where applicable, but must also write the corresponding
`ConvertedType` annotations (if any) to maintain compatibility with old readers.

#### Unsupported Logical Types

When reading a file written by a newer writer that contains an unrecognized logical type or an
unrecognized logical/physical type combination on a column, readers should ignore both the logical
type annotation and statistics for that column. Only the physical type information should be used
to process the column's data.

Compatibility considerations are mentioned for each annotation in the corresponding section.

## String Types
Expand Down