Re: PG8.4.7: updating rows leaves duplicate rows violating PK

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: PG8.4.7: updating rows leaves duplicate rows violating PK
Дата
Msg-id CAFj8pRAxTAnAwVmpZq2j9X8Zh2j7X+Qt=SY8Xuomoyw4y8_aVw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: PG8.4.7: updating rows leaves duplicate rows violating PK  (Rainer Pruy <Rainer.Pruy@Acrys.COM>)
Список pgsql-bugs
2011/8/17 Rainer Pruy <Rainer.Pruy@acrys.com>:
> Hallo,
> this is strange for sure. The database is in heavy use regularly.
> So it is - if at all - a rare occurrence.
>
> The update statement reported 346305 updated rows.
> And I could verify that this is the number of rows that hat there value
> change
> (where afterwards there was a "new" version in the table.
> Thus, the update statement actually performed its operation.
>
> After eliminating the "offending" rows the index is operational again
> and does not complaining about violations.
> Thus, it is not likely a plain bad PK index.
>
> I already tried to come up with something that could create a false
> positive here,
> but am out of ideas now.

it should be a race condition too.

you can try to use a triggers for identification of place where value
is modified back.

Pavel

>
> Up to now this only happened with said table.
> May be something is bad with the table?
> However, the current instance is nearly a fresh installation of PG
> with data loaded from a pg_dumpall from another instance
> (for some special testing and analysis).
> Thus, I have events with two different instances of PG.
> Something being imported by plain DML operations?
> A strange idea by itself anyway.....
>
> Still clueless...
>
> Rainer
>
>
> Am 17.08.2011 13:33, schrieb Pavel Stehule:
>> Hello
>>
>> 2011/8/17 Rainer Pruy <Rainer.Pruy@acrys.com>:
>>> This is strange and as of now I do not have a reliable way of reproduci=
ng.
>>> Nevertheless,
>>> either there is a major blunder on my side that urgently needs being
>>> pointed at and eliminated
>>> or there is something really strange with PG.
>>>
>>> Short version:
>>>
>>> I update some rows of a table changing non-primary key column values.
>>> Afterwards some of the updated rows are returned from a query with
>>> the version from before and after the update.
>>>
>>> Consequently the PK is detected inconsistent later on and errors are
>>> reported accordingly.
>>>
>>>
>> It is strange - are you sure, so UPDATE statement doesn't fail? Are
>> you sure, so UPDATE statement really modified rows?
>> Are you sure, so you are has not a broken index on PK?
>>
>> Regards
>>
>> Pavel Stehule
>>
>>> Longer Version: please see text attachment
>>>
>>>
>>> =C2=A0server_version =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0| 8.4.7
>>> =C2=A0server_version_num =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 80407
>>>
>>> OS: NetBSD 5.99.38
>>>
>>> Sizes:
>>> account_item =C2=A0 =C2=A012 GB =C2=A0 =C2=A06,8079,402 rows
>>>
>>> While the update was executing another process was active that was
>>> issuing a sequence of select.
>>>
>>> Running that very sequence on a copy clone of the database (before the
>>> update)
>>> worked without such effect.
>>>
>>> I had 3 similar occurrences before.
>>> But those were on a DB instance used for development and I could not
>>> verify the primary key was active during update.
>>> Here it is verified it was in place. So the "bad" entries probably could
>>> have been rejected due to PK violation?
>>>
>>> Not much input I can give for decent analysis,
>>> but either someone can point me to the obvious
>>> or it is something thats worth being watched for somehow....
>>>
>>> Rainer
>>>
>>>
>>>
>>>
>>> --
>>> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpref/pgsql-bugs
>>>
>>>
>

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

Предыдущее
От: Rainer Pruy
Дата:
Сообщение: Re: PG8.4.7: updating rows leaves duplicate rows violating PK
Следующее
От: "Alex Soto"
Дата:
Сообщение: BUG #6166: configure from source fails with 'This platform is not thread-safe.' but was actually /tmp perms