डिफ़ॉल्ट मान निर्माण समय पर पार्स किए जाते हैं (प्रारंभिक बाध्यकारी!)। आप psql, pgAdmin या अन्य क्लाइंट में जो देखते हैं वह एक टेक्स्ट प्रतिनिधित्व है, लेकिन वास्तव में, OID
फ़ंक्शन का now()
कॉलम डिफॉल्ट बनाते समय सिस्टम कैटलॉग pg_attrdef
. मैं बोली:
adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
जब आप search_path
, जो पोस्टग्रेज़ को स्कीमा-योग्य फ़ंक्शन का नाम प्रदर्शित करने का कारण बनता है, क्योंकि इसे वर्तमान search_path
के साथ सही ढंग से हल नहीं किया जाएगा। ।
डंप और पुनर्स्थापना आपके कस्टम search_path
. से संबंधित नहीं हैं स्थापना। उन्होंने इसे स्पष्ट रूप से सेट किया। तो आप जो देख रहे हैं वह डंप / पुनर्स्थापना चक्र से संबंधित नहीं है।
अंतर्निहित कार्यों को ओवरराइड करें
public
रखना pg_catalog
. से पहले search_path
. में एक खतरे का खेल . है . वंचित उपयोगकर्ताओं (स्वयं सहित) को अक्सर वहां लिखने और ऐसे फ़ंक्शन बनाने की अनुमति दी जाती है जो अनजाने में सिस्टम के कार्यों को रद्द कर सकते हैं - मनमाने (या दुर्भावनापूर्ण) परिणाम के साथ।
आप एक प्रतिबंधित पहुंच के साथ समर्पित स्कीमा चाहते हैं अंतर्निहित कार्यों को ओवरराइड करने के लिए। इसके बजाय कुछ इस तरह का प्रयोग करें:
SET search_path = override, pg_catalog, public;
इसमें विवरण dba.SE पर संबंधित उत्तर ।