Re: [Patch] RBTree iteration interface improvement

From: Aleksander Alekseev <a(dot)alekseev(at)postgrespro(dot)ru>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [Patch] RBTree iteration interface improvement
Date: 2016-07-28 15:00:23
Message-ID: 20160728180023.7f452258@fujitsu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> Can you explain use case where you need it?

Sure. You can consider RBTree as a container that always keeps its
elements in sorted order. Now imagine you would like to write a code
like this:

```
/* iterate over items in sorted order */
while(item1 = left_right_walk(tree))
{

/* another iteration, probably even in different procedure */
while(item2 = left_right_walk(tree))
{
/* ... some logic ... */
}

}
```

Currently you can't do it.

Or maybe you have different objects, e.g. IndexScanDesc's, that should
iterate over some tree's independently somewhere in indexam.c
procedures. Exact order may depend on user's query so you don't even
control it.

--
Best regards,
Aleksander Alekseev

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alex Ignatov 2016-07-28 15:05:14 Re: Why we lost Uber as a user
Previous Message Tom Lane 2016-07-28 14:58:24 Re: pg_upgrade: exit_hook_registered variable