I wrote: > > Hmm, I wonder if that's a side-effect of the "create" functions doing > > their own allocations and returning a pointer. Would it be less tricky > > if the structs were declared where we need them and passed to "init" > > functions?
If this is a possibility, I thought I'd first send the last (I hope) large-ish set of radix tree cleanups to avoid rebasing issues. I'm not including tidstore/vacuum here, because recent discussion has some up-in-the-air work. Should be self-explanatory, but some thing are worth calling out: 0012 and 0013: Some time ago I started passing insertpos as a parameter, but now see that is not ideal -- when growing from node16 to node48 we don't need it at all, so it's a wasted calculation. While reverting that, I found that this also allows passing constants in some cases. 0014 makes a cleaner separation between adding a child and growing a node, resulting in more compact-looking functions. 0019 is a bit unpolished, but I realized that it's pointless to assign a zero child when further up the call stack we overwrite it anyway with the actual value. With this, that assignment is skipped. This makes some comments and names strange, so needs a bit of polish, but wanted to get it out there anyway.
v53-ART.tar.gz
Description: application/gzip