Loading mysql-test/r/insert_update.result +1 −1 Original line number Diff line number Diff line DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B)); INSERT t1 VALUES (1,2,10), (3,4,20); INSERT t1 VALUES (5,6,30) ON DUPLICATE KEY UPDATE c=c+100; Loading mysql-test/t/insert_update.test +1 −1 Original line number Diff line number Diff line --disable_warnings DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1, t2; --enable_warnings CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B)); Loading sql/sql_base.cc +9 −4 Original line number Diff line number Diff line Loading @@ -2626,7 +2626,6 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, uint length=(uint) strlen(name); char name_buff[NAME_LEN+1]; if (item->cached_table) { /* Loading Loading @@ -2693,10 +2692,13 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, db= name_buff; } bool search_global= item->item_flags & MY_ITEM_PREFER_1ST_TABLE; if (table_name && table_name[0]) { /* Qualified field */ bool found_table=0; for (; tables; tables= tables->next_local) uint table_idx= 0; for (; tables; tables= search_global?tables->next_global:tables->next_local, table_idx++) { /* TODO; Ensure that db and tables->db always points to something ! */ if (!my_strcasecmp(table_alias_charset, tables->alias, table_name) && Loading Loading @@ -2732,6 +2734,8 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, return (Field*) 0; } found=find; if (table_idx == 0 && item->item_flags & MY_ITEM_PREFER_1ST_TABLE) break; } } } Loading @@ -2758,7 +2762,8 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, } bool allow_rowid= tables && !tables->next_local; // Only one table uint table_idx= 0; for (; tables ; tables= tables->next_local, table_idx++) for (; tables ; tables= search_global?tables->next_global:tables->next_local, table_idx++) { if (!tables->table && !tables->ancestor) { Loading Loading
mysql-test/r/insert_update.result +1 −1 Original line number Diff line number Diff line DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B)); INSERT t1 VALUES (1,2,10), (3,4,20); INSERT t1 VALUES (5,6,30) ON DUPLICATE KEY UPDATE c=c+100; Loading
mysql-test/t/insert_update.test +1 −1 Original line number Diff line number Diff line --disable_warnings DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1, t2; --enable_warnings CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B)); Loading
sql/sql_base.cc +9 −4 Original line number Diff line number Diff line Loading @@ -2626,7 +2626,6 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, uint length=(uint) strlen(name); char name_buff[NAME_LEN+1]; if (item->cached_table) { /* Loading Loading @@ -2693,10 +2692,13 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, db= name_buff; } bool search_global= item->item_flags & MY_ITEM_PREFER_1ST_TABLE; if (table_name && table_name[0]) { /* Qualified field */ bool found_table=0; for (; tables; tables= tables->next_local) uint table_idx= 0; for (; tables; tables= search_global?tables->next_global:tables->next_local, table_idx++) { /* TODO; Ensure that db and tables->db always points to something ! */ if (!my_strcasecmp(table_alias_charset, tables->alias, table_name) && Loading Loading @@ -2732,6 +2734,8 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, return (Field*) 0; } found=find; if (table_idx == 0 && item->item_flags & MY_ITEM_PREFER_1ST_TABLE) break; } } } Loading @@ -2758,7 +2762,8 @@ find_field_in_tables(THD *thd, Item_ident *item, TABLE_LIST *tables, } bool allow_rowid= tables && !tables->next_local; // Only one table uint table_idx= 0; for (; tables ; tables= tables->next_local, table_idx++) for (; tables ; tables= search_global?tables->next_global:tables->next_local, table_idx++) { if (!tables->table && !tables->ancestor) { Loading