2011-08-25 49 views
6

我有一個postgresql表,其中有一個數據類型='文本'列,其中我需要創建一個索引,涉及此類被轉換爲整型[]類型。但是,每當我嘗試這樣做,我得到以下錯誤:在文本列創建postgresql索引到數組

錯誤:在索引表達式功能必須註明IMMUTABLE

下面是代碼:

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[]  )); 

需要注意的是一個潛在的解決方法是創建一個標記爲IMMUTABLE的函數,它接收列值並在函數中執行類型轉換,但問題(除了增加開銷)是因爲我有許多不同的「目標」數組數據類型(EG:text [],int2 [],int4 []等等),並且不可能爲每個潛在的目標數組數據創建單獨的函數t YPE。

+0

那麼你的問題是什麼? ;-) –

+1

在郵件列表中也詢問了這個問題。如果你在Stack Overflow和郵件列表上提出問題,請說*你已經完成*並從郵件列表文章鏈接到Stack Overflow文章和/或從你的堆棧溢出問題鏈接到存檔列表文章。 [編輯:鑑於發佈日期的不同,可能是別人幾乎完全相同的問題。我的錯。] –

回答

2

在PostgreSQL郵件列表上回答了in this thread。在帖子後面的鏈接中點擊「跟進」或「下一個主題」,以跟隨主題的(簡短)主題。

這裏沒有配方,但湯姆只是談論定義明確的演員從text[]integer[]。如果時間允許,我會用一個例子來豐富這個答案。

相關問題