go-sql-caller-annotation: GoでSQLに呼び出し元の情報をコメントとして埋め込む

github.com

というのを書いた。ご利用ください。

スロークエリを解析する時に「このクエリ、アプリのどこから呼んでいるんだろう?」と調べたいことがよくある。
だいたい遅いクエリって長くて複雑だったりするのでいちいち横に縦にスクロールして全容を把握してgrepするのも地味につらい。

ISUCONに向けてほしいねーって話になったので書いた。

PerlDBIを使っていた時にはDBIx::Tracerを使ったりして実現できていたので、Goでもやりたいと思って書いた。

やっていることは、database/sql/driverのラッパ実装を作っている。仕事は実際のドライバ (go-sql-driver/mysqlとかpqとか) に任せていて再実装ではないからDBへのアクセス部分にまったく不安はないと言っていいと思う。

この実装方法はaws-xray-sdk-goから借用した。Apache License 2.0を継承したりコメントやNOTICE.txtにもきちんと書いたつもりだけれども、もしライセンス上の不備があれば教えてください:

aws-xray-sdk-go/sql_context.go at master · aws/aws-xray-sdk-go · GitHub

どうぞご利用ください。