summaryrefslogtreecommitdiff
path: root/innobase/row
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/row')
-rw-r--r--innobase/row/row0mysql.c37
-rw-r--r--innobase/row/row0upd.c2
2 files changed, 14 insertions, 25 deletions
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;
}