Description:
The tested version is 8.0.23.
However, it is the also same in 8.0.23 earlier versions.
####### Test - 8.0.23
mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
| 3082751 |
+----------+
mysql> select table_name,table_rows,avg_row_length
from information_schema.TABLES
where table_name='sbtest1';
+------------+------------+----------------+
| TABLE_NAME | TABLE_ROWS | AVG_ROW_LENGTH |
+------------+------------+----------------+
| sbtest1 | 2971870 | 215 |
+------------+------------+----------------+
1 row in set (0.00 sec)
mysql> select table_name,n_rows,clustered_index_size,
sum_of_other_index_sizes
from mysql.innodb_table_stats
where table_name='sbtest1';
+------------+---------+----------------------+--------------------------+
| table_name | n_rows | clustered_index_size | sum_of_other_index_sizes |
+------------+---------+----------------------+--------------------------+
| sbtest1 | 2737323 | 39168 | 0 |
+------------+---------+----------------------+--------------------------+
1 row in set (0.00 sec)
mysql> select table_name,index_name,stat_name,stat_value
from mysql.innodb_index_stats
where table_name='sbtest1';
+------------+------------+--------------+------------+
| table_name | index_name | stat_name | stat_value |
+------------+------------+--------------+------------+
| sbtest1 | PRIMARY | n_diff_pfx01 | 2737323 |
| sbtest1 | PRIMARY | n_leaf_pages | 39021 |
| sbtest1 | PRIMARY | size | 39168 |
+------------+------------+--------------+------------+
7 rows in set (0.01 sec)
mysql> truncate table sbtest1;
Query OK, 0 rows affected (0.32 sec)
mysql> select table_name,table_rows,avg_row_length
from information_schema.tables
where table_name='sbtest1';
+------------+------------+----------------+
| TABLE_NAME | TABLE_ROWS | AVG_ROW_LENGTH |
+------------+------------+----------------+
| sbtest1 | 2971870 | 215 |
+------------+------------+----------------+
<---- Problem!!!!!
mysql> select table_name,n_rows,clustered_index_size,
sum_of_other_index_sizes
from mysql.innodb_table_stats
where table_name='sbtest1';
+------------+--------+----------------------+--------------------------+
| table_name | n_rows | clustered_index_size | sum_of_other_index_sizes |
+------------+--------+----------------------+--------------------------+
| sbtest1 | 0 | 1 | 0 |
+------------+--------+----------------------+--------------------------+
mysql> select table_name,n_rows,clustered_index_size,
sum_of_other_index_sizes
from mysql.innodb_table_stats
where table_name='sbtest1';
+------------+--------+----------------------+--------------------------+
| table_name | n_rows | clustered_index_size | sum_of_other_index_sizes |
+------------+--------+----------------------+--------------------------+
| sbtest1 | 0 | 1 | 0 |
+------------+--------+----------------------+--------------------------+
####### Test - 5.7.18
mysql> select count(*) from sbtest9;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
mysql> select table_name,table_rows,avg_row_length
from information_schema.TABLES
where table_name='sbtest9';
+------------+------------+----------------+
| table_name | table_rows | avg_row_length |
+------------+------------+----------------+
| sbtest9 | 9609638 | 233 |
+------------+------------+----------------+
1 row in set (0.00 sec)
mysql> select table_name,n_rows,clustered_index_size,
sum_of_other_index_sizes
from mysql.innodb_table_stats
where table_name='sbtest9';
+------------+---------+----------------------+--------------------------+
| table_name | n_rows | clustered_index_size | sum_of_other_index_sizes |
+------------+---------+----------------------+--------------------------+
| sbtest9 | 9609638 | 137152 | 14102 |
+------------+---------+----------------------+--------------------------+
1 row in set (0.00 sec)
mysql> select table_name,index_name,stat_name,stat_value
from mysql.innodb_index_stats
where table_name='sbtest9';
+------------+------------+--------------+------------+
| table_name | index_name | stat_name | stat_value |
+------------+------------+--------------+------------+
| sbtest9 | PRIMARY | n_diff_pfx01 | 9609638 |
| sbtest9 | PRIMARY | n_leaf_pages | 136987 |
| sbtest9 | PRIMARY | size | 137152 |
| sbtest9 | k_9 | n_diff_pfx01 | 5787319 |
| sbtest9 | k_9 | n_diff_pfx02 | 9942726 |
| sbtest9 | k_9 | n_leaf_pages | 12247 |
| sbtest9 | k_9 | size | 14102 |
+------------+------------+--------------+------------+
7 rows in set (0.01 sec)
mysql> truncate table sbtest9;
Query OK, 0 rows affected (0.32 sec)
mysql> select table_name,table_rows,avg_row_length
from information_schema.TABLES
where table_name='sbtest9';
+------------+------------+----------------+
| table_name | table_rows | avg_row_length |
+------------+------------+----------------+
| sbtest9 | 0 | 0 |
+------------+------------+----------------+
<--- it's normal !!!
In version 8.0, I do not understand why it is not reflected in information_schema.tables after truncate table.
In version 5.7, as expected, information_schema.tables after truncate table is reflected normally.
Thanks
How to repeat:
1) Create table
2) Insert data
3) check information_schema.TABLES
4) truncate table
5) check information_schema.TABLES