DROP EVENT処理概要

MySQL 5.1で追加されたDROP EVENTコマンドの処理内容を説明します。

SQLコマンド

DROP EVENTを発行すると内部的にSQLCOM_DROP_EVENTが発行されます。

ディスパッチ先

SQLCOM_DROP_EVENTに対しては、Events::drop_event関数の呼び出しが行われます。

Events::drop_event関数

処理の流れはこんなところ。

  1. 現在トランザクションが有効な場合は終了させます
  2. Rowベースのバイナリログを出力している場合にはStatementベースのバイナリログに切り替えます(このクエリに関して)
  3. mysql.eventテーブルから対象のEventを削除します
  4. Eventのキューがある場合には対象のEventを削除します
  5. バイナリログに書き込みを行います

直接mysql.eventからDELETEした場合には、上記1,2,4が行われないので何らかの不具合がでる場合があるかもしれませんね。