Имате нужда от кавички около вашите масиви и това е така, защото масивът е в текстова версия на ред.
Лесен за тестване, като вземете въведеното от вас като ред и видите как postgres го форматира (необходими са единични кавички около масивите тук, защото {}
е масив в текст):
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}
. Ако масивът е празен или съдържа само една стойност, няма да има запетая, така че няма проблем при правилното анализиране на това поле.