Here's a rebased version of the main patch. David Rowley <david.row...@2ndquadrant.com> writes: > The only thing that I did to manage to speed the patch up was to ditch > the additional NULL test in lnext(). I don't see why that's required > since lnext(NULL) would have crashed with the old implementation.
I adopted this idea. I think at one point where I was fooling with different implementations for foreach(), it was necessary that lnext() be cool with a NULL input; but as things stand now, it's not. I haven't done anything else in the performance direction, but am planning to play with that next. I did run through all the list_delete_foo callers and fix the ones that were still busted. I also changed things so that with DEBUG_LIST_MEMORY_USAGE enabled, list deletions would move the data arrays around, in hopes of catching more stale-pointer problems. Depressingly, check-world still passed with that added, even before I'd fixed the bugs I found by inspection. This does not speak well for the coverage of our regression tests. regards, tom lane
reimplement-List-as-array-2.patch.gz
Description: reimplement-List-as-array-2.patch.gz