Protocol APIの使い方

簡単なまとめ。

  1. ProtocolオブジェクトをTHDからもらう。
  2. ItemオブジェクトのListを作る。Item = カラム。複数カラムの場合には、複数個のItemを詰め込む。
  3. Protocol::send_fieldsメソッドで上記Listを送る。ここでクライアントへ一度パケット送信。
  4. Protocol::prepare_for_resendメソッドを呼び出す。
  5. Protocol::storeメソッドで任意のデータを結果セットに詰め込む。複数カラムの場合、その数だけstoreすること。
  6. Protocol::writeメソッドでクライアントへ結果セットを送信。4〜6で1行分。複数行データがある場合には、4へ戻る。
  7. send_eof関数を呼び出して、結果セットの送信が終わったことをクライアントへ通知。

Itemにはいろんな継承クラスがあるので、それらを用途に応じて選んで使う。

まあ、この辺に書いてあるclient/serverプロトコルに乗っ取って書くということです。
http://dev.mysql.com/doc/internals/en/client-server-protocol.html

それはそうと、ひさびさにInternals Manualみたら、またいくつか加筆されてた。Handler SPIのリファレンスっぽいのとか。
http://dev.mysql.com/doc/internals/en/custom-engine-api-reference.html