Kouhei Sutou
kou****@clear*****
2015年 11月 19日 (木) 15:36:34 JST
須藤です。 In <20151****@orega*****> "[groonga-dev,03664] PostgreSQLのバックアップ&リストアでエラー" on Thu, 19 Nov 2015 13:21:27 +0900, 高見 直輝 <takam****@orega*****> wrote: > Pgroongaを1.0に上げるついでにPostgreも9.3から9.4にしようとテーブルのバッ > クアップ&リストアをしようとしたところ、リストアの実行時に以下のエラーが > 発生しました。 > could not execute query: ERROR: syntax error at or near ")" > 行 1: ...H (tokenizer=TokenBigramSplitSymbolAlphaDigit, normalizer=); > > エラーとなったテーブルでは、Pgroongaのインデックス定義のWITH句にて以下の > 設定を行っています。 > WITH (tokenizer='TokenBigramSplitSymbolAlphaDigit', normalizer='') > normalizerに空の文字列を指定したのが、エラーとなっている原因のようです。 > ※この定義を外した状態で作成したバックアップからリストアしたところ、エラー > は発生しなかった。 報告ありがとうございます。 ただ、これはPGroongaではなくpg_dumpのバグだと思います。 オプションの値が空文字列のときはnormalizer=''のように出力す るようにしないといけないと思います。 PostgreSQLにバグレポートしておいてもらえないでしょうか? http://www.postgresql.org/support/submitbug/ > テーブル&インデックスを予め作成しておき、それに対してリストアを実行する > ことでエラーを回避できましたが、互換性を損なわない範囲で何らかの対応はし > ておいた方が良いと思います。 pg_dumpを直すのがスジですが、PGroonaの方にも回避策を入れてお きました。normalizer='none'でも「ノーマライザーを指定しない」 という意味になります。これならクオートなしでも不正なSQLにな りません。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/