Necesita comillas alrededor de sus arreglos, y eso es porque el arreglo está en una versión de texto de una fila.
Fácil de probar tomando su entrada como una fila y viendo cómo postgres la formatea (se necesitan comillas simples alrededor de las matrices aquí porque {}
es una matriz en el 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}')
Devoluciones:
(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")
Por lo tanto, debe hacer:
...
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 qué no se requieren comillas en una matriz que está vacía o tiene un solo valor:
Los valores múltiples en una matriz están delimitados por comas y los campos dentro de una fila también están delimitados por comas. Si proporciona una fila como '(0,{1,2})'
, PG interpretará esto como tres campos:0
, {1
, 2}
. Naturalmente, en ese caso obtendrá un error sobre una matriz mal formada. Poner un campo entre comillas significa que todo dentro de esas comillas es un campo. Por lo tanto '(0,"{1,2}")'
se interpretará correctamente como 0
, {1,2}
. Si la matriz está vacía o contiene solo un valor, no habrá coma, por lo que no hay problema para analizar ese campo correctamente.