Hai bisogno di virgolette intorno ai tuoi array, e questo perché l'array si trova in una versione testuale di una riga.
Facile da testare prendendo il tuo input come una riga e vedere come postgres lo formatta (sono necessarie virgolette singole attorno agli array qui perché {} è un array nel testo):
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}')
Resi:
(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")
Quindi devi fare:
...
initcond = '(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")'
Perché le virgolette non sono richieste su un array che è vuoto o ha un solo valore:
Più valori in una matrice sono delimitati da virgole e anche i campi all'interno di una riga sono delimitati da virgole. Se fornisci una riga come '(0,{1,2})' , PG interpreterà questo come tre campi:0 , {1 , 2} . Naturalmente in tal caso riceverai un errore su un array non valido. Mettere un campo tra virgolette significa che tutto all'interno di quelle virgolette è un campo. Pertanto '(0,"{1,2}")' verrà interpretato correttamente come 0 , {1,2} . Se l'array è vuoto o contiene un solo valore, non ci saranno virgole, quindi non ci sono problemi ad analizzare correttamente quel campo.