remove support for no_aggregate; in the remaining no_aggregate fields
(btree_fixed_len, allocation_size, block_magic, block_major, and
block_minor), the maximum value is at least as good as the last one we
find (and in some cases, such as the file allocation size, arguably
better). The reason is because no_aggregate simply read from slot 0, and
that assumes there's a WT_STAT_XXX_SET call in the code that updates
this sp ecific statistic, and we have no way to enforce that, so don't
try. This will be marginally slower because we're checking more fields
on statistics calls, but I can't imagine it will matter.
Statistics for these are a bit different than for a data source or a
connection:
1) The statistics are simple (currently only 3), but range over sets of
indices, so traversing the stats is a two level operation. Added a private
callback API to advance to the next index when the stats have been
exhausted.
2) cursors are used as single threaded operations, so arrays of stats is to
avoid thread conflicts is not needed.
Minor change: the stats_desc callback changed to return an int, and added
an arg to provide some context. In the join cursor case, the returned desc
is not a static string, it needs to be created and managed.
instead of deepening the tree at that point. Includes:
Move the internal page split check out of __split_parent(), instead have
__split_parent's callers call a new function __split_parent_climb(),
that starts at the first page and walks up the tree splitting internal
pages until it reaches the root. It's using lock-coupling, as we should
be able to discard each level's lock as we go.
Add a new function __split_internal() that splits an internal page into
its parent, called to split any internal page other than the root. It
looks a lot like __split_deepen() (the root split function), but does a
split-right of the internal page: split the contents of the internal
page into a bunch of newly allocated internal pages, then insert that
new set of pages into the original page's parent, replacing the original
page's WT_REF at that level.
Add a new statistic so we can distinguish between splitting leaf pages,
splitting internal pages, and splitting the root (deepening the tree).
I changed a statistic's message, so this change needs approval, it may
not be backward compatible.
update/restore counts into the cache statistics, and doing them
on a page basis rather than a block basis.
Remove the lookaside table insert-bytes statistic for now, there's
no remove-byte statistic, so it's not really useful.