rok commented on code in PR #51248: URL: https://github.com/apache/arrow/pull/51248#discussion_r4400635428
########## docs/source/format/CanonicalExtensions.rst: ########## @@ -546,6 +546,96 @@ Primitive Type Mappings | UUID extension type | UUID | +----------------------+------------------------+ +.. _parquet_file_extension: + +Parquet File +============ + +File represents a reference to a range of bytes stored inline or in an external +file. It is intended for use cases such as file inventories, manifests, and +references to unstructured data such as images or audio files in object +storage. + +Field semantics, byte resolution rules, and value validation are defined by the +`Parquet FILE logical type specification <https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#file>`__. +These requirements apply to this extension type. + +* Extension name: ``arrow.parquet.file``. + +* The storage type of this extension is a ``Struct`` containing at least one of + the following nullable fields: + + .. list-table:: + :header-rows: 1 + + * - Field + - Type + * - ``uri`` + - ``String``, ``LargeString``, or ``StringView`` + * - ``offset`` + - ``Int64`` + * - ``size`` + - ``Int64`` + * - ``content_type`` + - ``String``, ``LargeString``, or ``StringView`` + * - ``checksum`` + - ``String``, ``LargeString``, or ``StringView`` + * - ``inline`` + - ``Binary``, ``LargeBinary``, or ``BinaryView`` + + The fields may be in any order and must be accessed by case-sensitive name, + not by position. Each field may occur at most once and may be omitted from + the ``Struct`` when it is not used. The ``Struct`` must not contain fields + other than those listed above. + +* Extension type parameters: + + This type does not have any parameters. + +* Description of the serialization: + + Extension metadata is an empty string. + +Relative URI resolution +----------------------- + +Unlike in Parquet, an ``offset`` paired with a relative ``uri`` is meaningless +in this extension type. + +Parquet readers can attempt to resolve relative URIs by checking for the +referenced file relative to the source Parquet file's location. If successful, +they should record the absolute URI in the Arrow array's ``uri`` field. Review Comment: Thinking about this - we can't really specify parquet behavior here, so maybe such language makes more sense. ```suggestion Unlike in Parquet, an ``offset`` paired with a relative ``uri`` is hard to interpret in this extension type. While Parquet file's location can suggest a starting point for the relative path, an extension type will not carry no such information. It is up to the application layer to handle what the meaning of the relative paths is if they are provided. ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
