PostgreSQL arrays and DBD

Поиск
Список
Период
Сортировка
От Александр Чешев
Тема PostgreSQL arrays and DBD
Дата
Msg-id 6e38c1070808140121u340e6696o60e97fedff61b57a@mail.gmail.com
обсуждение исходный текст
Ответы Re: PostgreSQL arrays and DBD  (SCassidy@overlandstorage.com)
Список pgsql-general
Hello.

I create a table:

CREATE TABLE groups (
  group_id serial PRIMARY KEY,
  name varchar(64) UNIQUE NOT NULL,
  guests integer[] DEFAULT '{}'
)

I add a new record to the table:

INSERT INTO groups (name) VALUES ('My friends');

Now the table contains 1 record:

| group_id |    name    | guests
+----------+------------+--------
|        1 | My friends | {}

I read the new record from the table using DBI:

my $sth = $dbh->prepare(qq/SELECT * FROM groups/);
$sth->execute();
my (@guests, $group);
push(@guests, $group) while $group = $sth->fetchrow_hashref(); # Line 4
print $guests[0]->{guests}->[0]; # Why ({group_id=>1, name=>'My friends', guests=>[0]}) ?

Output of the script:

Argument "" isn't numeric in null operation at ./guestmanager.pl line 4
0

DBD should return a reference to an empty array. But DBD returned the reference to the array containing 1 element (0). How can I have a different result:

({group_id=>1, name=>'My friends', guests=>[]})

PS
Version of DBD::Pg is 2.9.0 .

В списке pgsql-general по дате отправления:

Предыдущее
От: "Pavel Stehule"
Дата:
Сообщение: Re: cannot use result of (insert .. returning)
Следующее
От: Joris Dobbelsteen
Дата:
Сообщение: Re: Referential integrity vulnerability in 8.3.3