2011-08-25 7 views
6

पर डाले गए टेक्स्ट कॉलम पर पोस्टग्रेस्क्ल इंडेक्स बनाएं मेरे पास एक पोस्टग्रेस्क्ल तालिका है जिसमें डेटा प्रकार = 'टेक्स्ट' वाला कॉलम है जिसमें मुझे एक इंडेक्स बनाने की आवश्यकता है जिसमें इस कॉलम को पूर्णांक में डाला जा रहा है []। बहरहाल, जब भी मैं ऐसा करने के लिए प्रयास करते हैं, मैं निम्नलिखित त्रुटि मिलती है:सरणी

त्रुटि:

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 चिह्नित किया जाना चाहिए

यहाँ कोड है एक ऐसा फ़ंक्शन बनाना है जिसे IMMUTABLE के रूप में चिह्नित किया गया है जो कॉलम मान लेता है और फ़ंक्शन के भीतर प्रकार कास्टिंग करता है, लेकिन समस्या (ओवरहेड जोड़ने से अलग) यह है कि मेरे पास कई अलग-अलग 'लक्ष्य' सरणी डेटा प्रकार हैं (ईजी: टेक्स्ट [], int2 [], int4 [], आदि ...), और प्रत्येक संभावित लक्ष्य सरणी डेटा टी के लिए एक अलग फ़ंक्शन बनाना संभव नहीं होगा ype।

+0

तो आपका प्रश्न क्या है? ;-) –

+1

यह मेलिंग सूची पर भी पूछा गया था, जहां इसका उत्तर दिया गया था। यदि आप स्टैक ओवरफ़्लो और मेलिंग सूची दोनों पर एक प्रश्न पूछते हैं, तो कृपया * कहें कि आपने ऐसा किया है * और मेलिंग सूची पोस्ट से स्टैक ओवरफ़्लो पोस्ट से लिंक करें और/या अपने स्टैक ओवरफ़्लो प्रश्न से अभिलेखागार में सूची पोस्ट से लिंक करें । [संपादित करें: पोस्ट तिथियों में अंतर को देखते हुए, शायद किसी और के पास एक समान प्रश्न है। मेरी गलती।] –

उत्तर

2

पोस्टग्रेएसक्यूएल मेलिंग सूचियों पर in this thread उत्तर दिया गया। विषय पर (लघु) धागे का पालन करने के लिए पोस्ट के बाद लिंक में "फॉलो-अप" या "थ्रेड द्वारा अगला" पर क्लिक करें।

वहां कोई नुस्खा नहीं है, लेकिन टॉम सिर्फ text[] से integer[] तक एक स्पष्ट कलाकार को परिभाषित करने के बारे में बात कर रहा है। अगर समय परमिट होता है तो मैं इस जवाब को एक उदाहरण के साथ मांस दूंगा।