diff --git a/client/mysqltest.cc b/client/mysqltest.cc index c5a11f854d5d7..96bdc1c17f326 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -8614,12 +8614,13 @@ static void execute_replay_queries(const char *sql_script, DYNAMIC_STRING *ds) log_replay_query(query_start, query_len); /* Execute the query */ - if (mysql_real_query(replay_server_mysql, query_start, query_len)) + if (mysql_real_query(replay_server_mysql, query_start, + (ulong) query_len)) { char buf[512]; - int len= my_snprintf(buf, sizeof(buf), - "ReplayTest: Query error: %s\n", - mysql_error(replay_server_mysql)); + size_t len= + my_snprintf(buf, sizeof(buf), "ReplayTest: Query error: %s\n", + mysql_error(replay_server_mysql)); fputs(buf, stdout); print_replay_test_location(stdout); verbose_msg("%s", buf); @@ -8664,9 +8665,9 @@ static void execute_replay_queries(const char *sql_script, DYNAMIC_STRING *ds) if (mysql_errno(replay_server_mysql)) { char buf[512]; - int len= my_snprintf(buf, sizeof(buf), - "ReplayTest: Query error: %s\n", - mysql_error(replay_server_mysql)); + size_t len= + my_snprintf(buf, sizeof(buf), "ReplayTest: Query error: %s\n", + mysql_error(replay_server_mysql)); fputs(buf, stdout); if (is_explain) dynstr_append_mem(&result, buf, len); @@ -8722,8 +8723,9 @@ static void execute_replay_queries(const char *sql_script, DYNAMIC_STRING *ds) /* Log the query */ log_replay_query(query_start, query_len); - - if (mysql_real_query(replay_server_mysql, query_start, query_len)) + + if (mysql_real_query(replay_server_mysql, query_start, + (ulong) query_len)) { fprintf(stdout, "ReplayTest: Query failed on replay server: %d %s\n", mysql_errno(replay_server_mysql), @@ -8836,10 +8838,10 @@ static void run_explain_directly_on_replay(const char *query, size_t query_len, if (mysql_real_query(replay_server_mysql, query, (ulong)query_len)) { char buf[512]; - int len= my_snprintf(buf, sizeof(buf), - "ReplayTest: Direct EXPLAIN failed on replay server: %d %s\n", - mysql_errno(replay_server_mysql), - mysql_error(replay_server_mysql)); + size_t len= my_snprintf( + buf, sizeof(buf), + "ReplayTest: Direct EXPLAIN failed on replay server: %d %s\n", + mysql_errno(replay_server_mysql), mysql_error(replay_server_mysql)); fputs(buf, stdout); fprintf(stdout, "ReplayTest: Failed query was: %.*s\n", (int)query_len, query); diff --git a/mysql-test/main/costs.test b/mysql-test/main/costs.test index 5de334c67d396..7de2c9cdd5e73 100644 --- a/mysql-test/main/costs.test +++ b/mysql-test/main/costs.test @@ -8,6 +8,7 @@ --source include/have_sequence.inc --source include/have_innodb.inc --source include/innodb_stable_estimates.inc +--disable_replay testfile Uses Last_query_cost for most queries create table t1 (a int primary key, b int, c int, d int, e int, key ba (b,a), key bda (b,d,a), key cba (c,b,a), key cb (c,b), key d (d)) engine=aria; insert into t1 select seq,seq,seq,seq,seq from seq_1_to_10; diff --git a/mysql-test/main/opt_context_replay_basic.result b/mysql-test/main/opt_context_replay_basic.result index 34f9b4d6d2271..5cf54692edfcc 100644 --- a/mysql-test/main/opt_context_replay_basic.result +++ b/mysql-test/main/opt_context_replay_basic.result @@ -20,7 +20,223 @@ select @set_stmts; @set_stmts SET NAMES utf8mb4; - SET join_buffer_size=262144; + SET GLOBAL MEMORY.OPTIMIZER_DISK_READ_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_INDEX_BLOCK_COPY_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL MEMORY.OPTIMIZER_KEY_COPY_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_KEY_LOOKUP_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_KEY_NEXT_FIND_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_DISK_READ_RATIO=0; + +SET GLOBAL MEMORY.OPTIMIZER_ROW_COPY_COST=0.002334; + +SET GLOBAL MEMORY.OPTIMIZER_ROW_LOOKUP_COST=0; + +SET GLOBAL MEMORY.OPTIMIZER_ROW_NEXT_FIND_COST=0.0080166; + +SET GLOBAL MEMORY.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL MEMORY.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL CSV.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL CSV.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL CSV.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL CSV.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL CSV.OPTIMIZER_KEY_LOOKUP_COST=0.435777; + +SET GLOBAL CSV.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; + +SET GLOBAL CSV.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL CSV.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL CSV.OPTIMIZER_ROW_LOOKUP_COST=0.130839; + +SET GLOBAL CSV.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; + +SET GLOBAL CSV.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL CSV.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_LOOKUP_COST=0.435777; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_LOOKUP_COST=0.130839; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL Aria.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL Aria.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL Aria.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL Aria.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL Aria.OPTIMIZER_KEY_LOOKUP_COST=0.435777; + +SET GLOBAL Aria.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; + +SET GLOBAL Aria.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL Aria.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL Aria.OPTIMIZER_ROW_LOOKUP_COST=0.130839; + +SET GLOBAL Aria.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; + +SET GLOBAL Aria.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL Aria.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL MyISAM.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL MyISAM.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL MyISAM.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL MyISAM.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL MyISAM.OPTIMIZER_KEY_LOOKUP_COST=0.550142; + +SET GLOBAL MyISAM.OPTIMIZER_KEY_NEXT_FIND_COST=0.090585; + +SET GLOBAL MyISAM.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL MyISAM.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL MyISAM.OPTIMIZER_ROW_LOOKUP_COST=1.014818; + +SET GLOBAL MyISAM.OPTIMIZER_ROW_NEXT_FIND_COST=0.063539; + +SET GLOBAL MyISAM.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL MyISAM.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_LOOKUP_COST=0.550142; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_NEXT_FIND_COST=0.090585; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_LOOKUP_COST=1.014818; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_NEXT_FIND_COST=0.063539; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL SEQUENCE.OPTIMIZER_DISK_READ_COST=0; + +SET GLOBAL SEQUENCE.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_COPY_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_LOOKUP_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_NEXT_FIND_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_DISK_READ_RATIO=0; + +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_COPY_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_LOOKUP_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_NEXT_FIND_COST=0.006239153; + +SET GLOBAL SEQUENCE.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL SEQUENCE.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL heap.OPTIMIZER_DISK_READ_COST=0; + +SET GLOBAL heap.OPTIMIZER_INDEX_BLOCK_COPY_COST=0; + +SET GLOBAL heap.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL heap.OPTIMIZER_KEY_COPY_COST=0; + +SET GLOBAL heap.OPTIMIZER_KEY_LOOKUP_COST=0; + +SET GLOBAL heap.OPTIMIZER_KEY_NEXT_FIND_COST=0; + +SET GLOBAL heap.OPTIMIZER_DISK_READ_RATIO=0; + +SET GLOBAL heap.OPTIMIZER_ROW_COPY_COST=0.002334; + +SET GLOBAL heap.OPTIMIZER_ROW_LOOKUP_COST=0; + +SET GLOBAL heap.OPTIMIZER_ROW_NEXT_FIND_COST=0.0080166; + +SET GLOBAL heap.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL heap.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET GLOBAL temp_table.OPTIMIZER_DISK_READ_COST=10.24; + +SET GLOBAL temp_table.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; + +SET GLOBAL temp_table.OPTIMIZER_KEY_COMPARE_COST=0.011361; + +SET GLOBAL temp_table.OPTIMIZER_KEY_COPY_COST=0.015685; + +SET GLOBAL temp_table.OPTIMIZER_KEY_LOOKUP_COST=0.435777; + +SET GLOBAL temp_table.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; + +SET GLOBAL temp_table.OPTIMIZER_DISK_READ_RATIO=0.02; + +SET GLOBAL temp_table.OPTIMIZER_ROW_COPY_COST=0.060866; + +SET GLOBAL temp_table.OPTIMIZER_ROW_LOOKUP_COST=0.130839; + +SET GLOBAL temp_table.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; + +SET GLOBAL temp_table.OPTIMIZER_ROWID_COMPARE_COST=0.002653; + +SET GLOBAL temp_table.OPTIMIZER_ROWID_COPY_COST=0.002653; + +SET join_buffer_size=262144; SET join_cache_level=2; @@ -87,6 +303,114 @@ dumpfile "dump1.sql" from information_schema.optimizer_context; ERROR HY000: The MariaDB server is running with the --secure-file-priv option so it cannot execute this statement drop table t1; SET NAMES utf8mb4; +SET GLOBAL MEMORY.OPTIMIZER_DISK_READ_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_INDEX_BLOCK_COPY_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL MEMORY.OPTIMIZER_KEY_COPY_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_KEY_LOOKUP_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_KEY_NEXT_FIND_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_DISK_READ_RATIO=0; +SET GLOBAL MEMORY.OPTIMIZER_ROW_COPY_COST=0.002334; +SET GLOBAL MEMORY.OPTIMIZER_ROW_LOOKUP_COST=0; +SET GLOBAL MEMORY.OPTIMIZER_ROW_NEXT_FIND_COST=0.0080166; +SET GLOBAL MEMORY.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL MEMORY.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL CSV.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL CSV.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL CSV.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL CSV.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL CSV.OPTIMIZER_KEY_LOOKUP_COST=0.435777; +SET GLOBAL CSV.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; +SET GLOBAL CSV.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL CSV.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL CSV.OPTIMIZER_ROW_LOOKUP_COST=0.130839; +SET GLOBAL CSV.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; +SET GLOBAL CSV.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL CSV.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_LOOKUP_COST=0.435777; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_LOOKUP_COST=0.130839; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL PERFORMANCE_SCHEMA.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL Aria.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL Aria.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL Aria.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL Aria.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL Aria.OPTIMIZER_KEY_LOOKUP_COST=0.435777; +SET GLOBAL Aria.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; +SET GLOBAL Aria.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL Aria.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL Aria.OPTIMIZER_ROW_LOOKUP_COST=0.130839; +SET GLOBAL Aria.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; +SET GLOBAL Aria.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL Aria.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL MyISAM.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL MyISAM.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL MyISAM.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL MyISAM.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL MyISAM.OPTIMIZER_KEY_LOOKUP_COST=0.550142; +SET GLOBAL MyISAM.OPTIMIZER_KEY_NEXT_FIND_COST=0.090585; +SET GLOBAL MyISAM.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL MyISAM.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL MyISAM.OPTIMIZER_ROW_LOOKUP_COST=1.014818; +SET GLOBAL MyISAM.OPTIMIZER_ROW_NEXT_FIND_COST=0.063539; +SET GLOBAL MyISAM.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL MyISAM.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL MRG_MyISAM.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL MRG_MyISAM.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_LOOKUP_COST=0.550142; +SET GLOBAL MRG_MyISAM.OPTIMIZER_KEY_NEXT_FIND_COST=0.090585; +SET GLOBAL MRG_MyISAM.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_LOOKUP_COST=1.014818; +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROW_NEXT_FIND_COST=0.063539; +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL MRG_MyISAM.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL SEQUENCE.OPTIMIZER_DISK_READ_COST=0; +SET GLOBAL SEQUENCE.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_COPY_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_LOOKUP_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_KEY_NEXT_FIND_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_DISK_READ_RATIO=0; +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_COPY_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_LOOKUP_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_ROW_NEXT_FIND_COST=0.006239153; +SET GLOBAL SEQUENCE.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL SEQUENCE.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL heap.OPTIMIZER_DISK_READ_COST=0; +SET GLOBAL heap.OPTIMIZER_INDEX_BLOCK_COPY_COST=0; +SET GLOBAL heap.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL heap.OPTIMIZER_KEY_COPY_COST=0; +SET GLOBAL heap.OPTIMIZER_KEY_LOOKUP_COST=0; +SET GLOBAL heap.OPTIMIZER_KEY_NEXT_FIND_COST=0; +SET GLOBAL heap.OPTIMIZER_DISK_READ_RATIO=0; +SET GLOBAL heap.OPTIMIZER_ROW_COPY_COST=0.002334; +SET GLOBAL heap.OPTIMIZER_ROW_LOOKUP_COST=0; +SET GLOBAL heap.OPTIMIZER_ROW_NEXT_FIND_COST=0.0080166; +SET GLOBAL heap.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL heap.OPTIMIZER_ROWID_COPY_COST=0.002653; +SET GLOBAL temp_table.OPTIMIZER_DISK_READ_COST=10.24; +SET GLOBAL temp_table.OPTIMIZER_INDEX_BLOCK_COPY_COST=0.0356; +SET GLOBAL temp_table.OPTIMIZER_KEY_COMPARE_COST=0.011361; +SET GLOBAL temp_table.OPTIMIZER_KEY_COPY_COST=0.015685; +SET GLOBAL temp_table.OPTIMIZER_KEY_LOOKUP_COST=0.435777; +SET GLOBAL temp_table.OPTIMIZER_KEY_NEXT_FIND_COST=0.082347; +SET GLOBAL temp_table.OPTIMIZER_DISK_READ_RATIO=0.02; +SET GLOBAL temp_table.OPTIMIZER_ROW_COPY_COST=0.060866; +SET GLOBAL temp_table.OPTIMIZER_ROW_LOOKUP_COST=0.130839; +SET GLOBAL temp_table.OPTIMIZER_ROW_NEXT_FIND_COST=0.045916; +SET GLOBAL temp_table.OPTIMIZER_ROWID_COMPARE_COST=0.002653; +SET GLOBAL temp_table.OPTIMIZER_ROWID_COPY_COST=0.002653; SET join_buffer_size=262144; SET join_cache_level=2; SET optimizer_adjust_secondary_key_costs=0; diff --git a/sql/opt_context_store_replay.cc b/sql/opt_context_store_replay.cc index e0f9594a0dbca..a7f5db2c19579 100644 --- a/sql/opt_context_store_replay.cc +++ b/sql/opt_context_store_replay.cc @@ -156,6 +156,7 @@ class table_context_for_store : public Sql_alloc namespace Show { +extern ST_FIELD_INFO optimizer_costs_fields_info[]; ST_FIELD_INFO optimizer_context_capture_info[]= { Column("QUERY", Longtext(65535), NOT_NULL), @@ -408,6 +409,50 @@ static bool is_optimizer_related_var(const char **sys_vars, return false; } +static void store_optimizer_costs(const char *engine, + const OPTIMIZER_COSTS *costs, + String &sql_script) +{ + char buf[64]; + for (uint i= 0; Show::optimizer_costs_fields_info[i + 1].name(); i++) + { + String var_name; + double cost_val= ((double *) costs)[i]; + const ST_FIELD_INFO *field_info= &Show::optimizer_costs_fields_info[i + 1]; + + sql_script.append(STRING_WITH_LEN("SET ")); + sql_script.append(STRING_WITH_LEN("GLOBAL ")); + + var_name.append(engine, strlen(engine)); + var_name.append(STRING_WITH_LEN(".")); + var_name.append(field_info->name()); + + sql_script.append(var_name); + sql_script.append(STRING_WITH_LEN("=")); + + if (strcmp(field_info->name().str, "OPTIMIZER_DISK_READ_RATIO") != 0) + cost_val= ((double *) costs)[i] * 1000.0; + + size_t len= my_snprintf(buf, sizeof(buf), "%-.11lg", cost_val); + sql_script.append(buf, len); + sql_script.append(STRING_WITH_LEN(";\n\n")); + } +} + +static my_bool store_engine_costs_callback(THD *thd, plugin_ref plugin, + void *arg) +{ + String *sql_script= (String *) arg; + handlerton *hton= plugin_hton(plugin); + if (hton->optimizer_costs) + { + store_optimizer_costs(plugin_name(plugin)->str, + (OPTIMIZER_COSTS *) hton->optimizer_costs, + *sql_script); + } + return 0; +} + /* @brief Save current values of optimizer variables: append to sql_script @@ -427,6 +472,14 @@ static void store_system_variables(THD *thd, String &sql_script) size_t len; StringBuffer<1024> buf; const char *pos; + + // store all plugin-engines optimizer cost values + plugin_foreach_with_mask(thd, store_engine_costs_callback, + MYSQL_STORAGE_ENGINE_PLUGIN, PLUGIN_IS_READY, + &sql_script); + store_optimizer_costs("heap", &heap_optimizer_costs, sql_script); + store_optimizer_costs("temp_table", &tmp_table_optimizer_costs, sql_script); + for (SHOW_VAR *show_var= all_session_vars; show_var->name != NULL; show_var++) {