| 145 | } |
| 146 | |
| 147 | void 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 | |
| 173 | void mysql_sql_parse_join(Item *join_condition) { |
| 174 | Item::Type type = join_condition->type(); |
no test coverage detected