18 $endId = $dbr->newSelectQueryBuilder()
19 ->select(
'MAX(old_id)' )
21 ->caller( __METHOD__ )->fetchField();
26 $binSize = intval( 10 ** ( floor( log10( $endId ) ) - 3 ) );
27 if ( $binSize < 100 ) {
30 echo
"Using bin size of $binSize\n";
35 IF(old_flags LIKE
'%external%',
36 IF(old_text REGEXP
'^DB://[[:alnum:]]+/[0-9]+/[0-9a-f]{32}$',
38 IF(old_text REGEXP
'^DB://[[:alnum:]]+/[0-9]+/[0-9]{1,6}$',
40 IF(old_text REGEXP
'^DB://[[:alnum:]]+/[0-9]+$',
46 IF(old_flags LIKE
'%object%',
47 TRIM(
'"' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(old_text,
':', 3),
':', -1)),
53 for ( $rangeStart = 0; $rangeStart < $endId; $rangeStart += $binSize ) {
54 if ( intdiv( $rangeStart, $binSize ) % 10 === 0 ) {
57 $res = $dbr->newSelectQueryBuilder()
58 ->select( [
'old_flags',
'class' => $classSql,
'count' =>
'COUNT(*)' ] )
60 ->where( $dbr->expr(
'old_id',
'>=', intval( $rangeStart ) ) )
61 ->andWhere( $dbr->expr(
'old_id',
'<', intval( $rangeStart + $binSize ) ) )
62 ->groupBy( [
'old_flags',
'class' ] )
63 ->caller( __METHOD__ )->fetchResultSet();
65 foreach ( $res as $row ) {
66 $flags = $row->old_flags;
67 if ( $flags ===
'' ) {
73 if ( !isset( $stats[$flags][$class] ) ) {
74 $stats[$flags][$class] = [
76 'first' => $rangeStart,
80 $entry =& $stats[$flags][$class];
81 $entry[
'count'] += $count;
82 $entry[
'last'] = max( $entry[
'last'], $rangeStart + $binSize );
88 $format =
"%-29s %-39s %-19s %-29s\n";
89 printf( $format,
"Flags",
"Class",
"Count",
"old_id range" );
90 echo str_repeat(
'-', 120 ) .
"\n";
91 foreach ( $stats as $flags => $flagStats ) {
92 foreach ( $flagStats as $class => $entry ) {
93 printf( $format, $flags, $class, $entry[
'count'],
94 sprintf(
"%-13d - %-13d", $entry[
'first'], $entry[
'last'] ) );