This patch rewrites the handling of row count and table size
in db_details to more accurately deal with different table types such as InnoDB.
It also re-enables the valid fields of size usage and row stats in
tbl_properties for InnoDB tables.
-Josh
diff -r -u phpMyAdmin-2.2.4/db_details.php
phpMyAdmin-devel/db_details.php
--- phpMyAdmin-2.2.4/db_details.php Tue Feb
19 18:35:40 2002
+++ phpMyAdmin-devel/db_details.php Thu Feb 21 12:00:00
2002
@@ -237,51 +237,43 @@
</td>
<?php
echo
"\n";
-
$mergetable =
FALSE;
-
$nonisam =
FALSE;
- if
(isset($sts_data['Type']))
{
- if
($sts_data['Type'] == 'MRG_MyISAM')
{
-
$mergetable =
TRUE;
- }
else if (!eregi('ISAM|HEAP', $sts_data['Type']))
{
-
$nonisam =
TRUE;
+
+
if(isset($sts_data['Rows']))
{
+ #
MyISAM, ISAM or Heap table: Row count, data size and index size is
accurate.
+
if(isset($sts_data['Type']) && ereg('^(MyISAM|ISAM|HEAP)$',
$sts_data['Type']))
{
+
$tblsize = $sts_data['Data_length'] +
$sts_data['Index_length'];
+
$sum_size +=
$tblsize;
+
list($formated_size, $unit) = PMA_formatByteDown($tblsize, 3, $tblsize
> 0 ? 1 :
0);
+
$sum_entries +=
$sts_data['Rows'];
+
$display_rows = number_format($sts_data['Rows'], 0, $number_decimal_separator,
$number_thousands_separator);
}
-
}
- if
(isset($sts_data['Rows']))
{
- if
($mergetable == FALSE)
{
-
if ($cfgShowStats && $nonisam == FALSE)
{
-
$tblsize
= $sts_data['Data_length'] +
$sts_data['Index_length'];
-
$sum_size
+=
$tblsize;
-
if ($tblsize > 0)
{
-
list($formated_size, $unit) = PMA_formatByteDown($tblsize, 3,
1);
-
} else
{
-
list($formated_size, $unit) = PMA_formatByteDown($tblsize, 3,
0);
-
}
-
} else if ($cfgShowStats)
{
-
$formated_size
=
' - ';
-
$unit
=
'';
-
}
-
$sum_entries
+=
$sts_data['Rows'];
+
# InnoDB table: Row count is not accurate but data and index sizes
are.
+
elseif(isset($sts_data['Type']) && $sts_data['Type'] == "InnoDB")
{
+
$tblsize = $sts_data['Data_length'] +
$sts_data['Index_length'];
+
$sum_size +=
$tblsize;
+
list($formated_size, $unit) = PMA_formatByteDown($tblsize, 3, $tblsize
> 0 ? 1 :
0);
+
$display_rows =
' - ';
}
- //
MyISAM MERGE
Table
-
else if ($cfgShowStats && $mergetable == TRUE)
{
+
+ #
Merge or BerkleyDB table: Only row count is
accurate.
+
elseif(isset($sts_data['Type']) && ereg('^(MRG_MyISAM|BerkeleyDB)$',
$sts_data['Type']))
{
$formated_size =
' - ';
-
$unit =
'';
+
$unit =
'';
+
$sum_entries +=
$sts_data['Rows'];
+
$display_rows = number_format($sts_data['Rows'], 0, $number_decimal_separator,
$number_thousands_separator);
}
- else if
($cfgShowStats)
{
+
+ #
Unknown table
type.
+
else
{
$formated_size =
'unknown';
-
$unit =
'';
+
$unit =
'';
+
$display_rows =
'unknown';
}
+
?>
<td align="right" bgcolor="<?php echo
$bgcolor;
?>">
-
<?php
-
echo "\n" . '
';
- if
($mergetable == TRUE)
{
-
echo '<i>' . number_format($sts_data['Rows'], 0,
$number_decimal_separator, $number_thousands_separator) . '</i>' .
"\n";
- }
else
{
-
echo number_format($sts_data['Rows'], 0, $number_decimal_separator,
$number_thousands_separator) .
"\n";
-
}
-
?>
+ <?php echo $display_rows
. "\n"; ?>
</td>
<td bgcolor="<?php echo $bgcolor;
?>" nowrap="nowrap">
<?php echo (isset($sts_data['Type']) ? $sts_data['Type'] :
' '); ?>
@@ -291,24 +283,21
@@
echo
"\n";
?>
<td align="right" bgcolor="<?php echo
$bgcolor; ?>"
nowrap="nowrap">
-
- <a
href="tbl_properties.php?<?php echo $url_query; ?>#showusage"><?php
echo $formated_size . ' ' . $unit;
?></a>
+
<a href="tbl_properties.php?<?php echo $url_query;
?>#showusage"><?php echo $formated_size . ' ' . $unit;
?></a>
</td>
<?php
-
echo
"\n";
- }
// end if
- } else
{
+
}
+
}
+ else
{
?>
- <td colspan="3" align="center" bgcolor="<?php
echo $bgcolor; ?>">
-
<?php echo $strInUse . "\n"; ?>
-
</td>
+<td colspan="3" align="center" bgcolor="<?php echo
$bgcolor; ?>"><?php echo $strInUse . "\n";
?></td>
<?php
}
echo
"\n";
?>
</tr>
<?php
- }
+ }
// Show Summary
if
($cfgShowStats) {
list($sum_formated, $unit) = PMA_formatByteDown($sum_size, 3, 1);
diff -r -u
phpMyAdmin-2.2.4/tbl_properties.php phpMyAdmin-devel/tbl_properties.php
---
phpMyAdmin-2.2.4/tbl_properties.php Tue Feb 19 18:35:42 2002
+++
phpMyAdmin-devel/tbl_properties.php Thu Feb 21 11:58:15 2002
@@ -484,10
+484,11 @@
// BEGIN - Calc Table Space - staybyte - 9 June
2001
if ($cfgShowStats) {
$nonisam = FALSE;
+ $innodb =
$showtable['Type'] == "InnoDB";
if
(isset($showtable['Type']) && !eregi('ISAM|HEAP', $showtable['Type']))
{
$nonisam =
TRUE;
}
- if
(PMA_MYSQL_INT_VERSION >= 32303 && $nonisam == FALSE)
{
+ if (PMA_MYSQL_INT_VERSION >= 32303 &&
($nonisam == FALSE || $innodb))
{
// Gets some
sizes
$mergetable =
FALSE;
if
(isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM')
{
@@ -613,7 +614,7 @@
</tr>
<?php
}
- if (isset($showtable['Rows']))
{
+ if (!$innodb &&
isset($showtable['Rows']))
{
$bgcolor = ((++$i%2) ? $cfgBgcolorTwo :
$cfgBgcolorOne);
echo
"\n";
?>
@@ -625,7 +626,7 @@
</tr>
<?php
}
- if
(isset($showtable['Avg_row_length']) && $showtable['Avg_row_length']
> 0) {
+ if (!$innodb &&
isset($showtable['Avg_row_length']) && $showtable['Avg_row_length'] >
0) {
$bgcolor = ((++$i%2) ? $cfgBgcolorTwo :
$cfgBgcolorOne);
echo
"\n";
?>
@@ -637,7 +638,7 @@
</tr>
<?php
}
- if
(isset($showtable['Data_length']) && $showtable['Rows'] > 0
&& $mergetable == FALSE)
{
+ if (!$innodb &&
isset($showtable['Data_length']) && $showtable['Rows'] > 0 &&
$mergetable == FALSE)
{
$bgcolor = ((++$i%2) ? $cfgBgcolorTwo :
$cfgBgcolorOne);
echo
"\n";
?>