Re: [CFReview] Red-Black Tree - Mailing list pgsql-hackers

From Robert Haas
Subject Re: [CFReview] Red-Black Tree
Date
Msg-id 603c8f071002101056t2c0e5d1axfb39a31c08dbe5cb@mail.gmail.com
Whole thread Raw
In response to Re: [CFReview] Red-Black Tree  (Teodor Sigaev <teodor@sigaev.ru>)
List pgsql-hackers
2010/2/10 Teodor Sigaev <teodor@sigaev.ru>:
>> So suppose at this point that step is the largest integer that can be
>> represented...
>>>
>>> !       step ++;
>>
>> Boom.
>>>
>>> !       step>>= 1;
>
> step>>= 1;
> step ++'
>
> Unboom?

Yeah, that'll work.

>>> !
>>> !       while(step>  0) {
>>> !               int i;
>>>
>>> !               for (i = step-1; i<  nentry; i += 2 * step)
>>
>> And similarly here... if nentry is greater than maxint/2, then i += 2
>> * step will overflow, no?
>
> Agree, so
> for (i = step - 1; i < nentry && i >= 0; i += step << 1 /* *2 */)

I don't think you should do it this way.  I can't immediately say
whether it's safe on all platforms, but it's certainly not clear.
Just put the test at the bottom of the loop the way I did it (after
fixing whatever I screwed up).

> Also, rb_free is removed per Tom's comment. Can I commit  the patch?

Pending the above, go for it.

...Robert


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: [CFReview] Red-Black Tree
Next
From: Robert Haas
Date:
Subject: Re: Some belated patch review for "Buffers" explain analyze patch