|From:||Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>|
|To:||Jeff Janes <jeff(dot)janes(at)gmail(dot)com>|
|Subject:||Re: Make HeapTupleSatisfiesMVCC more concurrent|
|Views:||Raw Message | Whole Thread | Download mbox | Resend email|
> Just thinking about this ... I wonder why we need to call
> TransactionIdIsInProgress() at all rather than believing the answer from
> the snapshot? Under what circumstances could TransactionIdIsInProgress()
> return true where XidInMVCCSnapshot() had not?
I experimented with the attached patch, which replaces
HeapTupleSatisfiesMVCC's calls of TransactionIdIsInProgress with
XidInMVCCSnapshot, and then as a cross-check has all the "return false"
exits from XidInMVCCSnapshot assert !TransactionIdIsInProgress().
The asserts did not fire in the standard regression tests nor in a
pgbench run, which is surely not proof of anything but it suggests
that I'm not totally nuts.
I wouldn't commit the changes in XidInMVCCSnapshot for real, but
otherwise this is a possibly committable patch.
regards, tom lane
|Next Message||Tom Lane||2015-08-19 00:38:00||Re: Bug? ExecChooseHashTableSize() got assertion failed with crazy number of rows|
|Previous Message||David Rowley||2015-08-19 00:34:38||Re: Bug? ExecChooseHashTableSize() got assertion failed with crazy number of rows|