x protocolはどんな感じか
MySQL 4.1くらいの時からMySQLの通信プロトコルにはObsoletedなフィールドが多かったのでX protocolではどうなのか探してみた
protocol bufferの構造体?の定義は結構変わっていて、それなりに効率的なものになっていそう。 相変わらずtotal_length[3], message_type[1]の4バイトが先頭にあるのは変わらないようだけど、message_typeを見るとCRUD_FIND, CRUD_INSERT,...というCRUDを表しそうなフィールドが見えるので、queryをそのまま文字列で送るとかっていう非効率なことは指定なさそう。
protocol bufferの定義は現在はX pluginとしてプラグインで提供されていて、コードだと、mysql-server/plugin/x/protocol 以下で見れる。 golangだと公式のSQLドライバーでは対応していないようで、ggるといくつかは出てくる。これとか
protocol bufferを言語側で扱うかよくわかっていないのだけれど、(上記のgo-mysqlx-driverだとmarshalしてる)Rust入門したらこういうところ作ると使われて良さそうと思った。