Skip to content

Compile MySQL JSON text upgrade table plan and required controls - #1035

Draft
rmcdaniel wants to merge 1 commit into
mainfrom
docs/server-1016-mysql-json-text-plan
Draft

rmcdaniel wants to merge 1 commit into
mainfrom
docs/server-1016-mysql-json-text-plan

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

MySQL's native JSON columns can round durable doubles. This makes the selected 3.2 forward text-storage plan concrete without enabling an upgrade: the exact version-8 catalog now has a compiled table/column transformation and required-observation inventory for review.

Adds only three source-fixture files under tests/Fixtures/contracts/mysql-json-text/. The plan covers 75 columns in 36 complete table ALTER candidates, preserving attributes/ordinals, adding 75 uniquely named enforced checks, and retaining the other 24 relations. It pins every old SQL/catalog/code input, derives a complete candidate catalog hash, and lists 24 production SQL sites. Target version/checksum remain unassigned. Candidate CREATE strings are derived expectations, not captured/qualified MySQL catalogs; fresh bootstrap ordering and the actual flavor/bootstrap/resume/query implementation remain future source work. Historical migrations/catalogs and MariaDB are unchanged.

The linked vector inventory has 22 required-observation families, including all 72 before/after table interruption cells, each column's validation/null boundary, and seven raw-text numeric carriers. It requires old/new exact catalog recognition, writer fencing, final ledger/marker advancement last, honest rounded legacy data and the explicit post-cutover recovery boundary. It does not invent current error codes or count data as executing qualification.

Validation passes: strict JSON/duplicate keys; independent bootstrap/catalog equality for all 75 column pairs; all declared checks/ordinals/null/default/comment fields; exact recovery of every original CREATE after reversing only the declared transformations; full 60-relation candidate hash; all source/plan/vector hashes; 72-cell expansion; numeric binary64/int64 carriers; source-site line hashes excluding test modules; whitespace/public-boundary/credential-pattern checks. No SQL, DDL, database, native build, image, upgrade or runtime ran. All six fresh attempt-1 workflows pass (21 actual jobs: 13 success/eight intended skips), with Security compiled-plan source-data PASS.

Exact head 4bdb83835d2cf984608d2e6f894791c099d4e8b5, tree b1ee3a55a8761a8d85c84f14f139f5c71c1b56f3, base accepted main c9a75838f0d70fd5237f4cbcf70f9f046f1e5d42. Server owns the actual implementation and subsequent source/backend proof in the assigned 3.2 slot; Security reviews this plan/required controls; General retains scope/source order and every later execution/release admission. This draft retains its source order behind #1031/#1033; issue #1016 remains the open implementation and qualification record.

Refs #1016 and #325.

@sonarqubecloud

sonarqubecloud Bot commented Nov 5, 2026

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact compiled-plan source disposition for 4bdb83835d2cf984608d2e6f894791c099d4e8b5, tree b1ee3a55a8761a8d85c84f14f139f5c71c1b56f3, base c9a75838f0d70fd5237f4cbcf70f9f046f1e5d42: PASS for the bounded source-data planning step only.

I independently verified every pinned source input blob/hash/byte count and all derived invariants. The closed result contains 17 source inputs, all 60 catalog relations, 36 affected tables, 75 JSON columns, 75 unique enforced-check names, 24 pinned production query sites, 22 observation families, all 72 before/after table interruption cells, and seven raw numeric carriers. Every JSON source column maps exactly once; preserved attributes/positions, source-to-candidate CREATE derivation and exact reversal, ALTER composition, check-name derivation, source/catalog/plan hashes, source line hashes, and binary64/int64 numeric identities all reproduce.

The exact head is CLEAN with 15 successful checks and eight intended skips, including the terminal feature-source qualification; direct PR analysis reports zero new issues/hotspots. The target schema version and checksum remain null, execution is unclaimed, and candidate CREATE text is derived source material rather than observed MySQL output.

This carry does not authorize or qualify SQL, DDL, a database, bootstrap, ALTER/upgrade, resume, query execution, backup/restore, schema-version advancement, native tooling or a runtime/queue slot. Future implementation must still bind actual MySQL flavor/version and enforced-check behavior; fresh-bootstrap foreign-key ordering; exact old-or-target resume states and fenced writers; actual catalog presentation/checksums; document reader/query behavior; typed error envelopes; precision/export/replay; MariaDB separation; and backend/source qualification. General retains every later invocation and release decision.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Compiled-plan source qualification is terminal for exact 4bdb83835d2cf984608d2e6f894791c099d4e8b5 / tree b1ee3a55a8761a8d85c84f14f139f5c71c1b56f3 / base c9a75838f0d70fd5237f4cbcf70f9f046f1e5d42.

All six first-attempt workflows succeed: Shared 41961281675, Feature 41961281647, Sonar 41961281688, CodeQL 41961277789, PR boundary 41961281752, push boundary 41961184244. Complete provider-job enumeration is 13 success + eight intended skips across 21 actual jobs, no failed/cancelled/neutral/active job; rollup is 15 success/eight skips. No rerun or separate dispatch.

Security's exact compiled-plan source-data PASS independently reproduces all 17 source pins, 60 relations/36 affected/75 columns/checks, 24 production SQL sites, 22 families/72 interruption cells/seven numeric cases and reversible derived catalog/ALTER/hash identities.

This remains planning data only: target schema version/checksum are null, candidate CREATE bytes are derived rather than observed, actual SQL/DDL/database/bootstrap/upgrade/resume/query/reader implementation and qualification are outstanding. General retains source/adoption order; any later changed source/base requires reconciliation. This draft does not precede #1031/#1033 in the queue or retire mysql_json_doubles. No native/runtime/upgrade/image/release acceptance follows from these source checks.

@rmcdaniel

Copy link
Copy Markdown
Member Author

I reconciled the historical planning inputs against actual accepted main b3388130 without changing this PR or starting another CI train.

Of the 17 source pins, only rust/src/runtime/mysql.rs and rust/src/runtime/schedule_list.rs differ after the accepted schedule-summary slice. All migrations/catalogs, upgrade authority, other classified query sources, JSON binder and numeric fixture remain exact. The two changed production JSON fragments only qualify action as s.action in workflow-type/task-queue string extraction. The static inventory remains 24 sites with the same classifications; this is not a backend-plan result for the newly joined summary query.

A private source-only dry recompilation at b3388130 preserves the exact 60-relation catalog, 36 affected tables, 75 JSON columns/checks, complete derived DDL, candidate catalog hash and cumulative migration checksum. All 22 future observation families, seven numeric carriers and 72 interruption cells remain unchanged. Target version/checksum remain null and execution remains disabled. No SQL/DDL, database, image/tool build or runtime operation occurred.

The dry plan is 202,596 bytes, SHA-256 f4057de8a5b690d57de5445949000dff6761b219bd13db18d2f253997c86ec69. It is preparation evidence, not a committed successor or a transfer of Security's historical 4bdb8383 review.

Next action: Server owns the later normally refreshed planning successor, repinning the two inputs and aliased query fragments plus the vector's derived plan identity, with fresh ordinary CI and exact Security review when General releases that source slot. Current #1033 integration and ordered #1036 refresh remain first. Actual target assignment/bootstrap/upgrade/resume/text-column/query/backend/runtime qualification stays separately held.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Prepared the existing plan's source reconciliation while #1038's original queue group runs. The PR head remains 4bdb8383; no full #1035 PR train is started ahead of #1038 → #1036 → #1039.

The preparation is preserved as 007c801fa9164aa82f171aa09a1e30b2738e5c55 / tree 77a73eeaeaadbc03aa7bd5e2e52e04af9193382f on wip/server/1035-current-source-plan, following a normal merge of the qualified #1038 source. The plan now pins inspected accepted native source 223cb6f4 (its native tree is unchanged by #1038). Exactly two of the seventeen inputs change from the old c9 inventory: mysql.rs and schedule_list.rs, incorporating the accepted #1031 scalar-summary source. The affected query-source pins/fragments and the vectors' plan hash are updated.

Independent checks confirm every input's Git blob, SHA-256, byte length and actual checkout bytes match 223. All structural catalog/CREATE/ALTER/check data is byte-for-byte equivalent to the prior plan: 60 relations, 36 affected tables, 75 columns/unique checks, 24 query sites, 22 observation families, 72 table interruption cells and seven unchanged numeric carriers. Candidate catalog hash remains 4396886a2273c22d37aee3754a0398b4104021a2a8b5d83c7517c950794fc902.

  • Plan: 202,596 bytes, SHA-256 060a615e62b1a893f668e43193dbb1a49541ec6816f68e723efe6d76b93a3ce3.
  • Vectors: 24,672 bytes, SHA-256 727f7938ac831aff5ba426235dbf8841864e368844abdabfe3e18e13bb36e587.

Schema target version/checksum remain null; runtime/execution remain false. README distinguishes ordinary planning-source checks from separately gated privileged upgrade effects. Source/whitespace/changed-line credential-pattern checks pass. Server owns the eventual actual-main refresh/ordinary checks and remaining versioned bootstrap, catalog, resume, query/reader implementation. No SQL/DDL, database/container, backend probe, upgrade or artifact operation was run.

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant