Repository navigation
後續第二階段:邏輯搬移有界讀取、文字與主鍵索引 - #46
Merged
Merged
Conversation
原本先 GetValue 再檢查大小,超大 BLOB 已配置完整陣列才拒絕。改成 SQL 長度與 CASE 限額投影,先檢查單欄及累計預算,才讀取有界內容;PostgreSQL 分段讀取,SQLite 避免 expression 欄位的 GetBytes metadata 原生錯誤。隔離 SQLite 證明 32 MiB 欄位不配置完整 managed 陣列且空目標不變,1 MiB 邊界可正常搬移。
第一階段只有整數與二進位且拒絕所有鍵索引,無法搬移帶文字的常見業務表。新增 SQLite BINARY 與 PostgreSQL C 的有效 UTF-8 文字映射、明確非自增主鍵與升冪普通索引,正式 catalog 檢查定序、opclass、NULL 排序及特殊索引;不支援的語意仍在寫入前拒絕。 主鍵與索引加入確認 fingerprint、DDL 預覽及提交前結構驗證,索引建立後取消與索引遭修改都整批回滾。隔離 SQLite 與正式 Avalonia handlers 已通過文字、PK、索引與有界讀取回歸,PG16 fixture 新增雙向業務表與 catalog 測試,由本次 CI 驗證。矩陣分開說明 MySQL/MariaDB 的 implicit DDL commit、SQLServer 的定序與型別轉換障礙,不宣稱全引擎完成,也不發版。
NULL 與空欄位也佔快照空間,至少計入八個位元組,避免大量空值繞過總量限制。加入 PostgreSQL 真實 fixture 的 32 MiB 拒絕與 1 MiB 邊界搬移,確認大欄位不會先完整傳回應用程式。 不支援的 expression 索引測試改用取餘數,避免 Int64 最大值在建立測試索引時先溢位,讓測試確實走到 catalog 預檢。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
這次修改
本機新程式碼驗證
後續補正與證據
ccef849a51fa633cfffcadf11a6b11a40d3ff7f1。NULL/空欄位最少計入 8 bytes 快照預算,避免總量限制被大量空值繞過。f855298的 Linux live CI 失敗:expression 索引 fixture 的number+1遇 Int64 最大值溢位,尚未走到 catalog 檢查;已改用number%2,新 head 重新驗證。不把該失敗 run 或 PR45 舊 SHA 當本輪通過。implementation-evidence/pr46-ccef849,不覆寫獨立驗收日誌。38514604603(Linux x64、ARM64、macOS Intel、Apple Silicon);Windows Desktop38514604621。Linux x64 真實隔離 live suite 56/56,包含新增 SQLite↔PG16 文字/PK/索引與 PG 大欄位測試;一般 MySQL/MariaDB/SQLServer provider round-trip 不等於這些引擎已支援跨引擎邏輯搬移。9a7d84c60ecb4abe4d499c1e8a8c79fa3bdfdb17,三筆提交均包含在遠端主線;工作目錄乾淨,merge tree 與 PR head 一致。合併 SHA 的五項 CI 亦全部成功:Windows38515397465、Cross-platform38515397616;live suite 再次 56/56。Auto Release Gate38515397418明確 ShouldRelease=false,沒有發布。限制與發布
真 SQLServer 跨版本/SQL auth+SSH、PG14/15/17、SQLite 歷史版本、MySQL/MariaDB 跨引擎未實測。只 synthetic/mock/隔離 fixture,不連使用者資料庫、不讀秘密、不部署。不版更、不 tag、不觸發 Release-Now,待使用者獨立驗收。這是 PR44/45 合併後的小範圍補正,不重做已驗收四項。