summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--storage/innobase/row/row0sel.c3
-rw-r--r--storage/innodb_plugin/ChangeLog6
-rw-r--r--storage/innodb_plugin/row/row0sel.c3
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;