diff options
author | unknown <heikki@donna.mysql.fi> | 2001-03-07 17:22:27 +0200 |
---|---|---|
committer | unknown <heikki@donna.mysql.fi> | 2001-03-07 17:22:27 +0200 |
commit | 1b738d5c0960cb6b7d64dc8d5f049697aabf125e (patch) | |
tree | 325abe4be4489b4c59d98839f9bf2c29cacefb94 /innobase | |
parent | 9b8ddd1a6d0afc8ab9fa3d0f808b53781b9bab1f (diff) | |
download | mariadb-git-1b738d5c0960cb6b7d64dc8d5f049697aabf125e.tar.gz |
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
innobase/rem/rem0cmp.c:
Fix REPLACE problem, non-latin1 charset bug
innobase/row/row0mysql.c:
Fix REPLACE problem, non-latin1 charset bug
innobase/row/row0upd.c:
Fix REPLACE problem, non-latin1 charset bug
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/rem/rem0cmp.c | 1 | ||||
-rw-r--r-- | innobase/row/row0mysql.c | 37 | ||||
-rw-r--r-- | innobase/row/row0upd.c | 2 |
3 files changed, 15 insertions, 25 deletions
diff --git a/innobase/rem/rem0cmp.c b/innobase/rem/rem0cmp.c index edf3903cd51..d5208f2d486 100644 --- a/innobase/rem/rem0cmp.c +++ b/innobase/rem/rem0cmp.c @@ -171,6 +171,7 @@ cmp_whole_field( } return(0); + case DATA_VARMYSQL: case DATA_MYSQL: return(innobase_mysql_cmp( (int)(type->prtype & ~DATA_NOT_NULL), diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 10ddf381166..117a3b02228 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -634,31 +634,21 @@ row_update_for_mysql( clust_index = dict_table_get_first_index(table); - if (prebuilt->in_update_remember_pos) { - 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 */ - + if (prebuilt->pcur->btr_cur.index == clust_index) { btr_pcur_copy_stored_position(node->pcur, prebuilt->pcur); - ut_a(node->pcur->rel_pos == BTR_PCUR_ON); - - goto skip_cursor_search; + } else { + btr_pcur_copy_stored_position(node->pcur, prebuilt->clust_pcur); } + + 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 /* We have to search for the correct cursor position */ @@ -691,7 +681,6 @@ row_update_for_mysql( mem_heap_free(heap); #endif -skip_cursor_search: savept = trx_savept_take(trx); thr = que_fork_get_first_thr(prebuilt->upd_graph); diff --git a/innobase/row/row0upd.c b/innobase/row/row0upd.c index c0f1035046b..10dd64b8b1a 100644 --- a/innobase/row/row0upd.c +++ b/innobase/row/row0upd.c @@ -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; } |