1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Bug#12770537 I_S.TABLES.DATA_LENGTH does not show on-disk size

for compressed InnoDB tables

ha_innodb::info_low(): For calculating data_length or index_length,
use the compressed page size for compressed tables instead of UNIV_PAGE_SIZE.

rb:714 approved by Sunny Bains
This commit is contained in:
Marko Mäkelä
2011-08-08 11:22:18 +03:00
parent de3693a1cd
commit 7e8d625b79
4 changed files with 87 additions and 74 deletions

View File

@@ -7652,6 +7652,8 @@ ha_innobase::info_low(
if (flag & HA_STATUS_VARIABLE) {
ulint page_size;
dict_table_stats_lock(ib_table, RW_S_LATCH);
n_rows = ib_table->stat_n_rows;
@@ -7694,14 +7696,19 @@ ha_innobase::info_low(
prebuilt->autoinc_last_value = 0;
}
page_size = dict_table_zip_size(ib_table);
if (page_size == 0) {
page_size = UNIV_PAGE_SIZE;
}
stats.records = (ha_rows)n_rows;
stats.deleted = 0;
stats.data_file_length = ((ulonglong)
ib_table->stat_clustered_index_size)
* UNIV_PAGE_SIZE;
stats.index_file_length = ((ulonglong)
ib_table->stat_sum_of_other_index_sizes)
* UNIV_PAGE_SIZE;
stats.data_file_length
= ((ulonglong) ib_table->stat_clustered_index_size)
* page_size;
stats.index_file_length =
((ulonglong) ib_table->stat_sum_of_other_index_sizes)
* page_size;
dict_table_stats_unlock(ib_table, RW_S_LATCH);