On Thu, Jul 25, 2013 at 07:24:53PM -0400, Robert Haas wrote:
> - /* Used by pre-9.0 binary upgrades */
> - if (tuple->t_infomask & HEAP_MOVED_OFF)
> - {
> - TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
> -
> - if (TransactionIdIsCurrentTransactionId(xvac))
> - return false;
> - if (!TransactionIdIsInProgress(xvac))
> - {
> - if (TransactionIdDidCommit(xvac))
> - {
> - SetHintBits(tuple, buffer, HEAP_XMIN_INVALID,
> - InvalidTransactionId);
> - return false;
> - }
> - SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED,
> - InvalidTransactionId);
> - }
> - }
> - /* Used by pre-9.0 binary upgrades */
> - else if (tuple->t_infomask & HEAP_MOVED_IN)
> - {
> - TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
> -
> - if (!TransactionIdIsCurrentTransactionId(xvac))
> - {
> - if (TransactionIdIsInProgress(xvac))
> - return false;
> - if (TransactionIdDidCommit(xvac))
> - SetHintBits(tuple, buffer, HEAP_XMIN_COMMITTED,
> - InvalidTransactionId);
> - else
> - {
> - SetHintBits(tuple, buffer, HEAP_XMIN_INVALID,
> - InvalidTransactionId);
> - return false;
> - }
> - }
> - }
One interesting aspect of this patch is that the backend code is no
longer even checking HEAP_MOVED_OFF and HEAP_MOVED_IN. However, we
can't reuse those bits because they could be set from pre-9.0 rows.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ It's impossible for everything to be true. +