2011-08-25 9 views
6

için demir metin kolonu üzerinde Postgresql dizin oluşturmak. Ben bunu yapmaya çalıştıklarında, aşağıdaki hatayı alıyorum:I [] tamsayı döküm bu sütun olmak türünü içeren bir dizin oluşturmak için gereken veri tipi = 'metin' olan bir sütunu olan bir Postgresql tablo dizisinin

HATA:

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

Not bu bir potansiyel geçici çözüm: Dizin ifadesinde fonksiyonları IMMUTABLE işaretlenmesi gerekir Burada

kodudur metin: bir sütun değeri alır ve işlev içindeki tipi döküm gerçekleştirir değişmez olarak işaretlenmiş bir işlevi, ancak (yükü ilave kenara) problem oluşturma I (EG birçok farklı 'hedef' dizi veri türleri sahip olmasıdır [], int2 [], int4 [], vs ...) ve her potansiyel hedef dizi verileri için ayrı bir fonksiyon yaratmak mümkün olmaz. ype.

+0

Sorunuz nedir? ;-) –

+1

Bu, cevap verildiği posta listesinde de sorulmuştur. Hem yığın taşması ve posta listesinde bir soru sorarsanız, * Eğer yığın taşması sorudan arşivlerde listesi gönderim için posta listesi gönderim ve/veya bağlantıdan yığın taşması yazılan * ve bağlantı yapmış böylece söylüyorlar lütfen . [Düzenle: Postalama tarihlerindeki fark göz önüne alındığında, muhtemelen başka biri tarafından neredeyse aynı soru. Benim hatam.] –

cevap

2

PostgreSQL posta listelerinde in this thread numaralı telefonu yanıtladı. Konuyla ilgili (kısa) ileti dizisini takip etmek için yayından sonra linklerde "Takipler" veya "Konuya göre" üzerine tıklayın.

Orada verilen bir reçete yok, ama Tom sadece text[] ile integer[] arasındaki bir açık döküm tanımlamaktan bahsediyor. Zaman izin verirse bu cevabı bir örnekle çözeceğim.