Skip to content

docs: document table-level storage/encryption gap, drop from TODO#101

Merged
winebarrel merged 1 commit into
mainfrom
docs-table-storage-options-not-managed
May 6, 2026
Merged

docs: document table-level storage/encryption gap, drop from TODO#101
winebarrel merged 1 commit into
mainfrom
docs-table-storage-options-not-managed

Conversation

@winebarrel

Copy link
Copy Markdown
Owner

Summary

Decision: don't implement `ROW_FORMAT` / `KEY_BLOCK_SIZE` / `COMPRESSION` / `ENCRYPTION` round-trip. Document the gap and remove from TODO.

Why not implement

  • All four trigger a full `ALGORITHM=COPY` table rebuild on ALTER. The ergonomic case for managing them declaratively is weaker than for in-place attributes.
  • `ENCRYPTION` specifically requires a server-side keyring plugin before `ENCRYPTION='Y'` is accepted. Probed against the local test MySQL: `Error 3185: Can't find master key from keyring`. Test environments without the plugin can't exercise the round-trip end-to-end.

Rather than ship half-coverage (parser-only on `ENCRYPTION`, e2e on the other three), mark the whole family out of scope and document the workaround.

Changes

  • `CAVEATS.md`: new "Table-level storage and encryption options are not managed" section. Lists the four options, explains why myschema doesn't manage them, and recommends `-- myschema:execute`-guarded one-shots or direct `ALTER TABLE` against the live database.
  • `TODO.md`: drop the corresponding entry. The limitation is now part of the documented contract.

Test plan

  • Doc-only change.
  • `make lint` clean.

🤖 Generated with Claude Code

Decision: don't implement. The TODO listed
ROW_FORMAT / KEY_BLOCK_SIZE / COMPRESSION / ENCRYPTION as
silent drops with a fix path ("add to model.Table,
applyTableOption, the catalog reader, and Table.SQL()"), but:

- All four require a full table rebuild on ALTER, so the
  ergonomic case for managing them through myschema is weaker
  than it looks.
- ENCRYPTION specifically needs a server-side keyring plugin
  before `ENCRYPTION='Y'` is accepted; test environments
  without the plugin can't exercise the round-trip end-to-end.

Rather than ship half-coverage (parser-only on ENCRYPTION),
mark the whole family out of scope. Users who need these
options manage them out-of-band — direct ALTER TABLE, or a
`-- myschema:execute` block that guards on
information_schema.TABLES.ROW_FORMAT / CREATE_OPTIONS for
idempotency.

CAVEATS.md gets a new "Table-level storage and encryption
options are not managed" section spelling out which options
are dropped, why, and the workaround. TODO.md drops the
corresponding entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 6, 2026 06:20
@codecov

codecov Bot commented May 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.86%. Comparing base (d4a7cdc) to head (015b867).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #101   +/-   ##
=======================================
  Coverage   86.86%   86.86%           
=======================================
  Files          30       30           
  Lines        3357     3357           
=======================================
  Hits         2916     2916           
  Misses        270      270           
  Partials      171      171           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Documents an explicit out-of-scope area in myschema’s “contract”: table-level storage/encryption options that are parsed but not modeled, diffed, dumped, or applied. This formalizes the decision to not manage these options declaratively and removes the corresponding TODO entry.

Changes:

  • Added a new CAVEATS section explaining that ROW_FORMAT, KEY_BLOCK_SIZE, COMPRESSION, and ENCRYPTION are ignored (no round-trip), plus recommended workarounds.
  • Removed the related “table-level storage / encryption options” item from TODO.md now that the limitation is documented.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
TODO.md Removes the TODO item for table-level storage/encryption option round-trip support.
CAVEATS.md Adds a dedicated caveat section documenting the non-managed table options and suggested operational workarounds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@winebarrel winebarrel merged commit e2c2089 into main May 6, 2026
9 checks passed
@winebarrel winebarrel deleted the docs-table-storage-options-not-managed branch May 6, 2026 06:25
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.

2 participants