mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge with 3.23
BitKeeper/deleted/.del-global.h~e80d28157acfdcb5: Auto merged Docs/manual.texi: Auto merged client/client_priv.h: Auto merged extra/resolveip.c: Auto merged innobase/btr/btr0sea.c: Auto merged innobase/os/os0file.c: Auto merged innobase/rem/rem0cmp.c: Auto merged innobase/row/row0mysql.c: Auto merged innobase/srv/srv0srv.c: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/variables.test: Auto merged mysys/my_bitmap.c: Auto merged sql/ha_innobase.cc: Auto merged sql/ha_innobase.h: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/mysqld.cc: Auto merged sql/sql_do.cc: Auto merged sql/sql_select.cc: Auto merged client/mysqldump.c: Use local version in 4.0 configure.in: Use 4.0 code
This commit is contained in:
@ -1683,6 +1683,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;
|
||||
@ -1728,6 +1730,21 @@ loop:
|
||||
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",
|
||||
@ -1741,6 +1758,7 @@ loop:
|
||||
|
||||
is_ok = FALSE;
|
||||
} else if ((index->type & DICT_UNIQUE)
|
||||
&& !contains_null
|
||||
&& matched_fields >=
|
||||
dict_index_get_n_ordering_defined_by_user(index)) {
|
||||
|
||||
|
Reference in New Issue
Block a user