sql_select.cc
bool
make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after)
table->type
sql_executor.cc
pick_table_access_method()
JT_EQ_REF
sql_select.cc
j->type=JT_EQ_REF;
bool create_ref_for_key(JOIN *join, JOIN_TAB *j, Key_use *org_keyuse,
table_map used_tables)
BNL 算法,读内表的函数栈:
sql_executor.cc 1050:op->end_send();
sql_parse.cc 447: join_records();
sql_join_buffer.cc 1702: join_matching_records();
sql_join_buffer.cc 1855: read_first_record();
sql_executor.cc 2392: read_record();
records.cc:478: ha_rnd_next();
join buffer前的标记字段通过调用:
sql_join_buffer.cc 273: create_flag_fields()
读取join buffer中的字段值是在:
sql_join_buffer.cc 1897: get_record();
比较是在:
sql_join_buffer.cc 1898: generate_full_entensions();
读取第二张nation表的代码是在:
sql_join_buffer.cc 1827: join_matching_records();
1905: read_record();
之前应该调用了first_read_record读取了第一条记录