सबसे पहले, आपको relocatable
को बदलना होगा करने के लिए false
एक्सटेंशन की नियंत्रण फ़ाइल में।
इसके अलावा, आपको जो सिफारिश मिली है वह आंशिक रूप से उचित और आंशिक रूप से बकवास है।
आपको अपने कार्यों को इस तरह परिभाषित करना चाहिए:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
फिर search_path
pg_catalog
. पर स्थिर है , pg_temp
और फ़ंक्शन कॉल की अवधि के लिए आपका एक्सटेंशन स्कीमा। इसका मतलब है कि स्पष्ट स्कीमा के बिना ऑब्जेक्ट तक सभी पहुंच केवल इन स्कीमा में ही खोजी जाएगी।
फिर आपको @[email protected]
के साथ फंक्शन में हर चीज को स्पष्ट रूप से क्वालिफाई करने के बारे में चिंता करने की जरूरत नहीं है। , और आप बिना किसी चिंता के ऑपरेटरों का उपयोग कर सकते हैं, क्योंकि search_path
ऑपरेटरों पर भी लागू होता है। (आप स्कीमा-योग्य ऑपरेटर भी कर सकते हैं:OPERATOR(schema.+)
, लेकिन यह स्पष्ट रूप से दर्दनाक है और पठनीयता को हानि पहुँचाता है।)