आपको अपने सरणियों के चारों ओर उद्धरणों की आवश्यकता है, और ऐसा इसलिए है क्योंकि सरणी एक पंक्ति के पाठ संस्करण में है।
अपने इनपुट को एक पंक्ति के रूप में ले कर परीक्षण करना आसान है और देखें कि कैसे पोस्टग्रेज़ इसे प्रारूपित करता है (यहां सरणी के आसपास सिंगल कोट्स की आवश्यकता है क्योंकि {}
पाठ में एक सरणी है):
SELECT ROW(0,NULL,NULL, 0, 0, 0, 0, '{}', '{1,2,3,4,5}', '{1,2,3,4,5}', '{0,0.25,0.5,0.75,1}')
रिटर्न:
(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")
इसलिए आपको यह करने की आवश्यकता है:
...
initcond = '(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")'
एक सरणी पर उद्धरणों की आवश्यकता क्यों नहीं है जो खाली है या केवल एक मान है:
एक सरणी में एकाधिक मान अल्पविराम-सीमांकित होते हैं, और एक पंक्ति के भीतर फ़ील्ड भी अल्पविराम-सीमांकित होते हैं। यदि आप '(0,{1,2})'
. के रूप में एक पंक्ति प्रदान करते हैं , PG इसकी व्याख्या तीन क्षेत्रों के रूप में करेगा:0
, {1
, 2}
. स्वाभाविक रूप से उस स्थिति में आपको एक विकृत सरणी के बारे में एक त्रुटि मिलेगी। फ़ील्ड को उद्धरणों में रखने का अर्थ है कि उन उद्धरणों में सब कुछ एक फ़ील्ड है। इसलिए '(0,"{1,2}")'
0
. के रूप में सही ढंग से व्याख्या की जाएगी , {1,2}
. यदि सरणी खाली है या उसमें केवल एक मान है, तो कोई अल्पविराम नहीं होगा, इसलिए उस फ़ील्ड को सही ढंग से पार्स करने में कोई समस्या नहीं है।