Re: [Patch] RBTree iteration interface improvement - Mailing list pgsql-hackers

From Aleksander Alekseev
Subject Re: [Patch] RBTree iteration interface improvement
Date
Msg-id 20160822100043.GA52699@e733
Whole thread Raw
In response to Re: [Patch] RBTree iteration interface improvement  (Aleksander Alekseev <a.alekseev@postgrespro.ru>)
Responses Re: [Patch] RBTree iteration interface improvement
List pgsql-hackers
> > It seems clear to me that the existing arrangement is hazardous for
> > any RBTree that hasn't got exactly one consumer.  I think
> > Aleksander's plan to decouple the iteration state is probably a good
> > one (NB: I've not read the patch, so this is not an endorsement of
> > details).  I'd go so far as to say that we should remove the old API
> > as being dangerous, rather than preserve it on
> > backwards-compatibility grounds.  We make bigger changes than that in
> > internal APIs all the time.
>
> Glad to hear it! I would like to propose a patch that removes the old
> API. I have a few questions though.
>
> Would you like it to be a separate patch, or all-in-one patch is fine
> in this case? I also would like to include unit/property-based tests in
> this (these) patch (patches). However as I understand there are
> currently no unit tests in PostgreSQL at all, only integration/system
> tests. Any advice how to do it better?

OK, here is a patch. I think we could call it a _replacement_ of an old API, so
there is probably no need in two separate patches. I still don't know how to
include unit test and whether they should be included at all. Thus for now
unit/property-based tests could be found only on GitHub [1].

As usual, if you have any questions, suggestions or notes regarding this patch,
please let me know.

[1] https://github.com/afiskon/c-algorithms/tree/master/test

--
Best regards,
Aleksander Alekseev

Attachment

pgsql-hackers by date:

Previous
From: Alexander Korotkov
Date:
Subject: Re: Tracking wait event for latches
Next
From: Adrien Nayrat
Date:
Subject: Re: LSN as a recovery target