28#ifndef SQL_OPT_EXEC_SHARED_INCLUDED
29#define SQL_OPT_EXEC_SHARED_INCLUDED
54#define NO_PLAN_IDX (-2)
55#define PRE_FIRST_PLAN_IDX \
Definition: sql_bitmap.h:137
Sorting related info.
Definition: filesort.h:51
Definition: item_func.h:3447
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Definition: sql_optimizer.h:125
Owner of a QEP_shared; parent of JOIN_TAB and QEP_TAB.
Definition: sql_opt_exec_shared.h:469
void set_first_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:507
void set_position(POSITION *p)
Definition: sql_opt_exec_shared.h:497
void set_prefix_tables(table_map prefix_tables, table_map prev_tables)
Definition: sql_opt_exec_shared.h:534
JOIN * join() const
Definition: sql_opt_exec_shared.h:482
void set_type(enum join_type t)
Definition: sql_opt_exec_shared.h:516
TABLE * table() const
Definition: sql_opt_exec_shared.h:495
Key_map & keys() const
Definition: sql_opt_exec_shared.h:525
QEP_shared * m_qs
Definition: sql_opt_exec_shared.h:565
bool is_single_inner_for_outer_join() const
Definition: sql_opt_exec_shared.h:549
plan_idx first_upper() const
Definition: sql_opt_exec_shared.h:506
void set_condition(Item *to)
Definition: sql_opt_exec_shared.h:518
qep_tab_map idx_map() const
Definition: sql_opt_exec_shared.h:490
plan_idx first_sj_inner() const
Definition: sql_opt_exec_shared.h:502
bool is_first_inner_for_outer_join() const
Definition: sql_opt_exec_shared.h:546
AccessPath * range_scan() const
Definition: sql_opt_exec_shared.h:528
TABLE_REF & ref() const
Definition: sql_opt_exec_shared.h:512
bool is_single_inner_of_semi_join() const
Definition: sql_opt_exec_shared.h:540
void set_skip_records_in_range(bool skip_records_in_range)
Definition: sql_opt_exec_shared.h:556
void set_first_sj_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:509
Semijoin_mat_exec * sj_mat_exec() const
Definition: sql_opt_exec_shared.h:498
uint index() const
Definition: sql_opt_exec_shared.h:513
void set_qs(QEP_shared *q)
Definition: sql_opt_exec_shared.h:475
plan_idx first_inner() const
Definition: sql_opt_exec_shared.h:504
bool is_inner_table_of_outer_join() const
Definition: sql_opt_exec_shared.h:543
void set_last_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:508
void set_range_scan(AccessPath *q)
Definition: sql_opt_exec_shared.h:529
void set_ft_func(Item_func_match *f)
Definition: sql_opt_exec_shared.h:533
void set_first_upper(plan_idx i)
Definition: sql_opt_exec_shared.h:511
void set_records(ha_rows r)
Definition: sql_opt_exec_shared.h:527
ha_rows records() const
Definition: sql_opt_exec_shared.h:526
table_map prefix_tables() const
Definition: sql_opt_exec_shared.h:530
bool has_guarded_conds() const
Definition: sql_opt_exec_shared.h:553
QEP_shared_owner()
Definition: sql_opt_exec_shared.h:471
void set_join(JOIN *j)
Definition: sql_opt_exec_shared.h:483
bool skip_records_in_range() const
Definition: sql_opt_exec_shared.h:560
bool condition_is_pushed_to_sort() const
Definition: sql_opt_exec_shared.h:519
void mark_condition_as_pushed_to_sort()
Definition: sql_opt_exec_shared.h:522
Item * condition() const
Definition: sql_opt_exec_shared.h:517
enum join_type type() const
Definition: sql_opt_exec_shared.h:515
void share_qs(QEP_shared_owner *other)
Instructs to share the QEP_shared with another owner.
Definition: sql_opt_exec_shared.h:474
plan_idx last_inner() const
Definition: sql_opt_exec_shared.h:505
plan_idx idx() const
Definition: sql_opt_exec_shared.h:488
void add_prefix_tables(table_map tables)
Definition: sql_opt_exec_shared.h:537
void set_idx(plan_idx i)
Definition: sql_opt_exec_shared.h:489
POSITION * position() const
Definition: sql_opt_exec_shared.h:496
void set_index(uint i)
Definition: sql_opt_exec_shared.h:514
void set_sj_mat_exec(Semijoin_mat_exec *s)
Definition: sql_opt_exec_shared.h:499
Item_func_match * ft_func() const
Definition: sql_opt_exec_shared.h:532
table_map added_tables() const
Definition: sql_opt_exec_shared.h:531
plan_idx last_sj_inner() const
Definition: sql_opt_exec_shared.h:503
void set_last_sj_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:510
Holds members common to JOIN_TAB and QEP_TAB.
Definition: sql_opt_exec_shared.h:227
bool m_skip_records_in_range
Set if index dive can be skipped for this query.
Definition: sql_opt_exec_shared.h:465
table_map added_tables() const
Definition: sql_opt_exec_shared.h:302
void set_join(JOIN *j)
Definition: sql_opt_exec_shared.h:258
plan_idx m_first_sj_inner
Boundaries of semijoin inner tables around this table.
Definition: sql_opt_exec_shared.h:383
QEP_shared()
Definition: sql_opt_exec_shared.h:229
JOIN * m_join
Definition: sql_opt_exec_shared.h:350
bool is_first_inner_for_outer_join() const
Definition: sql_opt_exec_shared.h:331
Item_func_match * m_ft_func
FT function.
Definition: sql_opt_exec_shared.h:459
bool is_single_inner_of_outer_join() const
Definition: sql_opt_exec_shared.h:339
Semijoin_mat_exec * sj_mat_exec() const
Definition: sql_opt_exec_shared.h:271
plan_idx m_idx
Index of structure in array:
Definition: sql_opt_exec_shared.h:358
void set_last_sj_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:279
void set_first_sj_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:278
AccessPath * m_range_scan
Non-NULL if quick-select used.
Definition: sql_opt_exec_shared.h:440
plan_idx m_last_inner
last table table for embedding outer join
Definition: sql_opt_exec_shared.h:389
plan_idx first_inner()
Definition: sql_opt_exec_shared.h:275
TABLE_REF m_ref
Used to do index-based look up based on a key value.
Definition: sql_opt_exec_shared.h:397
bool is_single_inner_of_semi_join() const
Definition: sql_opt_exec_shared.h:336
void set_position(POSITION *p)
Definition: sql_opt_exec_shared.h:270
POSITION * position() const
Definition: sql_opt_exec_shared.h:269
void add_prefix_tables(table_map tables)
Add an available set of tables for a table in a join plan.
Definition: sql_opt_exec_shared.h:326
bool is_inner_table_of_outer_join() const
Definition: sql_opt_exec_shared.h:333
bool condition_is_pushed_to_sort() const
Definition: sql_opt_exec_shared.h:290
plan_idx first_sj_inner()
Definition: sql_opt_exec_shared.h:273
void set_range_scan(AccessPath *q)
Definition: sql_opt_exec_shared.h:300
void set_ft_func(Item_func_match *f)
Definition: sql_opt_exec_shared.h:304
Semijoin_mat_exec * m_sj_mat_exec
Struct needed for materialization of semi-join.
Definition: sql_opt_exec_shared.h:375
AccessPath * range_scan() const
Definition: sql_opt_exec_shared.h:299
plan_idx m_first_upper
first inner table for embedding outer join
Definition: sql_opt_exec_shared.h:390
table_map prefix_tables_map
The set of all tables available in the join prefix for this table, including the table handled by thi...
Definition: sql_opt_exec_shared.h:451
bool m_condition_is_pushed_to_sort
Whether the condition in m_condition is evaluated in front of a sort, so that it does not need to be ...
Definition: sql_opt_exec_shared.h:420
plan_idx m_last_sj_inner
Definition: sql_opt_exec_shared.h:383
TABLE * table() const
Definition: sql_opt_exec_shared.h:267
Item * m_condition
Table condition, ie condition to be evaluated for a row from this table.
Definition: sql_opt_exec_shared.h:410
void set_first_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:276
void set_index(uint i)
Definition: sql_opt_exec_shared.h:285
Key_map m_keys
All keys with can be used.
Definition: sql_opt_exec_shared.h:427
uint index() const
Definition: sql_opt_exec_shared.h:284
ha_rows records() const
Definition: sql_opt_exec_shared.h:297
TABLE * m_table
Corresponding table. Might be an internal temporary one.
Definition: sql_opt_exec_shared.h:361
void set_type(enum join_type t)
Definition: sql_opt_exec_shared.h:287
uint m_index
ID of index used for index scan or semijoin LooseScan.
Definition: sql_opt_exec_shared.h:400
void mark_condition_as_pushed_to_sort()
Definition: sql_opt_exec_shared.h:293
ha_rows m_records
Either number of rows in the table or 1 for const table.
Definition: sql_opt_exec_shared.h:433
POSITION * m_position
Points into best_positions array. Includes cost info.
Definition: sql_opt_exec_shared.h:364
enum join_type type() const
Definition: sql_opt_exec_shared.h:286
void set_condition(Item *c)
Definition: sql_opt_exec_shared.h:289
plan_idx m_first_inner
first inner table for including outer join
Definition: sql_opt_exec_shared.h:388
void set_prefix_tables(table_map prefix_tables_arg, table_map prev_tables_arg)
Set available tables for a table in a join plan.
Definition: sql_opt_exec_shared.h:315
table_map added_tables_map
The set of tables added for this table, compared to the previous table in the join prefix.
Definition: sql_opt_exec_shared.h:456
table_map prefix_tables() const
Definition: sql_opt_exec_shared.h:301
Key_map & keys()
Definition: sql_opt_exec_shared.h:296
enum join_type m_type
Type of chosen access method (scan, etc).
Definition: sql_opt_exec_shared.h:403
Item * condition() const
Definition: sql_opt_exec_shared.h:288
plan_idx idx() const
Definition: sql_opt_exec_shared.h:259
void set_records(ha_rows r)
Definition: sql_opt_exec_shared.h:298
plan_idx last_inner()
Definition: sql_opt_exec_shared.h:281
void set_first_upper(plan_idx i)
Definition: sql_opt_exec_shared.h:280
plan_idx last_sj_inner()
Definition: sql_opt_exec_shared.h:274
void set_idx(plan_idx i)
Definition: sql_opt_exec_shared.h:263
Item_func_match * ft_func() const
Definition: sql_opt_exec_shared.h:303
bool skip_records_in_range() const
Definition: sql_opt_exec_shared.h:347
JOIN * join() const
Definition: sql_opt_exec_shared.h:257
void set_table(TABLE *t)
Definition: sql_opt_exec_shared.h:268
plan_idx first_upper()
Definition: sql_opt_exec_shared.h:282
void set_sj_mat_exec(Semijoin_mat_exec *s)
Definition: sql_opt_exec_shared.h:272
void set_skip_records_in_range(bool skip_records_in_range)
Definition: sql_opt_exec_shared.h:343
void set_last_inner(plan_idx i)
Definition: sql_opt_exec_shared.h:277
TABLE_REF & ref()
Definition: sql_opt_exec_shared.h:283
Executor structure for the materialized semi-join info, which contains.
Definition: sql_executor.h:143
class to copying an field/item to a key struct
Definition: sql_select.h:809
const char * p
Definition: ctype-mb.cc:1236
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
bool and_with_condition(Item *tmp_cond)
Extend join_tab->cond by AND'ing add_cond to it.
Definition: sql_select.cc:3412
void qs_cleanup()
Definition: sql_select.cc:3373
This file includes constants used by all storage engines.
ulong key_part_map
Definition: my_base.h:1006
my_off_t ha_rows
Definition: my_base.h:1139
unsigned long long int ulonglong
Definition: my_inttypes.h:55
unsigned char uchar
Definition: my_inttypes.h:51
uint64_t table_map
Definition: my_table_map.h:29
uint64_t qep_tab_map
Definition: my_table_map.h:31
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:85
join_type
Definition: sql_opt_exec_shared.h:177
@ JT_RANGE
Definition: sql_opt_exec_shared.h:205
@ JT_EQ_REF
Definition: sql_opt_exec_shared.h:193
@ JT_INDEX_SCAN
Definition: sql_opt_exec_shared.h:210
@ JT_FT
Definition: sql_opt_exec_shared.h:212
@ JT_SYSTEM
Definition: sql_opt_exec_shared.h:181
@ JT_REF_OR_NULL
Definition: sql_opt_exec_shared.h:217
@ JT_REF
Definition: sql_opt_exec_shared.h:197
@ JT_CONST
Definition: sql_opt_exec_shared.h:187
@ JT_INDEX_MERGE
Definition: sql_opt_exec_shared.h:223
@ JT_UNKNOWN
Definition: sql_opt_exec_shared.h:179
@ JT_ALL
Definition: sql_opt_exec_shared.h:201
int plan_idx
This represents the index of a JOIN_TAB/QEP_TAB in an array.
Definition: sql_opt_exec_shared.h:53
@ REF_SLICE_WIN_1
The slice with pointers to columns of 1st tmp table of windowing.
Definition: sql_opt_exec_shared.h:633
@ REF_SLICE_ACTIVE
The slice which is used during evaluation of expressions; Item_ref::ref points there.
Definition: sql_opt_exec_shared.h:612
@ REF_SLICE_TMP2
The slice with pointers to columns of 2nd group-order-distinct tmp table.
Definition: sql_opt_exec_shared.h:622
@ REF_SLICE_SAVED_BASE
The slice with pointers to columns of table(s), ie., the actual Items.
Definition: sql_opt_exec_shared.h:629
@ REF_SLICE_TMP1
The slice with pointers to columns of 1st group-order-distinct tmp table.
Definition: sql_opt_exec_shared.h:617
#define NO_PLAN_IDX
undefined index
Definition: sql_opt_exec_shared.h:54
Access paths are a query planning structure that correspond 1:1 to iterators, in that an access path ...
Definition: access_path.h:188
A position of table within a join order.
Definition: sql_select.h:351
Definition: sql_opt_exec_shared.h:58
uchar * null_ref_key
Definition: sql_opt_exec_shared.h:101
bool has_guarded_conds() const
Check if there are triggered/guarded conditions that might be 'switched off' by the subquery code whe...
Definition: sql_opt_exec_shared.h:159
uint key_parts
num of ...
Definition: sql_opt_exec_shared.h:60
int key
key no
Definition: sql_opt_exec_shared.h:62
TABLE_REF()
Definition: sql_opt_exec_shared.h:121
store_key ** key_copy
Used to store the value from each keypart field.
Definition: sql_opt_exec_shared.h:70
uint key_length
length of key_buff
Definition: sql_opt_exec_shared.h:61
bool impossible_null_ref() const
Definition: sql_opt_exec_shared.h:141
ulonglong * keypart_hash
Definition: sql_opt_exec_shared.h:119
uchar * key_buff2
key_buff+key_length
Definition: sql_opt_exec_shared.h:64
bool ** cond_guards
Definition: sql_opt_exec_shared.h:88
bool key_err
Definition: sql_opt_exec_shared.h:59
bool disable_cache
Definition: sql_opt_exec_shared.h:112
table_map depend_map
Table depends on these tables.
Definition: sql_opt_exec_shared.h:95
uchar * key_buff
value to look for with key
Definition: sql_opt_exec_shared.h:63
ha_rows use_count
Definition: sql_opt_exec_shared.h:106
key_part_map null_rejecting
Definition: sql_opt_exec_shared.h:94
Item ** items
val()'s for each keypart
Definition: sql_opt_exec_shared.h:71
unsigned int uint
Definition: uca-dump.cc:29
synode_no q[FIFO_SIZE]
Definition: xcom_base.cc:4053