簡體   English   中英

在已轉換為數組的文本列上創建postgresql索引

[英]Create postgresql index on text column casted to array

我有一個postgresql表,其中有一個數據類型為'text'的列,我需要在其中創建一個索引,該索引涉及此類的類型被轉換為integer []。 但是,每當我嘗試這樣做時,我都會收到以下錯誤:

錯誤:索引表達式中的函數必須標記為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 []等...),並且不可能為每個潛在的目標數組數據類型創建單獨的函數。

PostgreSQL郵件列表的這個帖子中回答。 點擊帖子后鏈接中的“后續”或“下一個帖子”,跟隨主題的(簡短)主題。

那里沒有給出配方,但是湯姆只是在談論從text[]integer[]定義一個顯式的強制轉換。 如果時間允許,我會用一個例子來解釋這個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM