ऐसा प्रतीत होता है कि कुछ समय के लिए, search_path सेट करना jOOQ के दायरे से बाहर है। सिद्धांत रूप में, हम फ्लाईवे में जावा माइग्रेशन का उपयोग कर सकते हैं और फ़ंक्शन के भीतर सभी संदर्भों को स्पष्ट स्कीमा रखने के लिए मजबूर कर सकते हैं, लेकिन यह बहुत दर्दनाक लगता है। जो हमें या तो खोज पथ को मैन्युअल रूप से सेट करने, संभावित रूप से इसे हमारे लेनदेन प्रबंधन में जोड़ने, या एक बेहतर कनेक्शन प्रदाता लिखने के साथ छोड़ देता है।
हमारे पास हमारे आवेदन पर एक बहुत सख्त एक-क्वेरी-प्रति-लेनदेन मॉडल है, इसलिए "सेट search_path =..." क्वेरी को जोड़ने के लिए वास्तव में कोई लेनदेन प्रबंधन नहीं है। कनेक्शन प्रदाता समाधान हमारा सबसे अच्छा विकल्प प्रतीत होता है।
कनेक्शन पूलिंग के लिए हमारे पास पहले से ही एक कस्टम कनेक्शन प्रदाता कार्यान्वयन है, इसलिए search_path को सेट करने के लिए तर्क (प्रश्न के अंत में ऊपर दिया गया) में जोड़ने में कोई परेशानी नहीं थी। हम कनेक्शन को किसी ऐसी चीज़ से सजाकर इसे और अधिक प्रदर्शनकारी बना सकते हैं जो याद रखती है कि उसका वर्तमान search_path किस पर सेट है, और "set search_path =...;" उपसर्ग करना। जरूरत पड़ने पर दरवाजे से बाहर जाने से पहले किसी भी बयान के सामने। हम पहले से ही प्रत्येक अनुरोध search_path को सेट करने के लिए एक प्रदर्शन प्रभाव देख रहे हैं, इसलिए यह एक आवश्यकता बनने से पहले की बात है। खैर, वह या हमारे पुराने मालिकाना डेटाबेस एक्सेस लेयर के दर्द पर वापस जा रहा है।
कम से कम, मैं इसे तब तक उत्तर के रूप में स्वीकार नहीं करूंगा जब तक कि मैं कनेक्शन पूलिंग/search_path सेटिंग कनेक्शनप्रोवाइडर को लिखता और खोलता हूं, इस उम्मीद में कि कोई और इससे पहले कि मैं इसके आसपास हो, बेहतर समाधान के साथ आएगा।पी>