• T
    Improve ilist.h's support for deletion of slist elements during iteration. · fa2fad3c
    Tom Lane 提交于
    Previously one had to use slist_delete(), implying an additional scan of
    the list, making this infrastructure considerably less efficient than
    traditional Lists when deletion of element(s) in a long list is needed.
    Modify the slist_foreach_modify() macro to support deleting the current
    element in O(1) time, by keeping a "prev" pointer in addition to "cur"
    and "next".  Although this makes iteration with this macro a bit slower,
    no real harm is done, since in any scenario where you're not going to
    delete the current list element you might as well just use slist_foreach
    instead.  Improve the comments about when to use each macro.
    
    Back-patch to 9.3 so that we'll have consistent semantics in all branches
    that provide ilist.h.  Note this is an ABI break for callers of
    slist_foreach_modify().
    
    Andres Freund and Tom Lane
    fa2fad3c
pgstat.c 132.2 KB