Re: testing HS/SR - 1 vs 2 performance

Simon Riggs <simon@2ndquadrant.com>

From: Simon Riggs <simon@2ndQuadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, Erik Rijkers <er@xs4all.nl>, pgsql-hackers@postgresql.org
Date: 2010-04-16T14:52:49Z
Lists: pgsql-hackers
On Fri, 2010-04-16 at 10:39 -0400, Tom Lane wrote:
> Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> > I didn't handle xid wraparound correctly in the binary search, need to use
> > TransactionIdFollows instead of plan >.
> 
> I think you're outsmarting yourself there.  A binary search will in fact
> *not work* with circular xid comparison (this is exactly why there's no
> btree opclass for XID).  You need to use plain >, and make sure the
> array you're searching is ordered that way too.  The other way might
> accidentally fail to malfunction if you only tested ranges of XIDs that
> weren't long enough to wrap around, but that doesn't make it right.

I don't understand the exact, please explain more.

I'm not using bsearch() just a quick chop based upon xid comparison,
which looks to me like it will work.

-- 
 Simon Riggs           www.2ndQuadrant.com