Skip to content

feat: 補上 MySQL/MariaDB 新舊版搬移與封包及真子程序終止回歸 - #52

Merged
NickYCLin merged 2 commits into
masterfrom
feat/mysql-mariadb-version-migration
Oct 14, 2026
Merged

NickYCLin merged 2 commits into
masterfrom
feat/mysql-mariadb-version-migration

Conversation

@NickYCLin

Copy link
Copy Markdown
Collaborator

改了什麼與原因

  • 08 接續 PR50/51,不重做 07:開放 MySQL Community 8.0 ↔ 8.4、MariaDB 官方 binary 10.11 ↔ 11.4 的既有受控子集,補齊使用者新↔舊需求。
  • 沿用來源鎖定、完整 catalog/DDL grammar、byte-aware batching、專屬 staging、schema/SHA256、單次 RENAME 及發布後校驗;核對 VERSION/version_comment,未知 fork、MySQL↔MariaDB 仍拒絕。
  • 保留固定 PRIMARY 與表內具名索引,PG 自訂 PK 名稱 blocker 僅對 PG 來源;表內重複索引名稱可往 MySQL,往 PG 的全域碰撞仍拒絕。
  • UI 明列 MySQL 8.x 僅 8.0/8.4 並預覽完整版本,MariaDB 10.11/11.4 各自選取;文件區分程式範圍與實機證據。
  • 獨立 test commit 加正式 ProjectReference Core 的 packet/Process.Kill harness;兩個目的分開提交。

本機實際驗證

  • Release build 0 errors(12 個既有 warnings);跨平台 smoke 33/33;Xvfb 正式 Avalonia handlers、busy/lease/ownership 與版號選項通過。
  • versions:MySQL 8.0.46→8.4.11→8.0.46、MariaDB 10.11.19→11.4.13→10.11.19,各1007列+空表、PG16 seed/roundtrip;複合整數PK、nullable bigint具名index、UTF8/emoji/NULL/空text/binary/Int64極值、真重複PK拒絕及production schema/SHA256均通過。
  • 另測兩引擎 batch fault殘留/RetryBlocked、fresh preview拒絕、同列數stale source DDL前拒絕/0物件、major/self/cross-fork拒絕及表內index名稱範圍。
  • boundaries:MySQL8.4.11/MariaDB11.4.13 的8MiB target,100列各128KiB binary+128KiB UTF8 text(25MiB),各15 batches且往返Verified。64KiB target:1007小列+空表Verified,128KiB欄位preflight拒絕/0物件。
  • 真正自己啟動的子程序在staging/未提交batch/published三界線Process.Kill(兩引擎各三例,Linux exit137);重啟production preview拒絕且未修改物件;batch無提交列,published1007列+空表可反向校驗。
  • regular既有production回歸通過:PG自訂PRIMARY及ON CONFLICT、staging/fault/retry/catalog/大BLOB/pre-cancel。初次regular fixture被本輪8MiB配置阻擋16MiB setup,已恢復regular原配置後全過,沒有改產品限額。
  • evidence含image digest、正式來源hash與cleanup,位於 /tmp/mysqlpunk-08-final-versions、/tmp/mysqlpunk-08-final-boundaries、/tmp/mysqlpunk-08-final-regular-retry;所有自有容器已清理。
  • 本機provider全套啟動遇TiDB image下載網路錯,正常重試仍失敗;未稱本機56/56,待此head Linux CI正式補驗。

邊界與未測

  • 僅signed BIGINT/LONGTEXT NO PAD binary/LONGBLOB、整數PK/普通index;FK/default/identity/decimal/time/procedures/triggers等仍精確預檢拒絕,不承諾任意schema/版本無損。
  • 未測engine crash/power loss;上述只application process kill,例外注入不算真crash。舊版兩引擎未跑真kill矩陣。
  • 新舊版actual只上述四個版本,不是全部patch或MySQL↔MariaDB。PG舊版直接配對未擴大;PG16一表四列歷史fixture、SQLite1005列fault與provider56全套各自保留證據界線。
  • PR50既有四引擎SSH/TLS證據不當成本輪重跑;此UI回歸不是真SQL auth+SSH Windows人工點擊。
  • Windows smoke/build待此head CI;MSSQL export LocalDB opt-in在本機Linux未跑,歷史2026-10-13 child PID31748來源仍在verification.md,原local-only證據此環境不在,不稱本輪真crash重跑。
  • Release HOLD:不版更、不tag、不Release-Now/dispatch、不部署,等待獨立驗收。

提交

  • be54eff test: 納入搬移封包邊界與真正子程序終止回歸
  • dbafdd6 feat: 支援 MySQL 與 MariaDB 同引擎新舊版受控搬移

新head CI全部成功且正常review/protection允許後才合master;不繞過審查。

以正式 Core 在自有 MySQL 與 MariaDB 容器驗證 8MiB 分批、64KiB 單列寫入前拒絕及三個階段的 Process.Kill。重啟預檢必須拒絕非空目標、未提交資料不可殘留,發布後另做內容校驗,避免把小封包測試或注入例外當成實際 crash 證據;不宣稱引擎斷電恢復。
沿用來源鎖定、專屬 staging 與結構及內容校驗,補上 MySQL 8.0/8.4、MariaDB 10.11/11.4 雙向搬移,避免只支援換引擎卻無法搬回舊版。核對完整版本與官方引擎標記,修正 PRIMARY 與表內索引名稱的方向檢查;未知 fork、跨家族與無法保留的語意仍在寫入前拒絕。

加入正式 Core 容器往返、殘留禁止重試與來源快照失效回歸,更新 UI 選項及實測矩陣。Release build、33/33 smoke、Avalonia handlers 和兩組新舊版、封包、真正子程序終止及既有搬移回歸通過;本機 provider 全套因 TiDB 映像下載失敗未完成,由新 head CI 補驗。版本與發版維持暫停。
@NickYCLin
NickYCLin merged commit 403b913 into master Oct 14, 2026
5 checks passed
@NickYCLin

Copy link
Copy Markdown
Collaborator Author

最終 head dbafdd6 已核對五平台全 success:Cross-platform 38535576575、Windows 38535576625。已讀 Linux job115757520585:兩組 1007列+空表新舊版往返、兩引擎8MiB各15 batches/64KiB拒絕、六個真正Process.Kill exit137、stale/fault/retry/index scope皆PASS;正式Avalonia handlers與provider全套56/56(含四引擎SSH/TLS)也PASS。本機TiDB下载錯誤未當成本機56/56,已由此精確head CI補驗。Windows job115757520503為240 smoke通過;MSSQL export opt-in live integration明確SKIP,snapshot fault模擬不當真crash。主線已正常合併403b91305d1ce76599ccf26cafc956e12b345f47,遠端包含兩個提交,無force/admin bypass;主線CI另行核對。release hold不變。

@NickYCLin

Copy link
Copy Markdown
Collaborator Author

主線最終核對完成:403b91305d1ce76599ccf26cafc956e12b345f47,Windows38536585102、Cross-platform38536585205(四平台)皆success。遠端master包含be54eff及dbafdd6,本機master乾淨並與遠端相同,Core/harness與PR final head無差異。已讀主線Linux日誌核對versions、packet、真Process.Kill及56/56。Auto Release Gate38536585303顯示不發布,AssemblyFileVersion與README仍1.0.0.22;沒有tag或release dispatch。08可供獨立驗收,仍不宣稱任意引擎/版本/schema或engine/power-loss crash均支援。

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.

1 participant