Commit a5711053 authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi

row0mysql.c Fix REPLACE problem, non-latin1 charset bug

row0upd.c	Fix REPLACE problem, non-latin1 charset bug
rem0cmp.c	Fix REPLACE problem, non-latin1 charset bug
parent becf27e6
...@@ -171,6 +171,7 @@ cmp_whole_field( ...@@ -171,6 +171,7 @@ cmp_whole_field(
} }
return(0); return(0);
case DATA_VARMYSQL:
case DATA_MYSQL: case DATA_MYSQL:
return(innobase_mysql_cmp( return(innobase_mysql_cmp(
(int)(type->prtype & ~DATA_NOT_NULL), (int)(type->prtype & ~DATA_NOT_NULL),
......
...@@ -634,31 +634,21 @@ row_update_for_mysql( ...@@ -634,31 +634,21 @@ row_update_for_mysql(
clust_index = dict_table_get_first_index(table); clust_index = dict_table_get_first_index(table);
if (prebuilt->in_update_remember_pos) { if (prebuilt->pcur->btr_cur.index == clust_index) {
if (prebuilt->index == clust_index) {
btr_pcur_copy_stored_position(node->pcur,
prebuilt->pcur);
} else {
btr_pcur_copy_stored_position(node->pcur,
prebuilt->clust_pcur);
}
ut_a(node->pcur->rel_pos == BTR_PCUR_ON);
goto skip_cursor_search;
} else {
/* MySQL seems to call rnd_pos before updating each row it
has cached: we can get the correct cursor position from
prebuilt->pcur; NOTE that we cannot build the row reference
from mysql_rec if the clustered index was automatically
generated for the table: MySQL does not know anything about
the row id used as the clustered index key */
btr_pcur_copy_stored_position(node->pcur, prebuilt->pcur); btr_pcur_copy_stored_position(node->pcur, prebuilt->pcur);
ut_a(node->pcur->rel_pos == BTR_PCUR_ON); } else {
btr_pcur_copy_stored_position(node->pcur, prebuilt->clust_pcur);
goto skip_cursor_search;
} }
ut_a(node->pcur->rel_pos == BTR_PCUR_ON);
/* MySQL seems to call rnd_pos before updating each row it
has cached: we can get the correct cursor position from
prebuilt->pcur; NOTE that we cannot build the row reference
from mysql_rec if the clustered index was automatically
generated for the table: MySQL does not know anything about
the row id used as the clustered index key */
#ifdef notdefined #ifdef notdefined
/* We have to search for the correct cursor position */ /* We have to search for the correct cursor position */
...@@ -691,7 +681,6 @@ row_update_for_mysql( ...@@ -691,7 +681,6 @@ row_update_for_mysql(
mem_heap_free(heap); mem_heap_free(heap);
#endif #endif
skip_cursor_search:
savept = trx_savept_take(trx); savept = trx_savept_take(trx);
thr = que_fork_get_first_thr(prebuilt->upd_graph); thr = que_fork_get_first_thr(prebuilt->upd_graph);
......
...@@ -1196,7 +1196,7 @@ row_upd( ...@@ -1196,7 +1196,7 @@ row_upd(
} }
} }
if (node->cmpl_info & UPD_NODE_NO_ORD_CHANGE) { if (!node->is_delete && (node->cmpl_info & UPD_NODE_NO_ORD_CHANGE)) {
goto function_exit; goto function_exit;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment