Você precisa de aspas em torno de suas matrizes, e isso ocorre porque a matriz está em uma versão de texto de uma linha.
Fácil de testar, tomando sua entrada como uma linha e veja como o postgres a formata (aspas simples são necessárias em torno de matrizes aqui porque
{}
é uma matriz em texto):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}')
Devoluções:
(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")
Portanto, você precisa fazer:
...
initcond = '(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")'
Por que as aspas não são necessárias em uma matriz vazia ou com apenas um valor:
Vários valores em uma matriz são delimitados por vírgulas e os campos em uma linha também são delimitados por vírgulas. Se você fornecer uma linha como
'(0,{1,2})'
, o PG interpretará isso como três campos:0
, {1
, 2}
. Naturalmente, nesse caso, você receberá um erro sobre uma matriz malformada. Colocar um campo entre aspas significa que tudo dentro dessas aspas é um campo. Portanto, '(0,"{1,2}")'
será interpretado corretamente como 0
, {1,2}
. Se a matriz estiver vazia ou contiver apenas um valor, não haverá vírgula, portanto, não há problema em analisar esse campo corretamente.