我剛搞好了一個 MySQL 解析器,之後會用在 MIST 裡面。
事情是這樣的:TiDB 的 MySQL 解析器是目前最兼容 MySQL 的解析器了,但它要完美運行, 要依賴一個叫 "parser\_driver" 的包。Parser Driver 裡面有 TiDB 的類型,但 TiDB 官方貌似不打算把這些跟 TiDB 糾纏很深的 MySQL 類型單獨拆出來做成獨立的 Go 包。GitHub issue: 16381
我覺得 TiDB 現在就是把所有開源模組全部混在一起,搞成一個 opininated monolith 。
我在把 MIST 移植到 WASM 的時候,TiDB 的系統調用會被莫名其妙地包進來一起編譯,結果在編譯 WASM 的時候靜態鏈接就掛了。
所以我花了幾天把現有的 parser 包和 parser driver 給拆出來,把那些糾纏不清的 TiDB 類型重新整理成一個真正能用的 MySQL 解析器 Go 包,這個包可以跨平台編譯,也能移植到 WASM 。
代碼庫: https://github.com/abbychau/mysql-parser
在線解析器演示: https://abbychau.github.io/mysql-parser/
事情是這樣的:TiDB 的 MySQL 解析器是目前最兼容 MySQL 的解析器了,但它要完美運行, 要依賴一個叫 "parser\_driver" 的包。Parser Driver 裡面有 TiDB 的類型,但 TiDB 官方貌似不打算把這些跟 TiDB 糾纏很深的 MySQL 類型單獨拆出來做成獨立的 Go 包。GitHub issue: 16381
我覺得 TiDB 現在就是把所有開源模組全部混在一起,搞成一個 opininated monolith 。
我在把 MIST 移植到 WASM 的時候,TiDB 的系統調用會被莫名其妙地包進來一起編譯,結果在編譯 WASM 的時候靜態鏈接就掛了。
所以我花了幾天把現有的 parser 包和 parser driver 給拆出來,把那些糾纏不清的 TiDB 類型重新整理成一個真正能用的 MySQL 解析器 Go 包,這個包可以跨平台編譯,也能移植到 WASM 。
代碼庫: https://github.com/abbychau/mysql-parser
在線解析器演示: https://abbychau.github.io/mysql-parser/