How many full router rebuilds a tally represents, read from statements rather than rows.
A rebuild is exactly one DELETE FROM router plus ceil(routes / routesPerStatement) inserts,
because MatcherDumper::dump() empties the table once and then re-inserts everything
(core/lib/Drupal/Core/Routing/MatcherDumper.php:98-143). Core chunks at 50 routes, which is
300 bound parameters and over the Durable Object ceiling of 100, so the driver re-chunks to 16.
Returns null rather than 0 when the shape does not divide cleanly: a fractional answer means
the assumed chunk size is wrong, and reporting "2.4 rebuilds" as 2 would launder that away.
How many full router rebuilds a tally represents, read from statements rather than rows.
A rebuild is exactly one
DELETE FROM routerplusceil(routes / routesPerStatement)inserts, becauseMatcherDumper::dump()empties the table once and then re-inserts everything (core/lib/Drupal/Core/Routing/MatcherDumper.php:98-143). Core chunks at 50 routes, which is 300 bound parameters and over the Durable Object ceiling of 100, so the driver re-chunks to 16.Returns
nullrather than 0 when the shape does not divide cleanly: a fractional answer means the assumed chunk size is wrong, and reporting "2.4 rebuilds" as 2 would launder that away.