2011-07-10 10 views
6

बनाते हैं मैं mysql से पोस्टग्रेस में जा रहा हूं और मुझे एक इंडेक्स बनाने में समस्या आ रही है।पोस्टग्रेर्स एक इंडेक्स

जेस्ट (point_col) का उपयोग कर तालिका पर INDEX पॉइंटलोक बनाएं;

यह प्रतिक्रिया है मैं वापस पाने:

त्रुटि: डेटा प्रकार बिंदु अभिगम विधि "सार" के लिए संकेत कोई डिफ़ॉल्ट ऑपरेटर वर्ग है: आप या इंडेक्स के लिए एक ऑपरेटर वर्ग का उल्लेख करना होगा एक डिफ़ॉल्ट ऑपरेटर वर्ग को परिभाषित डेटा प्रकार के लिए।

मैंने देखा है कि मुझे इंडेक्स के लिए ऑपरेटर क्लास निर्दिष्ट करने की आवश्यकता है, कॉलम पर उपयोग करने वाले ऑपरेटरों के प्रकार के आधार पर विभिन्न वर्गों का उपयोग किया जा सकता है। मैं पॉलीगॉन के भीतर एक बिंदु है या नहीं, यह जानने के लिए @> या ~ का उपयोग करना चाहता हूं।

मैं ऑपरेटर वर्ग कैसे निर्दिष्ट करूं ?? मदद कृपया एक साधारण बात होनी चाहिए लेकिन मैं फंस गया हूँ!

        Table "public.branch" 
     Column  |  Type  |      Modifiers      
------------------+------------------+----------------------------------------------------- 
id    | integer   | not null default nextval('branch_id_seq'::regclass) 
name    | character(120) | 
center_point_lat | double precision | 
center_point_lng | double precision | 
center_point  | point   | 
Indexes: 
    "branch_pkey" PRIMARY KEY, btree (id) 

paul=# create index pt_idx on branch using gist (center_point); 
ERROR: data type point has no default operator class for access method "gist" 
HINT: You must specify an operator class for the index or define a default operator class for the data type. 

उत्तर

3

ठीक काम कर रहा है जब मैं कोशिश:

संपादित

नीचे मुझे का एक प्रिंट स्क्रीन शाखा मेज पर एक सूचकांक जोड़ने की कोशिश कर रहा है

test=# create table test (pt point); 
CREATE TABLE 
test=# create index pt_idx on test using gist (pt); 
CREATE INDEX 

क्या आप सुनिश्चित हैं कि point_col वास्तव में प्रकारहै? क्योंकि, यदि यह एक वर्चर है, तो यह वास्तव में btree_gist contrib के बिना बुरी तरह विफल हो जाएगा - और फिर भी यह बहुत उपयोगी नहीं होगा।

+0

प्रिंट स्क्रीन दिखाते हुए मेरा प्रश्न संपादित किया और मैं एक इंडेक्स जोड़ने की कोशिश कर रहा हूं ... कृपया मुझे बताएं कि मैं बेवकूफ हूं :) –

+0

यह आपका पोस्टग्रेस्क्ल संस्करण हो सकता है। (मैं 9.1-बीटा चला रहा हूं, जिसमें गिस्ट इंडेक्सिंग के अतिरिक्त जोड़ हैं, इसलिए शायद मुझे कोई त्रुटि नहीं मिल रही है।) –

+0

शायद यह होगा कि मैं एक केंद्र 5.5 सिस्टम पर 8.1.23 का उपयोग कर रहा हूं। एक यम अपडेट करने से पता चलता है कि मैं नए पोस्टग्रेज़ संस्करण में अपडेट नहीं कर सकता .... :(, यह विचार कि 8.1.23 के साथ यह कैसे किया जाएगा। मुझे लगता है कि ऑपरेटर कक्षाओं को जोड़ने के लिए कहीं भी जानकारी नहीं मिलती इंडेक्स या यहां तक ​​कि मुझे पॉलीगॉन/पॉइंट सर्च लॉल –

संबंधित मुद्दे