我剛搞好了一個 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/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://ex.noerr.eu.org/t/1142073
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.