From 89493a9980c1afcfffcdd5a46fbe2664f2c070fc Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Tue, 15 Oct 2024 17:35:27 +0300 Subject: [PATCH] MDEV-34993: fix merge into 10.6: OPTIMIZER_ADJ_FIX_CARD_MULT should be ON by default --- mysql-test/main/mysqld--help.result | 2 +- mysql-test/main/secondary_key_costs.result | 2 +- .../main/selectivity_innodb_notembedded.result | 12 +++++++----- mysql-test/main/selectivity_notembedded.result | 12 +++++++----- sql/sql_priv.h | 2 ++ sql/sys_vars.cc | 2 +- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index 0e6945f5455..352063ece38 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -1709,7 +1709,7 @@ old-alter-table DEFAULT old-mode UTF8_IS_UTF8MB3 old-passwords FALSE old-style-user-limits FALSE -optimizer-adjust-secondary-key-costs fix_reuse_range_for_ref +optimizer-adjust-secondary-key-costs fix_reuse_range_for_ref,fix_card_multiplier optimizer-join-limit-pref-ratio 0 optimizer-max-sel-arg-weight 32000 optimizer-max-sel-args 16000 diff --git a/mysql-test/main/secondary_key_costs.result b/mysql-test/main/secondary_key_costs.result index 3a5b883068c..09c6fa31cab 100644 --- a/mysql-test/main/secondary_key_costs.result +++ b/mysql-test/main/secondary_key_costs.result @@ -82,7 +82,7 @@ json_detailed(json_extract(@trace, '$**.considered_access_paths')) drop table t1, name, flag2; select @@optimizer_adjust_secondary_key_costs; @@optimizer_adjust_secondary_key_costs -fix_reuse_range_for_ref +fix_reuse_range_for_ref,fix_card_multiplier set @@optimizer_adjust_secondary_key_costs=7; select @@optimizer_adjust_secondary_key_costs; @@optimizer_adjust_secondary_key_costs diff --git a/mysql-test/main/selectivity_innodb_notembedded.result b/mysql-test/main/selectivity_innodb_notembedded.result index 8e7920cb4ee..04450f1b348 100644 --- a/mysql-test/main/selectivity_innodb_notembedded.result +++ b/mysql-test/main/selectivity_innodb_notembedded.result @@ -250,7 +250,9 @@ JS { "index_name": "key1", "selectivity_from_index": 0.399, - "selectivity_multiplier": 90.9091 + "selectivity_multiplier": 90.9091, + "note": "multiplier too high, clipping", + "clipped_multiplier": 2.506265664 } ] ] @@ -266,16 +268,16 @@ JS [ { "access_type": "range", - "resulting_rows": 181.3636545, - "cost": 1.79769e308, + "resulting_rows": 5, + "cost": 6.83879845, "chosen": true } ], "chosen_access_method": { "type": "range", - "records": 181.3636545, - "cost": 1.79769e308, + "records": 5, + "cost": 6.83879845, "uses_join_buffering": false } } diff --git a/mysql-test/main/selectivity_notembedded.result b/mysql-test/main/selectivity_notembedded.result index d8dbb80fa59..02d557ca793 100644 --- a/mysql-test/main/selectivity_notembedded.result +++ b/mysql-test/main/selectivity_notembedded.result @@ -245,7 +245,9 @@ JS { "index_name": "key1", "selectivity_from_index": 0.391, - "selectivity_multiplier": 90.9091 + "selectivity_multiplier": 90.9091, + "note": "multiplier too high, clipping", + "clipped_multiplier": 2.557544757 } ] ] @@ -261,16 +263,16 @@ JS [ { "access_type": "range", - "resulting_rows": 177.7272905, - "cost": 1.79769e308, + "resulting_rows": 5, + "cost": 6.647684891, "chosen": true } ], "chosen_access_method": { "type": "range", - "records": 177.7272905, - "cost": 1.79769e308, + "records": 5, + "cost": 6.647684891, "uses_join_buffering": false } } diff --git a/sql/sql_priv.h b/sql/sql_priv.h index a15b7bbebfe..251da05b420 100644 --- a/sql/sql_priv.h +++ b/sql/sql_priv.h @@ -278,6 +278,8 @@ #define OPTIMIZER_ADJ_FIX_REUSE_RANGE_FOR_REF (16) #define OPTIMIZER_ADJ_FIX_CARD_MULT (32) +#define OPTIMIZER_ADJ_DEFAULT (OPTIMIZER_ADJ_FIX_REUSE_RANGE_FOR_REF | \ + OPTIMIZER_ADJ_FIX_CARD_MULT) /* Replication uses 8 bytes to store SQL_MODE in the binary log. The day you use strictly more than 64 bits by adding one more define above, you should diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 630726c5cb8..cb35386f883 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -2860,7 +2860,7 @@ static Sys_var_set Sys_optimizer_adjust_secondary_key_costs( "This variable will be deleted in MariaDB 11.0 as it is not needed with the " "new 11.0 optimizer.", SESSION_VAR(optimizer_adjust_secondary_key_costs), CMD_LINE(REQUIRED_ARG), - adjust_secondary_key_cost, DEFAULT(OPTIMIZER_ADJ_FIX_REUSE_RANGE_FOR_REF)); + adjust_secondary_key_cost, DEFAULT(OPTIMIZER_ADJ_DEFAULT)); static Sys_var_charptr_fscs Sys_pid_file(