Skip to content

Specify storage inheritance for FILE self-references - #603

Open
alkis wants to merge 6 commits into
apache:masterfrom
alkis:file-self-reference-compression
Open

Specify storage inheritance for FILE self-references#603
alkis wants to merge 6 commits into
apache:masterfrom
alkis:file-self-reference-compression

Conversation

@alkis

@alkis alkis commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Specify storage inheritance semantics for FILE self-references:

  • require an inline field for schemas permitting self-references
  • inherit compression and encryption from the corresponding inline column chunk
  • define each referenced range as an independent compression/encryption block
  • define offset and size over the stored representation
  • require Parquet-mediated resolution of stored bytes
  • define modular-encryption serialization and a page-independent AAD identity
  • leave external references unaffected

Discussion: https://lists.apache.org/thread/zrzc7t9fccg92rx3h4fw3ndw3bdo5xr7

@alkis alkis changed the title Specify compression for FILE self-references Specify storage inheritance for FILE self-references Jul 30, 2026
Comment thread LogicalTypes.md
| - | set | set | set | external `uri`, `[offset, offset + size)` |
| - | - | set | - | invalid |
| - | - | - | set | invalid |
| - | - | set | set | this file, `[offset, offset + size)` (self-reference) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mind updating the spaces for the other lines so that the table is aligned?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed—the table is aligned now. Thanks!

Comment thread LogicalTypes.md
Comment on lines +773 to +774
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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we also store the decompressed size somewhere?

Comment thread Encryption.md
Comment on lines +319 to +321
For a self-reference, `offset` points to the beginning of the 4-byte length and `size`
is the size of the complete encrypted module, including the length, nonce, ciphertext,
and GCM tag when present.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4-byte length limits us to 2GiB payload. Are we expecting use cases with greater size requirements?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants