Bug #80939 Insert of GIS data into rtree hits assert in rtr_cur_restore_position_func()
Submitted: 3 Apr 2016 11:58 Modified: 22 Nov 2016 12:48
Reporter: Olav Sandstå Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S2 (Serious)
Version:5.7.13 OS:Any
Assigned to: CPU Architecture:Any

[3 Apr 2016 11:58] Olav Sandstå
Description:
When trying to load the Sakila demo database into a debug version of MySQL 5.7, the server crashes with the following assert in InnoDB:

InnoDB: Assertion failure in thread 140292835587840 in file gis0sea.cc line 1329
InnoDB: Failing assertion: !cmp_rec_rec(r_cursor->old_rec, rec, offsets1, offsets2, index)

This assert is in the function rtr_cur_restore_position_func():

			if (rec_get_info_bits(r_cursor->old_rec, comp)
			    & REC_INFO_MIN_REC_FLAG) {
				ut_ad(rec_get_info_bits(rec, comp)
					& REC_INFO_MIN_REC_FLAG);
			} else {

				ut_ad(!cmp_rec_rec(r_cursor->old_rec,
						   rec, offsets1, offsets2,
						   index));
			}

How to repeat:
Either download the Sakila demo database and try to load this into MySQL:

1. The demo database Sakila is found here: https://dev.mysql.com/doc/index-other.html
2. Unpack the file
3. Start at debug built MySQL 5.7 server.
4. Load schema:

    client/mysql -u root < sakila-schema.sql

5. Load data:

    client/mysql -u root < sakila-data.sql
[22 Nov 2016 12:48] Daniel Price
Posted by developer:
 
Fixed as of the upcoming 5.7.18, 8.0.1 release, and here's the changelog entry:

Inserting GIS data into an r-tree raised an assertion due to a missing
page number field that was encountered when storing the b-tree cursor.
[9 Nov 2017 6:26] Erlend Dahl
Bug#81497 Failing assertion:!cmp_rec_rec(r_cursor->old_rec,rec,offsets1,offsets2,index)

was marked as a duplicate.