mysql code

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读取了第一条记录



你可能感兴趣的:(mysql code)