Re: subxcnt defined as signed integer in SnapshotData and SerializeSnapshotData
От | Michael Paquier |
---|---|
Тема | Re: subxcnt defined as signed integer in SnapshotData and SerializeSnapshotData |
Дата | |
Msg-id | CAB7nPqRZc5uY-=5rJNCAv7qBeTVD=Qyteh9RfLN52aKUXE=8ag@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: subxcnt defined as signed integer in SnapshotData and SerializeSnapshotData (Simon Riggs <simon@2ndQuadrant.com>) |
Ответы |
Re: subxcnt defined as signed integer in SnapshotData and SerializeSnapshotData
|
Список | pgsql-hackers |
On Fri, May 8, 2015 at 3:55 PM, Simon Riggs <simon@2ndquadrant.com> wrote: > On 7 May 2015 at 21:40, Michael Paquier <michael.paquier@gmail.com> wrote: >> >> Hi all, >> >> Coverity is complaining about the following assertion introduced in >> commit 924bcf4 (parallel stuff, SerializeSnapshot@snapmgr.c): >> + Assert(snapshot->xcnt >= 0); >> >> Now the thing is that this assertion does not make much sense, because >> SnapshotData defines subxcnt as uint32 in snapshot.h. While we could >> simply remove this assertion, I am wondering if we could not change >> subxcnt to uint32 instead. >> >> SnapshotData has been introduced in 2008 by d43b085, with this comment: >> + int32 subxcnt; /* # of xact ids in >> subxip[], -1 if overflow */ >> Comment regarding negative values removed in efc16ea5. >> >> Now, by looking at the code on HEAD, I am seeing no code paths that >> make use of negative values of subxcnt. Perhaps I am missing >> something? > > > So the comment is wrong? It does not set to -1 at overflow anymore? SnapshotData.suboverflowed is used instead. Have a look at efc16ea5 in procarray.c to convince yourself: @@ -785,16 +1121,17 @@ GetSnapshotData(Snapshot snapshot) * * Again, our own XIDs are not includedin the snapshot. */ - if (subcount >= 0 && proc != MyProc) + if (!suboverflowed && proc != MyProc) { if (proc->subxids.overflowed) - subcount = -1; /* overflowed */ + suboverflowed = true; else I think that we should redefine subxcnt as uint32 for consistency with xcnt, and remove the two assertions that 924bcf4 has introduced. I could get a patch quickly done FWIW. Regards, -- Michael
В списке pgsql-hackers по дате отправления: