MCPcopy Create free account
hub / github.com/Meituan-Dianping/SQLAdvisor / mysql_sql_parse_join

Function mysql_sql_parse_join

sqladvisor/main.cc:147–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145}
146
147void mysql_sql_parse_join(TABLE_LIST *join_table) {
148 List_iterator<TABLE_LIST> li_join_list(join_table->nested_join->join_list);
149 TABLE_LIST * table_right = li_join_list++;
150 TABLE_LIST * table_left = li_join_list++;
151 List_iterator<String> using_fields(*join_table->join_using_fields);
152 String *using_field;
153 while ((using_field = using_fields++)) {
154 if (options.verbose)
155 sql_print_information("第%d步:开始解析join using条件:%s \n", STEP_CNT++,
156 using_field->ptr());
157 Item_field * field_cond_left = new Item_field(NULL, NULL,
158 table_left->table_name, using_field->ptr());
159 Item_field * field_cond_right = new Item_field(NULL, NULL,
160 table_right->table_name, using_field->ptr());
161
162 JOIN_CONDITION * right_table_join = new JOIN_CONDITION(table_left);
163 JOIN_CONDITION * left_table_join = new JOIN_CONDITION(table_right);
164
165 right_table_join->get_join_field()->push_back(field_cond_left);
166 left_table_join->get_join_field()->push_back(field_cond_right);
167
168 table_right->get_join_condition()->push_back(right_table_join);
169 table_left->get_join_condition()->push_back(left_table_join);
170 }
171}
172
173void mysql_sql_parse_join(Item *join_condition) {
174 Item::Type type = join_condition->type();

Callers 2

find_join_elements_newFunction · 0.85
mysql_sql_parseFunction · 0.85

Calls 11

sql_print_informationFunction · 0.85
find_tableFunction · 0.85
mysql_sql_parseFunction · 0.85
get_join_fieldMethod · 0.80
get_join_conditionMethod · 0.80
argument_countMethod · 0.80
argumentsMethod · 0.80
ptrMethod · 0.45
push_backMethod · 0.45
typeMethod · 0.45
full_nameMethod · 0.45

Tested by

no test coverage detected