From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Andres Freund <andres(at)2ndquadrant(dot)com> |
Cc: | pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: ilist.h is not useful as-is |
Date: | 2013-07-24 15:49:20 |
Message-ID: | 25058.1374680960@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> On 2013-07-24 11:26:00 -0400, Tom Lane wrote:
>> So I'm going to end up hand-implementing the same kind of manipulation
>> we frequently use with traditional Lists, namely keep a second variable
>> that's the preceding list element (not the next one) so I can unlink and
>> delete the target element when I find it. ilist.h is not offering me
>> any useful support at all for this scenario. Seems like we're missing
>> a bet here.
> Hm. Yes. This should be added. I didn't need it so far, but I definitely
> can see usecases.
> slist_delete_current(slist_mutable_iter *)?
> I am willing to cough up a patch if you want.
Please.
> This will require another member variable in slist_mutable_iter which
> obviously will need to be maintained, but that seems fine to me since it
> will reduce the cost of actually deleting noticeably.
I think that's all right. Conceivably we could introduce two forms of
iterator depending on whether you want to delete or not, but that seems
like overkill to me.
In fact, now that I think about it, the distinction between slist_iter
and slist_mutable_iter is really misstated in the comments, isn't it?
The *only* action on the list that's unsafe with an active slist_iter
is to delete the current element (and then continue iterating).
If the value of slist_mutable_iter is to support deletion of the current
element, then it seems obvious that it should support doing so
efficiently, ie it should carry both prev and next. Also, if it's
carrying both of those, then use of slist_mutable_iter really doesn't
allow any action other than deleting the current element --- adding
new nodes "ahead" of the current element isn't safe.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2013-07-24 15:53:39 | Re: ilist.h is not useful as-is |
Previous Message | Vik Fearing | 2013-07-24 15:44:58 | Re: [GENERAL] Insert result does not match record count |