mariadb/mysql-test/suite/innodb/r/innodb_stats_method,NULLS_IGNORED.rdiff
Thirunarayanan Balathandayuthapani a7a933982d MDEV-19574 innodb_stats_method is not honored when innodb_stats_persistent=ON
Problem:
=======
 InnoDB persistent statistics doesn't take innodb_stats_method
variable while calculating n_diff_pfx for the n-prefix index
columns.

Solution:
=========
While calculating the persistent statistics, InnoDB consider all
NULLS as different value when innodb_stats_method is
set to NULLS_UNEQUAL or NULLS_IGNORED. InnoDB statistics depends
on the value of "innodb_stats_method" variable when the
statistics were last recalculated.

dict_stats_analyze_index_level(),
dict_stats_scan_page(),
dict_stats_analyze_index_below_cur(),
dict_stats_analyze_index_for_n_prefix(): All function accepts
the parameter to indicate the innodb_stats_method. It also
calculates the number of non-null key value for each level or leaf page

dict_stats_index_set_n_diff(): calculates the number of non-null
values similar to number of different key values.

Append the non-default innodb_stats_method variable name
for n_diff_pfx statistics description in mysql.innodb_index_stats.

IndexScanStatistics: Structure to store the various statistical
metric gathered during index scan fetch operation. This structure
is being used in dict_stats_analyze_index_level() to fetch the
statistics
2025-07-18 20:24:15 +05:30

25 lines
1 KiB
Text

--- innodb_stats_method.result
+++ innodb_stats_method,NULLS_IGNORED.result
@@ -7,16 +7,16 @@
SELECT stat_name, stat_value, stat_description
FROM mysql.innodb_index_stats WHERE database_name="test" and table_name="t1";
stat_name stat_value stat_description
-n_diff_pfx01 16341 DB_ROW_ID NULLS_UNEQUAL
+n_diff_pfx01 16341 DB_ROW_ID NULLS_IGNORED
n_leaf_pages 37 Number of leaf pages in the index
size 97 Number of pages in the index
-n_diff_pfx01 16384 f1 NULLS_UNEQUAL
-n_diff_pfx02 16384 f1,f3 NULLS_UNEQUAL
-n_diff_pfx03 16384 f1,f3,DB_ROW_ID NULLS_UNEQUAL
+n_diff_pfx01 16384 f1 NULLS_IGNORED
+n_diff_pfx02 16384 f1,f3 NULLS_IGNORED
+n_diff_pfx03 16384 f1,f3,DB_ROW_ID NULLS_IGNORED
n_leaf_pages 1 Number of leaf pages in the index
size 19 Number of pages in the index
-n_diff_pfx01 16384 f3 NULLS_UNEQUAL
-n_diff_pfx02 16384 f3,DB_ROW_ID NULLS_UNEQUAL
+n_diff_pfx01 16384 f3 NULLS_IGNORED
+n_diff_pfx02 16384 f3,DB_ROW_ID NULLS_IGNORED
n_leaf_pages 1 Number of leaf pages in the index
size 15 Number of pages in the index
SHOW KEYS FROM t1;