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

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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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),
+13 −24
Original line number Diff line number Diff line
@@ -634,19 +634,14 @@ 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);
	if (prebuilt->pcur->btr_cur.index == clust_index) {
		btr_pcur_copy_stored_position(node->pcur, prebuilt->pcur);
	} else {
			btr_pcur_copy_stored_position(node->pcur,
							prebuilt->clust_pcur);
		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
@@ -654,11 +649,6 @@ row_update_for_mysql(
	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);
	 	ut_a(node->pcur->rel_pos == BTR_PCUR_ON);

	 	goto skip_cursor_search;
	}
#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);
+1 −1
Original line number Diff line number Diff line
@@ -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;
	}