Closed genki closed 11 years ago
Fooのキーの型を教えてもらえますか?(ShortTextかしら。) あと、Bar.id_numberの型とサンプルデータをいくつかもらえるとさらにうれしいです!
キーの型は無指定なのでデフォルトですね。 :key_type => :uint32 とかにしたら個人的には問題は解決するのですが、 デフォルトのkey_typeの場合でdumpしようとすると問題が発生するので ひとまずご報告まで。
Fooの:typeは:hashで、:key_typeは無指定なんですね。
そもそも、インデックス用のテーブルのキーとインデックス対象のカラムの型を揃えないとうまく動かないはずなので、そのケースにはあんまりがんばって対応しなくてもいいかなぁという感じです。例えば、Fooのキーの型がShortTextでBar.id_numberの型がShortTextでもTextでもLongTextでもないケースです。
それはそれとしてバイナリデータが入ったText系の値をダンプできるようにするのはがんばってもいいかなぁという気はします!が、意図的にバイナリデータなのかうっかりバイナリデータなのかを判断するのが難しいんですよねぇ。
今は、全部UTF-8として正しい文字列が入っているとして、不正な文字が入っているかどうかを明示的にvalid_encodig?して確かめています。
了解です。 とりあえずどうしても必要なケースは思いつかなかったのでcloseしときますね。
はい! 実は、今でも1つバイナリデータが入るケースがあるんです。それは、mroongaでマルチカラムインデックスを使った時です。でも、そのときはmysqldumpするよなぁ、というのでgrndumpは使わなそうなんですよねぇ。
grndump コマンドを利用して、key がバイナリデータになるような index を含むテーブルをダンプしようとすると、大量に "ignore invalid encoding character" という warning が出るようです。問題が発生するのは以下のようなindexを含む tableです。
groonga コマンドで dump する場合には warning が発生しないので、rroonga 側で バイナリデータとして扱うべき key を文字列として扱ってしまっているのではないかと思います。