From fa6c6062574f091638f1143ef67eee4fc111fb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Sat, 12 Oct 2019 21:58:34 +0300 Subject: [PATCH] MDEV-20814 Assertion index->is_instant() failed on trivial upgrade from 10.1 rec_init_offsets(): Relax the assertion that was added in commit 01f45becd1b71433e240959228e35266f271bba1 to catch ROW_FORMAT=REDUNDANT records that have fewer fields than expected. This assertion would fail when accessing the records of the built-in InnoDB table SYS_INDEXES. The column MERGE_THRESHOLD had been effectively instantly added in MariaDB Server 10.2 (and MySQL 5.7), but is_instant() does not hold for that index. Relax the assertion, so that it will not fail in this case. --- storage/innobase/rem/rem0rec.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/storage/innobase/rem/rem0rec.cc b/storage/innobase/rem/rem0rec.cc index 8803e691498..7956c0fb62e 100644 --- a/storage/innobase/rem/rem0rec.cc +++ b/storage/innobase/rem/rem0rec.cc @@ -742,7 +742,9 @@ resolved: } if (i < rec_offs_n_fields(offsets)) { - ut_ad(index->is_instant()); + ut_ad(index->is_instant() + || i + (index->id == DICT_INDEXES_ID) + == rec_offs_n_fields(offsets)); offs = (rec_offs_base(offsets)[i] & REC_OFFS_MASK) | REC_OFFS_DEFAULT;