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]

Reply via email to