Обсуждение: Arrays
Hello,
I'm trying to use a bidimensional array and I'm having the following
problem:
students=# UPDATE years SET y_grade[1] = '{2,3,4,5,6,7}';
ERROR: pg_atoi: error in "{2,3,4,5,6,7}": can't parse "{2,3,4,5,6,7}"
I've declared y_grade as a bidimensional array (y_grade smallint[][]), but
still, I get this when I describe the table:
students=# \d years
Table "years"
Column | Type | Modifiers
------------+------------+----------------------------------------
y_id | integer | not null default nextval('Y_ID'::text)
y_year | smallint |
y_student | smallint |
y_grade | smallint[] |
y_absences | smallint |
Primary key: years_pkey
(notice it's only a onedimensinal array)
I don't know if that's how it's supposed to be, but even if it is, my query
isn't working.
I'm not trying to enlarge the array, I read in the docs you can't do that:
students=# select * from years;
y_id | y_year | y_student | y_grade | y_absences
------+--------+-----------+-------------------------------+------------
4 | 1 | 1 | {{0,0,0,0,0,0},{0,0,0,0,0,0}} |
(1 row)
So, any idea why I'm getting this error?
Ymir <ymir@wolfheart.ro> writes:
> I'm trying to use a bidimensional array and I'm having the following
> problem:
> students=# UPDATE years SET y_grade[1] = '{2,3,4,5,6,7}';
> ERROR: pg_atoi: error in "{2,3,4,5,6,7}": can't parse "{2,3,4,5,6,7}"
Not the right subscripts for an array slice. Try it this way:
regression=# create table years(y_grade int[]);
CREATE
regression=# insert into years values('{{1,2,3,4,5,6},{11,22,33,44,55,66}}');
INSERT 164022 1
regression=# select * from years;
y_grade
-------------------------------------
{{1,2,3,4,5,6},{11,22,33,44,55,66}}
(1 row)
regression=# update years set y_grade[1][1:6] = '{2,3,4,5,6,7}';
UPDATE 1
regression=# select * from years;
y_grade
-------------------------------------
{{2,3,4,5,6,7},{11,22,33,44,55,66}}
(1 row)
> I've declared y_grade as a bidimensional array (y_grade smallint[][]), but
> still, I get this when I describe the table:
The declaration of the table just says that the column is an array of
int; the number of dimensions is not really constrained, any more than
the array size is.
regards, tom lane