कोई रास्ता नहीं . है ।
अनुक्रमणिका के लिए IMMUTABLE की आवश्यकता होती है भाव। आपकी अभिव्यक्ति का परिणाम इनपुट स्ट्रिंग पर निर्भर करता है। मुझे हर पंक्ति के लिए एक्सप्रेशन का मूल्यांकन करने के अलावा और कोई रास्ता नहीं दिखता, जिसका अर्थ है क्रमिक स्कैन।
IMMUTABLE . के लिए अधिक विवरण के साथ संबंधित उत्तर कोण:
बस इतना कि आपके मामले का कोई समाधान नहीं है, जो कि असंभव है सूचकांक के लिए। सूचकांक को अपने टुपल्स में निरंतर मूल्यों को संग्रहीत करने की आवश्यकता होती है, जो अभी उपलब्ध नहीं है क्योंकि प्रत्येक पंक्ति के परिणामी मूल्य की गणना इनपुट के आधार पर की जाती है। और आप कॉलम मान को देखे बिना इनपुट को रूपांतरित नहीं कर सकते।
पोस्टग्रेज इंडेक्स का उपयोग ऑपरेटरों के लिए बाध्य है और केवल एक्सप्रेशन पर इंडेक्स बाएं . है ऑपरेटर का उपयोग किया जा सकता है (उसी तार्किक बाधाओं के कारण)। अधिक:
कई ऑपरेटर एक COMMUTATOR परिभाषित करते हैं
जो क्वेरी प्लानर / ऑप्टिमाइज़र को अनुक्रमित अभिव्यक्तियों को बाईं ओर फ़्लिप करने की अनुमति देता है। सरल उदाहरण:= . का कम्यूटेटर है = . > . का कम्यूटेटर है < और इसके विपरीत। दस्तावेज:
रेगुलर एक्सप्रेशन मैच ऑपरेटर ~ फिर से कोई कम्यूटेटर नहीं है, क्योंकि यह संभव नहीं है। खुद देखें:
SELECT oprname, oprright::regtype, oprleft::regtype, oprcom
FROM pg_operator
WHERE oprname = '~'
AND 'text'::regtype IN (oprright, oprleft);
oprname | oprright | oprleft | oprcom
---------+----------+-----------+------------
~ | text | name | 0
~ | text | text | 0
~ | text | character | 0
~ | text | citext | 0
मैंने पहले भी कोशिश की है और मुझे यह स्वीकार करना पड़ा है कि यह प्रिंसिपल पर असंभव है ।