mariadb/mysql-test/suite/gcol/r
Thirunarayanan Balathandayuthapani a157161d54 MDEV-19574: innodb_stats_method ignored with persistent statistics
Problem:
========
When persistent statistics are enabled (innodb_stats_persistent=ON),
the innodb_stats_method setting was not being properly passed
through the statistics calculation chain. This caused NULL handling
to always use the default behavior, regardless of the
configured stats method.

The issue affected query optimization for queries involving
NULL values, as the statistics collection wasn't respecting
the user's preference for NULL value treatment
(NULLS_EQUAL, NULLS_UNEQUAL, or NULLS_IGNORED).

Solution:
========
1. Passed innodb_stats_method parameter through the
statistics calculation chain:
 - dict_stats_scan_page()
 - dict_stats_analyze_index_below_cur()
 - dict_stats_analyze_index_for_n_prefix()
 - dict_stats_analyze_index_level
 - dict_stats_analyze_index
 - dict_stats_update_persistent
 - dict_stats_save

2. Conditionally set n_non_null_key_vals based on the NULLS_IGNORED
method.

3. Introduced IndexLevelStats which is to collect statistics
at a specific B-tree level during index analysis

4. Introduced LeafPageStats which is to collect statistics
for leaf page analysis

5. IndexLevelStats, LeafPageStats replaces multiple individual
parameters in function signatures.

6. Add stats method name to stat_description in case of non
default innodb_stats_method variable value

7. Added the new stat name like n_nonnull_fld01, n_nonull_fld02 etc
with stats description to indicate how many non-nulls value exist
for nth field of the index. This value is properly retrieved and
stored in index statistics in dict_stats_fetch_index_stats_step().

8. When InnoDB scan the leaf page directly, assign leaf page
count as number of pages scanned in case of multi-level index.
For single page indexes, use 1. This change leads to multiple
changes in existing test case.
2026-02-10 16:01:18 +05:30
..
federated_gcol.result
gcol_archive.result
gcol_blackhole.result
gcol_blocked_sql_funcs_innodb.result Merge 10.9 into 10.10 2023-01-10 15:06:25 +02:00
gcol_blocked_sql_funcs_myisam.result Merge 10.9 into 10.10 2023-01-10 15:06:25 +02:00
gcol_bug20746926.result MDEV-38006 Inconsistent behaviors when casting into time 2026-01-14 19:44:54 +01:00
gcol_bugfixes.result Merge branch '10.4' into 10.5 2023-12-02 01:02:50 +01:00
gcol_column_def_options_innodb.result Merge 10.5 into 10.6 2022-12-13 16:58:58 +02:00
gcol_column_def_options_myisam.result Merge 10.5 into 10.6 2022-12-13 16:58:58 +02:00
gcol_csv.result
gcol_falcon.result
gcol_handler_innodb.result
gcol_handler_myisam.result
gcol_ins_upd_innodb.result Merge branch '10.4' into 10.5 2021-07-31 23:19:51 +02:00
gcol_ins_upd_myisam.result Merge branch '10.4' into 10.5 2021-07-31 23:19:51 +02:00
gcol_keys_innodb.result Merge 10.6 into 10.7 2022-09-21 09:33:07 +03:00
gcol_keys_myisam.result Merge 10.5 into 10.6 2022-09-20 16:53:20 +03:00
gcol_memory.result
gcol_merge.result
gcol_ndb.result
gcol_non_stored_columns_innodb.result MDEV-29446 Change SHOW CREATE TABLE to display default collation 2022-09-12 22:10:39 +04:00
gcol_non_stored_columns_myisam.result MDEV-29446 Change SHOW CREATE TABLE to display default collation 2022-09-12 22:10:39 +04:00
gcol_partition_innodb.result MDEV-32050 fixup: Stabilize tests 2023-11-21 12:42:00 +02:00
gcol_partition_myisam.result MDEV-26220 Server crashes with indexed by prefix virtual column 2021-08-02 10:31:22 +02:00
gcol_purge.result MDEV-32050 fixup: Stabilize tests 2023-11-21 12:42:00 +02:00
gcol_rejected_innodb.result
gcol_rollback.result MDEV-30597 Assertion `flag == 1' failed in row_build_index_entry_low 2023-02-14 14:28:27 +05:30
gcol_select_innodb.result Merge 10.4 into 10.5 2022-07-27 17:17:24 +03:00
gcol_select_myisam.result Merge 10.5 into 10.6 2022-07-27 17:52:37 +03:00
gcol_supported_sql_funcs_innodb.result Merge branch '10.6' into 10.11 2025-01-10 13:14:42 +01:00
gcol_supported_sql_funcs_myisam.result Merge branch '10.6' into 10.11 2025-01-10 13:14:42 +01:00
gcol_trigger_sp_innodb.result
gcol_trigger_sp_myisam.result
gcol_update.result MDEV-32050 fixup: Stabilize tests 2023-11-21 12:42:00 +02:00
gcol_view_innodb.result MDEV-4750 follow-up: Reduce disabling innodb_stats_persistent 2021-08-31 13:55:02 +03:00
gcol_view_myisam.result MDEV-4750 follow-up: Reduce disabling innodb_stats_persistent 2021-08-31 13:55:02 +03:00
innodb_partition.result
innodb_prefix_index_check.result MDEV-13626 Merge InnoDB test cases from MySQL 5.7 2023-11-08 12:17:14 +02:00
innodb_virtual_basic.result MDEV-36613 Incorrect undo logging for indexes on virtual columns 2025-04-16 15:55:45 +03:00
innodb_virtual_blob.result
innodb_virtual_debug.result MDEV-32050 fixup: Stabilize tests 2023-11-21 12:42:00 +02:00
innodb_virtual_debug_purge.result MDEV-26642/MDEV-26643/MDEV-32898 Implement innodb_snapshot_isolation 2024-03-20 09:48:03 +02:00
innodb_virtual_fk.result Merge 10.9 into 10.10 2022-09-21 10:59:56 +03:00
innodb_virtual_fk_restart.result
innodb_virtual_index.result Merge branch '10.6' into 10.10 2023-11-08 16:23:30 +01:00
innodb_virtual_purge.result MDEV-32050 fixup: Stabilize tests 2023-11-21 12:42:00 +02:00
innodb_virtual_rebuild.result
innodb_virtual_stats.result MDEV-19574: innodb_stats_method ignored with persistent statistics 2026-02-10 16:01:18 +05:30
innodb_wl8114.result
main_alter_table.result
main_mysqldump.result
rpl_gcol.result MDEV-29446 Change SHOW CREATE TABLE to display default collation 2022-09-12 22:10:39 +04:00
virtual_index_drop.result Merge 10.3 into 10.4 2022-09-13 16:36:38 +03:00