tombo2-progress’s diary

できるだけ毎日1時間を切り取ってここに晒す。誤字脱字気にしない。日本語が崩壊するのも気にしない。最終的にまとめて本ブログに書く

if more data ってなに?

Protocol::HandshakeV10の if more dataってなに?

ココらへんはMySQL本体がどうやってパースしているか確認しないと行けない

0xfeのときのOK_PacketとAUTH_SWITCH_REQUESTの判別が難しくて、これは1こずつパースしてどっちかとしてうまくパースできないかどうかで判断するしかないかと思ったが、https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html ここにOKパケットとEOFパケットの見分け方として以下のような説明が合ったので、とりあえずOK_PACKETは0x00で始まるものと想定してパースする.

These rules distinguish whether the packet represents OK or EOF:
OK: header = 0 and length of packet > 7
EOF: header = 0xfe and length of packet < 9

com_field_list来たときにそのmysql_packetの長さは1で皇族のmysql_packetでフィールドが入ってくる場合が合って爆死する。 これドキュメントにない気がするしどうしたものか困る

単純にResponse系のパケットのパースが不十分な感じがした

MySQL :: MySQL Internals Manual :: 14.6.4.1 COM_QUERY Response