MySQL 5.7のJSON型がConnector/Jから使えないはなし

こんにちは、ぬいぐるみが好きな方のDBAです。
MySQL 5.7では JSONデータ型 がサポートされ、今までTEXT型やBLOB型にJSONを入れていたのに比べて
- バイナリーフォーマット(らしい)
- 容量が小さいのでTEXT型に比べて基本的にレイテンシーが低い
- 何も考えなくても4バイト文字も入る
というメリットがあります。
( ´-`).oO(Generated Columnでインデックスが張れるとか、json_*関数でアクセスできるとかはTEXT型でもできるのでJSON型のメリットじゃないし、型としてのバリデーションも生JSONを自分で組み立てることはほとんどない(ライブラリー通すから)からあんまり旨味を感じない。。
というわけでwktkしながら作ったんですよ、JSON型カラム。
そしたら。
ギョザー: とりあえずConnector/JのあとのDBアクセスライブラリの結果はStringで、文字化けている とうふ : JSONをパースして突っ込むところからJavaで試してみていただきたい とうふ : Death とうふ : http://bugs.mysql.com/bug.php?id=80631 とうふ : コンソールからは見えます ギョザー: 流れてるパケット見る限りUTF-8な文字列がちゃんと来てますね ギョザー: エンコードせずにINSERTしたやつも問題はない ギョザー: https://github.com/mysql/mysql-connector-j/blob/5.1.38/src/com/mysql/jdbc/ResultSetImpl.java#L5284 ギョザー: ここでISO-8859-1が返ってきてて、それで処理されちゃってる
IDEで何か(よくわからぬ。。)を走らせて、文字化けされたデータを見せてもらうと、utf8な文字をlatin1(ISO-8859-1)として表示した時によくある感じの化け方をしてた。
こんなかんじ。
1 yoku0825 {"role": "MySQLおじさん"} 1 yoku0825 {"role": "MySQLa??a??a??a??"}
あいやー(´・ω・`)
取り敢えずその時見付けた Bug#80631 の “Affects Me” をポチるも、元のレポーターがどこかに行ってしまって、”No Feedback”のステータスで漬物化。
しかし俺には再現コードを書く能力はない。ついでに祖父が他界した。ガッデム。とかなってたら、ギョザー氏が再現コード作って 援護射撃 してくれました。
Connector/J で MySQL 5.7のJSON型を使ってみたいと思う日本の方は”Affects Me”していただけると幸いです。ってか、してもらえないと多分未来永劫日本語でこの組み合わせが使えないので何卒どうぞ。。
MySQL Bugs: #80631: ResultSet.getString return garbled result with json type data
専門分野が全然違うギョザー氏とDBAとでごちゃごちゃ話しながら、1つの問題に立ち向かったのが何となくちょっと楽しかったのでした。