Re: Strange inconsistency with UPDATE

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Strange inconsistency with UPDATE
Дата
Msg-id 27176.1187321418@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Strange inconsistency with UPDATE  ("Phoenix Kiula" <phoenix.kiula@gmail.com>)
Ответы Re: Strange inconsistency with UPDATE
Список pgsql-general
"Phoenix Kiula" <phoenix.kiula@gmail.com> writes:
> However, I see some inconsisent behavior from Postgresql. When I issue
> an UPDATE command , it shows me a duplicate violation (which could be
> correct) --

>     -# update TABLE set ACOLUMN = lower(ACOLUMN);
>     ERROR:  duplicate key violates unique constraint "TABLE_ACOLUMN_key"

> So I try to find out the offending values of this ACOLUMN that become
> duplicated when lower(ACOLUMN) is issued:

>     -# SELECT lower(ACOLUMN), count(*)  FROM TABLE
>          GROUP BY lower(ACOLUMN) HAVING count(*) > 1 ;
>         -------+-------
>         lower | count
>         -------+-------
>         (0 rows)

Yeah, that *is* pretty bizarre.

We have seen some cases where strcoll() yields inconsistent answers
(leading to arbitrarily silly behavior on Postgres' part) if it is
expecting a character set encoding different from what Postgres is
using.  What is your lc_collate setting, and are you sure it matches
the database encoding?

Another possibility is that there's something corrupt about the
TABLE_ACOLUMN_key index ... does reindexing it change the outcome?

            regards, tom lane

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

Предыдущее
От: Tyson Lloyd Thwaites
Дата:
Сообщение: [RESEND] Transaction auto-abort causes grief with Spring Framework
Следующее
От: Tom Lane
Дата:
Сообщение: Re: SELECT ... FOR UPDATE performance costs? alternatives?