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

row0mysql.c:

  Remove erroneous warning of a duplicate key when the key in a UNIQUE secondary index contains a NULL
parent 64c00f98
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1678,6 +1678,8 @@ row_scan_and_check_index(
	rec_t*		rec;
	ibool		is_ok	= TRUE;
	int		cmp;
	ibool		contains_null;
	ulint		i;
	char           	err_buf[1000];
	
	*n_rows = 0;
@@ -1723,6 +1725,21 @@ row_scan_and_check_index(
		cmp = cmp_dtuple_rec_with_match(prev_entry, rec,
						&matched_fields,
						&matched_bytes);
		contains_null = FALSE;

		/* In a unique secondary index we allow equal key values if
		they contain SQL NULLs */

	        for (i = 0;
                     i < dict_index_get_n_ordering_defined_by_user(index);
		     i++) {
	                if (UNIV_SQL_NULL == dfield_get_len(
                                      dtuple_get_nth_field(prev_entry, i))) {

                        	contains_null = TRUE;
	                }
	        }

		if (cmp > 0) {
			fprintf(stderr,
			"Error: index records in a wrong order in index %s\n",
@@ -1736,6 +1753,7 @@ row_scan_and_check_index(

			is_ok = FALSE;
		} else if ((index->type & DICT_UNIQUE)
			   && !contains_null
			   && matched_fields >=
			   dict_index_get_n_ordering_defined_by_user(index)) {