Обсуждение: Unusual behaviour with intarray

Поиск
Список
Период
Сортировка

Unusual behaviour with intarray

От
Adam Witney
Дата:
Hi,

I am using intarray in contrib, and have seen some strange behaviour with
one of the operations. Anyone know whats going on here?

cabbage=# create table test (id int, writers int[]);
CREATE TABLE
cabbage=# insert into test values(1, '{}');
INSERT 1545023 1
cabbage=# select * from test;
 id | writers
----+---------
  1 | {}
(1 row)

cabbage=# update test set writers = (select writers - '{1}'::int[]);
UPDATE 1
cabbage=# select * from test;
 id | writers
----+---------
  1 | {}
(1 row)

cabbage=# update test set writers = (select writers - '{1}'::int[]);
UPDATE 1
cabbage=# select * from test;
 id |  writers
----+-----------
  1 | {3044207}
(1 row)

Thanks for any help

Adam


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


Re: Unusual behaviour with intarray

От
Teodor Sigaev
Дата:
Ok, this is a bug.
I'll post a patch as soon as possible.

Adam Witney wrote:
> Hi,
>
> I am using intarray in contrib, and have seen some strange behaviour with
> one of the operations. Anyone know whats going on here?
>
> cabbage=# create table test (id int, writers int[]);
> CREATE TABLE
> cabbage=# insert into test values(1, '{}');
> INSERT 1545023 1
> cabbage=# select * from test;
>  id | writers
> ----+---------
>   1 | {}
> (1 row)
>
> cabbage=# update test set writers = (select writers - '{1}'::int[]);
> UPDATE 1
> cabbage=# select * from test;
>  id | writers
> ----+---------
>   1 | {}
> (1 row)
>
> cabbage=# update test set writers = (select writers - '{1}'::int[]);
> UPDATE 1
> cabbage=# select * from test;
>  id |  writers
> ----+-----------
>   1 | {3044207}
> (1 row)
>
> Thanks for any help
>
> Adam
>
>

--
Teodor Sigaev                                  E-mail: teodor@sigaev.ru


Re: Unusual behaviour with intarray

От
Tom Lane
Дата:
Adam Witney <awitney@sghms.ac.uk> writes:
> I am using intarray in contrib, and have seen some strange behaviour with
> one of the operations. Anyone know whats going on here?

I think unix_uniq() is broken for the case of a zero-element array ...

            regards, tom lane


Re: Unusual behaviour with intarray

От
Teodor Sigaev
Дата:
Please apply patch for 7.3 CVS brach. Patch fixes the problem, for 7.4 it will
be later (with other changes).


Teodor Sigaev wrote:
> Ok, this is a bug.
> I'll post a patch as soon as possible.
>
> Adam Witney wrote:
>
>> Hi,
>>
>> I am using intarray in contrib, and have seen some strange behaviour with
>> one of the operations. Anyone know whats going on here?
>>
>> cabbage=# create table test (id int, writers int[]);
>> CREATE TABLE
>> cabbage=# insert into test values(1, '{}');
>> INSERT 1545023 1
>> cabbage=# select * from test;
>>  id | writers ----+---------
>>   1 | {}
>> (1 row)
>>
>> cabbage=# update test set writers = (select writers - '{1}'::int[]);
>> UPDATE 1
>> cabbage=# select * from test;
>>  id | writers ----+---------
>>   1 | {}
>> (1 row)
>>
>> cabbage=# update test set writers = (select writers - '{1}'::int[]);
>> UPDATE 1
>> cabbage=# select * from test;
>>  id |  writers  ----+-----------
>>   1 | {3044207}
>> (1 row)
>>
>> Thanks for any help
>>
>> Adam
>>
>>
>

--
Teodor Sigaev                                  E-mail: teodor@sigaev.ru

Вложения