mysqldとりあえずブレークポイント置いてみるところメモ

do_command()                        ★
 ->my_net_set_read_timeout()
 ->clear_error()
------ここでクライアントからの接続を待つ
my_net_set_read_timeout()
dispatch_command(): (sql_parse.cc)  ★
 (この中で switch(command) によって処理の種類が case 分けされている)
 (クエリの場合は COM_QUERY: にひっかかって以下)
  mysql_parse()                   ★
  Query_cache::send_result_to_client(): (sql_cache.cc) ★A★
  mysql_execute_command()         ★
   handle_select(): (sql_select.cc) ★B★


★A★でまずクエリ処理の冒頭でクエリキャッシュの確認。
(ただし特にパラメタ設定していない場合は query_cache_size=0なのですぐに戻る)


★B★は各クエリ内容に応じて sql_*.cc の handle_*() 関数で処理される
(例: sql_update.cc, sql_insert.cc)


その他メモ:
 debug オプションをつける(私は my.ini に記述した)と、実行中のドライブのルートに
mysqld.trace ファイルが作成される。(私の場合は D:\mysqld.trace)


.