diff options
-rw-r--r-- | storage/innobase/row/row0sel.c | 3 | ||||
-rw-r--r-- | storage/innodb_plugin/ChangeLog | 6 | ||||
-rw-r--r-- | storage/innodb_plugin/row/row0sel.c | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c index 2137facf638..1a3f4d4a189 100644 --- a/storage/innobase/row/row0sel.c +++ b/storage/innobase/row/row0sel.c @@ -107,7 +107,8 @@ row_sel_sec_rec_is_for_clust_rec( dict_col_get_clust_pos(col, clust_index), &clust_len); sec_field = rec_get_nth_field(sec_rec, sec_offs, i, &sec_len); - if (ifield->prefix_len > 0 && clust_len != UNIV_SQL_NULL) { + if (ifield->prefix_len > 0 && clust_len != UNIV_SQL_NULL + && sec_len != UNIV_SQL_NULL) { clust_len = dtype_get_at_most_n_mbchars( col->prtype, col->mbminlen, col->mbmaxlen, diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index b37697397ac..719bb89c865 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2013-08-16 The InnoDB Team + + * row/row0sel.c: + Fix Bug#17312846 CHECK TABLE ASSERTION FAILURE + DICT_TABLE_GET_FORMAT(CLUST_INDEX->TABLE) >= 1 + 2013-08-15 The InnoDB Team * row/row0umod.c: diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index 4945d107112..76370a38a52 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -219,7 +219,8 @@ row_sel_sec_rec_is_for_clust_rec( len = clust_len; - if (ifield->prefix_len > 0 && len != UNIV_SQL_NULL) { + if (ifield->prefix_len > 0 && len != UNIV_SQL_NULL + && sec_len != UNIV_SQL_NULL) { if (rec_offs_nth_extern(clust_offs, clust_pos)) { len -= BTR_EXTERN_FIELD_REF_SIZE; |