Repository navigation
feat: 分階段加入雙向跨版本與可驗證跨引擎邏輯搬移 - #45
Conversation
原先只接受新引擎搬到舊引擎,讓相同結構的升版與同版本搬移也被拒絕。保留型別白名單、同定序、空目標與交易內容驗證,開放 2016–2025 的雙向組合,並調整 Windows 入口名稱。 補上 25 組預檢和交易 mock;這不代表真實跨版本矩陣已通過,也不改變新版備份不能原生還原到舊引擎的限制。
一般資料傳輸與 SQL 對映無法保證跨引擎結構、內容和重試安全,所以另加受限搬移入口。第一階段只接受 STRICT INTEGER/BLOB 與 bigint/bytea、NULL/NOT NULL;正式 catalog 發現鍵、索引、預設值、觸發器等不支援語意就拒絕,不靜默漏掉物件。 預覽固定來源內容與實際版本,確認完整新空目標後重新預檢,分批寫入單一交易,再校驗型別、結構與內容多重集合。取消等待實際停止;提交結果不確定時禁止盲重試。獨立連線沿用設定工廠及 SSH owner,沒有從已隱去密碼的連線字串重建。 本機 33/33 smoke 與正式 Avalonia handlers 回歸通過,涵蓋真 SQLite 部分寫入回滾、取消、真正提交後 ack 遺失及 UI gate。另加入既有隔離 PostgreSQL 16 CI fixture 的雙向內容及 catalog 回歸;歷史版本與真 SQL Server 跨版本矩陣尚未驗證。
整理 1.0.0.23 候選版號、受限搬移說明與建置證據,避免把 mock 當完整真機矩陣。發布仍須這輪獨立驗收和精確 SHA CI;沿用既有原子版更、九資產與簽章流程,本次不改版號、不打 tag,也不觸發發布。
|
精確 head 另外以審查者提供的 Review.csproj 與隔離 fixture 複製品,搭配本次 Core DLL 重跑暖機後 5,000,000 次 recursive 查詢:ExecuteAsync 呼叫 0ms 返回且 task 未完成,53ms 觀察取消。沒有改動原始審查 fixture。 仍未測 SQL Server 25 組真跨版本矩陣、Windows MSSQL 搬移器 SQL auth+SSH 真機、PostgreSQL 14/15/17 與 SQLite 歷史 minor。既有 provider 的 SQL Server TLS/SSH live 通過不代替 MSSQL 搬移矩陣。本輪獨立驗收與發布最終指示仍待外部核對;現在不發布、不版更。 |
|
合併後主線精確 SHA |
這次範圍
延續已合併 PR #42、#43、#44,不重做四項補正。SQLite SQL 背景執行與真正取消已在 #44 合入;這次加入分階段搬移功能。
已實際驗證
明確限制
SQLite 本機實測 3.53.3;SQLite 3.37–3.52 歷史 minor、PostgreSQL 14/15/17、SQL Server 真跨版本與 SQL auth+SSH 真機皆未完成矩陣。MySQL/MariaDB 的 implicit-commit DDL 需不同 staging/恢復設計,未加入此 verified 路徑;SQL Server 與其他引擎、Oracle/Snowflake、MongoDB/Redis/Garnet 也未支援,服務連線前拒絕。不是任何資料庫任意版本無損 restore,也不是無限制 bacpac 降版。
詳見 docs/LOGICAL_MIGRATION_MATRIX.md。來源需隔離副本/維護時段;工具 advisory lock 不等於其他管理者會遵守它。沒有連使用者真 DB、沒有正式部署。
發布準備
建議下一版 1.0.0.23,但等待整輪獨立驗收、待發布精確 SHA CI 與最終發布指示。本 PR 不改版號、不打 tag、不加 Release-Now、不 dispatch force;九資產及既有簽章流程不變。