Bug #78235 InnoDB: Failing assertion: sizeof(doc_id) == dfield->type.len fts_create_doc_id
Submitted: 27 Aug 2015 4:05 Modified: 9 Sep 2015 5:11
Reporter: Roel Van de Paar Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:5.7.8 (RC2) OS:Any
Assigned to: CPU Architecture:Any
Tags: opt

[27 Aug 2015 4:05] Roel Van de Paar
Description:
Version: '5.7.8-rc'  socket: '/sda/mysql-5.7.8-rc-linux-glibc2.5-x86_64/socket.sock'  port: 18682  MySQL Community Server (GPL)
2015-08-27T03:54:53.905136Z 2 [ERROR] InnoDB: Table test/t1 contains 2 indexes inside InnoDB, which is different from the number of indexes 1 defined in MySQL
2015-08-27 13:54:53 0x7f45fc6c2700  InnoDB: Assertion failure in thread 139938564417280 in file fts0fts.cc line 3160
InnoDB: Failing assertion: sizeof(doc_id) == dfield->type.len

+bt
#0  0x00007f45fc0c8771 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61
#1  0x0000000000761db4 in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/signal_handler.cc:220
#2  <signal handler called>
#3  0x00007f45faccc5d7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#4  0x00007f45faccdcc8 in __GI_abort () at abort.c:90
#5  0x00000000010baaa5 in ut_dbg_assertion_failed (expr=0x154a0a8 "sizeof(doc_id) == dfield->type.len", file=<optimized out>, line=3160) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/ut/ut0dbg.cc:67
#6  0x0000000001196fe1 in fts_create_doc_id (table=<optimized out>, row=<optimized out>, heap=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/fts/fts0fts.cc:3160
#7  0x0000000001030ea3 in row_mysql_convert_row_to_innobase (blob_heap=<optimized out>, mysql_rec=0x7f45378aa310 "\377", prebuilt=0x7f453788e088, row=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/row/row0mysql.cc:689
#8  row_insert_for_mysql_using_ins_graph (mysql_rec=0x7f45378aa310 "\377", prebuilt=0x7f453788e088) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/row/row0mysql.cc:1694
#9  0x0000000000f62b38 in ha_innobase::write_row (this=0x7f45378aa030, record=0x7f45378aa310 "\377") at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/handler/ha_innodb.cc:7077
#10 0x00000000007a86ee in handler::ha_write_row (this=0x7f45378aa030, buf=0x7f45378aa310 "\377") at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/handler.cc:7599
#11 0x0000000000de2081 in write_record (thd=0x7f4537818000, table=0x7f4537859a20, info=0x7f45fc6c0560, update=0x7f45fc6c04e0) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:1764
#12 0x0000000000de4e40 in Sql_cmd_insert::mysql_insert (this=0x7f453782b078, thd=0x7f4537818000, table_list=0x7f453782aaf0) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:702
#13 0x0000000000de55de in Sql_cmd_insert::execute (this=0x7f453782b078, thd=0x7f4537818000) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:3032
#14 0x0000000000c7bc15 in mysql_execute_command (thd=0x7f4537818000) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:3277
#15 0x0000000000c7f7e8 in mysql_parse (thd=0x7f4537818000, parser_state=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:5255
#16 0x0000000000c80a82 in dispatch_command (thd=0x7f4537818000, com_data=0x7f45fc6c1da0, command=COM_QUERY) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:1272
#17 0x0000000000c81c54 in do_command (thd=0x7f4537818000) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:852
#18 0x0000000000d486ac in handle_connection (arg=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/conn_handler/connection_handler_per_thread.cc:300
#19 0x0000000000ee7690 in pfs_spawn_thread (arg=0x7f45f1feb820) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/perfschema/pfs.cc:2178
#20 0x00007f45fc0c3df5 in start_thread (arg=0x7f45fc6c2700) at pthread_create.c:308
#21 0x00007f45fad8d1ad in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

How to repeat:
DROP DATABASE test;CREATE DATABASE test;USE test;
CREATE TABLE t1(a INT,b INT,c INT GENERATED ALWAYS AS(a+b),h CHAR (1),m int);
ALTER TABLE t1 CHANGE COLUMN b b CHAR(1);
ALTER TABLE t1 ADD FULLTEXT INDEX(b(1));
INSERT INTO t1 VALUES(),(),();
[27 Aug 2015 8:49] MySQL Verification Team
Hello Roel,

Thank you for the report and test case.
Verified that 5.7.8 build is affected.

Thanks,
Umesh
[27 Aug 2015 8:49] MySQL Verification Team
// 5.7.8 

[umshastr@hod03]/export/umesh/server/binaries/mysql-5.7.8-rc: cat docs/INFO_SRC
commit: ae3b133e5f7b13d1edf7acf7eee6af2c2b4014e2
date: 2015-07-20 14:02:16 +0200
build-date: 2015-07-20 14:16:07 +0200
short: ae3b133
branch: mysql-5.7.8-rc-release

MySQL source 5.7.8

bin/mysql_install_db --insecure --basedir=/export/umesh/server/binaries/mysql-5.7.8-rc --datadir=/export/umesh/server/binaries/mysql-5.7.8-rc/78235 -v
bin/mysqld --no-defaults --basedir=/export/umesh/server/binaries/mysql-5.7.8-rc --datadir=/export/umesh/server/binaries/mysql-5.7.8-rc/78235 --core-file --socket=/tmp/mysql_ushastry.sock  --port=15000 --log-error=/export/umesh/server/binaries/mysql-5.7.8-rc/78235/log.err 2>&1 &

[umshastr@hod03]/export/umesh/server/binaries/mysql-5.7.8-rc: bin/mysql  -uroot -S /tmp/mysql_ushastry.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.8-rc MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> DROP DATABASE test;CREATE DATABASE test;USE test;
ERROR 1008 (HY000): Can't drop database 'test'; database doesn't exist
Query OK, 1 row affected (0.00 sec)

Database changed
mysql> CREATE TABLE t1(a INT,b INT,c INT GENERATED ALWAYS AS(a+b),h CHAR (1),m int);
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE t1 CHANGE COLUMN b b CHAR(1);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE t1 ADD FULLTEXT INDEX(b(1));
Query OK, 0 rows affected, 1 warning (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 1

mysql> INSERT INTO t1 VALUES(),(),();
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> \q
Bye

(gdb) bt
#0  0x00007f4dce8f3771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000761db4 in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/signal_handler.cc:220
#2  <signal handler called>
#3  0x00007f4dcd4f95c9 in raise () from /lib64/libc.so.6
#4  0x00007f4dcd4facd8 in abort () from /lib64/libc.so.6
#5  0x00000000010baaa5 in ut_dbg_assertion_failed (expr=0x154a0a8 "sizeof(doc_id) == dfield->type.len", file=<optimized out>, line=3160)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/ut/ut0dbg.cc:67
#6  0x0000000001196fe1 in fts_create_doc_id (table=<optimized out>, row=<optimized out>, heap=<optimized out>)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/fts/fts0fts.cc:3160
#7  0x0000000001030ea3 in row_mysql_convert_row_to_innobase (blob_heap=<optimized out>, mysql_rec=0x7f4d60986df0 "\377", prebuilt=0x7f4d609aaa38, row=<optimized out>)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/row/row0mysql.cc:689
#8  row_insert_for_mysql_using_ins_graph (mysql_rec=0x7f4d60986df0 "\377", prebuilt=0x7f4d609aaa38)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/row/row0mysql.cc:1694
#9  0x0000000000f62b38 in ha_innobase::write_row (this=0x7f4d60986b10, record=0x7f4d60986df0 "\377")
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/innobase/handler/ha_innodb.cc:7077
#10 0x00000000007a86ee in handler::ha_write_row (this=0x7f4d60986b10, buf=0x7f4d60986df0 "\377") at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/handler.cc:7599
#11 0x0000000000de2081 in write_record (thd=0x7f4d60000b50, table=0x7f4d6001a1d0, info=0x7f4da16825a0, update=0x7f4da1682520)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:1764
#12 0x0000000000de4e40 in Sql_cmd_insert::mysql_insert (this=0x7f4d600063f8, thd=0x7f4d60000b50, table_list=0x7f4d60005e70)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:702
#13 0x0000000000de55de in Sql_cmd_insert::execute (this=0x7f4d600063f8, thd=0x7f4d60000b50) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_insert.cc:3032
#14 0x0000000000c7bc15 in mysql_execute_command (thd=0x7f4d60000b50) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:3277
#15 0x0000000000c7f7e8 in mysql_parse (thd=0x7f4d60000b50, parser_state=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:5255
#16 0x0000000000c80a82 in dispatch_command (thd=0x7f4d60000b50, com_data=0x7f4da1683de0, command=COM_QUERY)
    at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:1272
#17 0x0000000000c81c54 in do_command (thd=0x7f4d60000b50) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/sql_parse.cc:852
#18 0x0000000000d486ac in handle_connection (arg=<optimized out>) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/sql/conn_handler/connection_handler_per_thread.cc:300
#19 0x0000000000ee7690 in pfs_spawn_thread (arg=0x462ab90) at /export/home/pb2/build/sb_0-15961582-1437395640.67/mysql-5.7.8-rc/storage/perfschema/pfs.cc:2178
#20 0x00007f4dce8eedf3 in start_thread () from /lib64/libpthread.so.0
#21 0x00007f4dcd5ba47d in clone () from /lib64/libc.so.6
[28 Aug 2015 10:33] MySQL Verification Team
Just to confirm I've verified on release builds of 5.7.8
[1 Sep 2015 10:06] Erlend Dahl
Posted by developer:
 
I can't reproduce this on latest 5.7.9
[1 Sep 2015 22:21] Roel Van de Paar
Umesh, can you retest 5.7.9?
[4 Sep 2015 13:05] Erlend Dahl
Posted by developer:
 
Bisecting indicates that this was fixed in 5.7.9 by:

commit 3f925601cbfdc7c23cb93857ac3dcc1429996b28
Author: Jimmy Yang <jimmy.yang@oracle.com>
Date:   Thu Jul 23 10:52:50 2015 +0800

    Bug#21478389 - ASSERTION IN HA_INNOBASE::CHECK_IF_SUPPORTED_INPLACE_ALTER

Since the assert is different it would be good to have this verified by code inspection.
[9 Sep 2015 5:11] Erlend Dahl
Developers confirm that the above push fixed the problem.