MySQL 8.4.3
Source Code Documentation
|
Create plan for a single select. More...
#include "sql/sql_planner.h"
#include "my_config.h"
#include <float.h>
#include <limits.h>
#include <string.h>
#include <algorithm>
#include <atomic>
#include <bit>
#include "my_base.h"
#include "my_bitmap.h"
#include "my_compiler.h"
#include "my_dbug.h"
#include "my_double2ulonglong.h"
#include "my_macros.h"
#include "sql/enum_query_type.h"
#include "sql/field.h"
#include "sql/handler.h"
#include "sql/item.h"
#include "sql/item_cmpfunc.h"
#include "sql/join_optimizer/access_path.h"
#include "sql/key.h"
#include "sql/merge_sort.h"
#include "sql/nested_join.h"
#include "sql/opt_costmodel.h"
#include "sql/opt_hints.h"
#include "sql/opt_trace.h"
#include "sql/opt_trace_context.h"
#include "sql/query_options.h"
#include "sql/query_result.h"
#include "sql/range_optimizer/path_helpers.h"
#include "sql/range_optimizer/range_optimizer.h"
#include "sql/sql_bitmap.h"
#include "sql/sql_class.h"
#include "sql/sql_const.h"
#include "sql/sql_lex.h"
#include "sql/sql_list.h"
#include "sql/sql_opt_exec_shared.h"
#include "sql/sql_optimizer.h"
#include "sql/sql_select.h"
#include "sql/sql_test.h"
#include "sql/system_variables.h"
#include "sql/table.h"
#include "sql/window.h"
#include "sql_string.h"
Classes | |
class | anonymous_namespace{sql_planner.cc}::Join_tab_compare_straight |
"Less than" comparison function object used to compare two JOIN_TAB objects that are joined using STRAIGHT JOIN. More... | |
class | anonymous_namespace{sql_planner.cc}::Join_tab_compare_embedded_first |
Namespaces | |
namespace | anonymous_namespace{sql_planner.cc} |
Functions | |
static double | prev_record_reads (JOIN *join, uint idx, table_map found_ref) |
static void | trace_plan_prefix (JOIN *join, uint idx, table_map excluded_tables) |
Helper function to write the current plan's prefix to the optimizer trace. More... | |
static uint | max_part_bit (key_part_map bits) |
static uint | cache_record_length (JOIN *join, uint idx) |
double | find_cost_for_ref (const THD *thd, TABLE *table, unsigned keyno, double num_rows, double worst_seeks) |
Find the cost for a ref lookup on the given index, assumed to return “num_rows” rows. More... | |
float | calculate_condition_filter (const JOIN_TAB *const tab, const Key_use *const keyuse, table_map used_tables, double fanout, bool is_join_buffering, bool write_to_trace, Opt_trace_object &parent_trace) |
Calculate 'Post read filtering' effect of JOIN::conds for table 'tab'. More... | |
static ulonglong | get_bound_sj_equalities (const JOIN_TAB *tab, table_map not_available_tables) |
Returns a bitmap of bound semi-join equalities. More... | |
static int | semijoin_order_allows_materialization (const JOIN *join, table_map remaining_tables, const JOIN_TAB *tab, uint idx) |
Check whether a semijoin materialization strategy is allowed for the current (semi)join table order. More... | |
void | get_partial_join_cost (JOIN *join, uint n_tables, double *cost_arg, double *rowcount_arg) |
Calculate a cost of given partial join order. More... | |
static bool | almost_equal (double left, double right) |
Helper function that compares two doubles and accept these as "almost equal" if they are within 10 percent of each other. More... | |
Variables | |
static constexpr const ha_rows | MATCHING_ROWS_IN_OTHER_TABLE {10} |
Number of rows in a reference table when refereed through a not unique key. More... | |
Create plan for a single select.