2011-08-25 4 views
6

データ型= 'text'の列を持つpostgresql表があります。この列には、この型がinteger []にキャストされた型に関するインデックスを作成する必要があります。しかし、私はそうしようとするたびに、私は次のエラーを取得する:配列にキャストされたテキスト列にpostgresqlインデックスを作成する

ERROR:

create table test (a integer[], b text); 

insert into test values ('{10,20,30}','{40,50,60}'); 

CREATE INDEX index_test on test USING GIN (( b::integer[]  )); 

注1個の潜在的な回避策こと:インデックス式の関数はここIMMUTABLE

をマークしなければならないコードがありますIMMUTABLEとしてマークされ、関数内で型キャストを実行するIMMUTABLEとしてマークされた関数を作成することですが、(オーバーヘッドを追加する以外の)問題は、多くの異なる 'ターゲット'配列データ型(EG:text []、int2 []、int4 []など)、潜在的なターゲット配列データごとに別々の関数を作成することはできませんype。

+0

あなたの質問は何ですか? ;-) –

+1

これもメーリングリストで尋ねられました。 Stack Overflowとメーリングリストの両方で質問をした場合は、*あなたがそうしたと言って、メーリングリストの投稿からスタックオーバーフローポストにリンクしたり、スタックオーバーフローの質問からアーカイブ内のリストポストにリンクしてください。 [編集:投稿日の違いを考えると、おそらく他の誰かがほぼ同じ質問。私の悪い。] –

答えて

2

PostgreSQLのメーリングリストでin this threadが返されました。ポストの後にあるリンクの「フォローアップ」または「スレッド別に」をクリックして、トピックの(短い)スレッドに従います。

そこにはレシピはありませんが、トムはちょうどtext[]からinteger[]への明示的なキャストを定義することについて話しています。時間が許せば、私はこの答えを肉体にするでしょう。

関連する問題