弱小システム屋が使う技術メモと他色々

主に自分用な技術メモが多くなる気がする。他色々が書かれるかどうかは不明。

MySQLのソースを見てBugFix詳細を確認する

MySQLのBugFix情報少な過ぎないか…詳細な更新情報を確認する方法のメモ。

概略

なぜ確認したいのか

MySQLをバージョンアップしたらアプリの挙動が変わった。
どこがどう変わったか詳細を確認しようぜ!って意図。

調査に至った経緯

  1. MySQLバージョンアップしたらAPの挙動が変わる。
  2. ReleaseNotesでそれっぽいものはあるけど、書いてある文章だと挙動の変化が素直に一致しない。
  3. バグやFixの詳細情報が欲しいので、安易にMySQL バグIDググる
  4. とにかく詳細情報が出てこない。MySQL BugsでID検索しても見つからない。


なんだこれは…見つからないとはどういうことだ。

No such bug #xxxxxxx or bug is referenced in the Oracle bug system.

ってあるし、MySQL BugではなくてOracleが管理してるってことなのか?ってことで色々調査。

どこから確認するか

MySQL Bug バグIDで検索しても見つからないので却下。
Oracle公式 Oracleのアカウント作ってログイン。探したけどMySQL関連サポートのページやOracle bug systemが見つからない。却下。
ソースと更新履歴 オープンソースだしgithubにある。これでいく。

自分がやった確認方法

環境

Windows7 Home 64bit
Eclipse 4.6.3(Pleiades All in One)

Gitからソースをインポート

筆者は今日日でGit初心者というやばさ。こちらを参考にしながらEclipseへインポートしてみる。

  1. Eclipseを起動。
  2. ファイル(F)インポート(I)GitGitからプロジェクトURIの複製
  3. URI(I)git://github.com/mysql/mysql-serverと入力する。他のところも勝手に埋まるので次へ。
  4. ブランチの選択画面が出るので適切に選択。今回は5.5で調べたかったのでここだけチェック残して次へ。
  5. ローカル保管場所の選択。とりあえず自分はデフォのままで問題なし。そのまま次へ。
  6. オブジェクトの受信中と出るのでちょっと待機。この間に裏ではgithubから色々落としてるわけか。
  7. 受信が終わったら一般的なプロジェクトとしてインポート(G)*1を選択して次へ。
  8. プロジェクト名を決めて完了。今回はデフォルトのままmysql-serverで。

これでgit clone(のはず)したMySQLソースコードEclipse上で操作できるようになった。有名どころのOSSリポジトリがこんな感じで覗けるのか。この手軽さはいいなとか考えながら作業継続。

コミット履歴から更新内容を確認

さて、本題の差分確認。
GitのコミットログからBugFixに関連するものを確認してみる。

  1. パッケージ・エクスプローラーから右クリックメニューを開く。
  2. チーム(E)ヒストリーに表示(O)
  3. コミットログが出るので検索ツールバーを表示をクリック。
  4. 検索ツールバーへおもむろにバグIDを入力。

さあどうだ…ちゃんと出た。よかった。
ソースの差分は当然見られるとして、コミットコメントにご丁寧にIssueに対するSolutionまで書いてあるじゃないか。*2
ということでMySQLバグの詳細が確認したければ、公開リポジトリのコミット履歴を追えばなんとかなるとわかりました。

余談

だいぶ前にEGit使ったときは、ヒストリーの表示が崩れて見れたもんじゃなかった。今回どうかと思ってたけどきれいに表示してくれて文句なし。
調べるとそれっぽいバグレポートもあるようなので、修正されてたぽい。

そもそも調査方法は正しかったのか

まあリポジトリ公開してるなら、どんな変更が入ったかわかるのはある意味当然。(開発側がまともなGit運用してるのが前提)
他の確認方法がなかったのか気になるところ。自分の検索能力が低かっただけで、もっと単純な方法があるなんてオチでなければ良いのだけれど。

*1:ソースはC++だったが自環境はC++対応させてない。対応させてるならそれに合わせたプロジェクトの方が良いと思う。ただ、Eclipseプロジェクトとしていい感じにインポートできるかは不明。

*2:Solutionの記述でも納得いかないレベルだから結局ソース見たけど…ReleaseNotesだけよりはるかにマシ