alkis commented on code in PR #603: URL: https://github.com/apache/parquet-format/pull/603#discussion_r3735863061
########## LogicalTypes.md: ########## @@ -756,10 +756,52 @@ A self-reference points within the same Parquet file using `offset` and `size` ( required). A self-reference is when `uri` is not set. A file containing self-references can be renamed or relocated as a single unit. -Parquet files containing self-references must not use Parquet modular encryption. -Self-referenced byte ranges are not Parquet encryption modules and therefore cannot -be encrypted or authenticated independently. Encryption of external files referenced -by `uri` is outside the scope of the Parquet format. +A schema that permits self-references must include the `inline` field. + +Each self-reference inherits the compression and encryption settings of the `inline` +column chunk of the same row group. These settings are properties of the column chunk, +so all self-references of a column chunk share them regardless of the page a value is +stored in. + +Each referenced byte range is compressed independently using the `CompressionCodec` +of the `inline` column chunk. `UNCOMPRESSED` leaves the referenced bytes uncompressed. + +Each compressed byte range is an independent compression block. Compression state is +not shared with the data page or with other referenced ranges. + +For an unencrypted self-reference, `offset` and `size` identify either the independent +compressed block or the uncompressed bytes. For a compressed block, the complete range +is supplied to the codec, and its decompressed output is the resolved value. + +The decompressed size of a self-reference is not stored. Readers must rely on the +framing of the codec where it provides one, or decompress into a dynamically sized +buffer. A future revision of this specification may add an explicit decompressed size. + +The encryption state and key are inherited from the `inline` column chunk. If the +column chunk is encrypted, each self-reference is encrypted independently using the +same column key and file encryption algorithm. Compression is applied before +encryption. If the column chunk is not encrypted, its self-references are not +encrypted. An encrypted self-reference is limited to 2 GiB by the length field of the Review Comment: Took my own suggestion in ad3d1fa. The shorthand is replaced with a pointer: > For an encrypted self-reference, `offset` and `size` identify the encrypted module, whose exact extent is defined in [Encrypted module serialization](Encryption.md#51-encrypted-module-serialization). That keeps the normative definition of the extent in `Encryption.md` section 5.1 — `offset` at the 4-byte length, `size` spanning length, nonce, ciphertext, and GCM tag when present — instead of restating a lossy version of it here. -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
