Bug #74603 Assertion `comma_length > 0' failed in mysql_prepare_create_table
Submitted: 28 Oct 2014 11:33 Modified: 28 Oct 2014 11:47
Reporter: Ramesh Sivaraman Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: DDL Severity:S3 (Non-critical)
Version:5.6.20-debug/5.7 OS:Linux (CentOS 7)
Assigned to: CPU Architecture:Any

[28 Oct 2014 11:33] Ramesh Sivaraman
Description:
mysqld: /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_table.cc:3478: int mysql_prepare_create_table(THD*, HA_CREATE_INFO*, Alter_info*, bool, uint*, ha
ndler*, KEY**, uint*, int): Assertion `comma_length > 0' failed.
11:24:19 UTC - mysqld got signal 6 ;

**** GDB info

#0  0x00007fba34dca771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000a9035e in my_write_core (sig=6) at /ssd/ramesh/mysql-server/mysql-5.6/mysys/stacktrace.c:422
#2  0x0000000000723688 in handle_fatal_signal (sig=6) at /ssd/ramesh/mysql-server/mysql-5.6/sql/signal_handler.cc:230
#3  <signal handler called>
#4  0x00007fba33bd65c9 in raise () from /lib64/libc.so.6
#5  0x00007fba33bd7cd8 in abort () from /lib64/libc.so.6
#6  0x00007fba33bcf536 in __assert_fail_base () from /lib64/libc.so.6
#7  0x00007fba33bcf5e2 in __assert_fail () from /lib64/libc.so.6
#8  0x0000000000836521 in mysql_prepare_create_table (thd=0x7fb9a1b24000, create_info=0x7fba353c13d0, alter_info=0x7fba353c0e70, tmp_table=false, db_options=0x7fba353c09d8, file=0x7fb99847f010, key_info_buffer=0x7fba353c0cc8, key_count=0x7fba353c0cc4, select_field_count=0) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_table.cc:3478
#9  0x000000000083a18b in create_table_impl (thd=0x7fb9a1b24000, db=0x7fb99841f660 "test", table_name=0x7fb99841f0c8 "t0", path=0x7fba353c0ac0 "./test/t0", create_info=0x7fba353c13d0, alter_info=0x7fba353c0e70, internal_tmp_table=false, select_field_count=0, no_ha_table=false, is_trans=0x7fba353c0d4e, key_info=0x7fba353c0cc8, key_count=0x7fba353c0cc4) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_table.cc:4764
#10 0x000000000083ac99 in mysql_create_table_no_lock (thd=0x7fb9a1b24000, db=0x7fb99841f660 "test", table_name=0x7fb99841f0c8 "t0", create_info=0x7fba353c13d0, alter_info=0x7fba353c0e70, select_field_count=0, is_trans=0x7fba353c0d4e) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_table.cc:5029
#11 0x000000000083ada2 in mysql_create_table (thd=0x7fb9a1b24000, create_table=0x7fb99841f100, create_info=0x7fba353c13d0, alter_info=0x7fba353c0e70) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_table.cc:5078
#12 0x00000000007d04b6 in mysql_execute_command (thd=0x7fb9a1b24000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:3061
#13 0x00000000007d8fa4 in mysql_parse (thd=0x7fb9a1b24000, rawbuf=0x7fb99841f010 "create table t0(a ENUM('',''))", length=30, parser_state=0x7fba353c1e70) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:6245
#14 0x00000000007cc557 in dispatch_command (command=COM_QUERY, thd=0x7fb9a1b24000, packet=0x7fb9a1b62001 "create table t0(a ENUM('',''))", packet_length=30) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:1332
#15 0x00000000007cb646 in do_command (thd=0x7fb9a1b24000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:1034
#16 0x0000000000793a61 in do_handle_one_connection (thd_arg=0x7fb9a1b24000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_connect.cc:982
#17 0x000000000079354a in handle_one_connection (arg=0x7fb9a1b24000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_connect.cc:898
#18 0x0000000000ad4b5c in pfs_spawn_thread (arg=0x7fba2e738b00) at /ssd/ramesh/mysql-server/mysql-5.6/storage/perfschema/pfs.cc:1860
#19 0x00007fba34dc5df3 in start_thread () from /lib64/libpthread.so.0
#20 0x00007fba33c9701d in clone () from /lib64/libc.so.6

How to repeat:
DROP DATABASE test;CREATE DATABASE test;USE test;
SET character_set_filesystem=filename;
SET @session_start_value=@@character_set_filesystem;
SET @@session.collation_server=@session_start_value;
create table t0(a ENUM('',''));
DROP DATABASE test;CREATE DATABASE test;USE test;
create table t0(a ENUM('',''));
[28 Oct 2014 11:42] MySQL Verification Team
C:\dbs>NET START MYSQLD56
The MySQLD56 service is starting.
The MySQLD56 service was started successfully.

C:\dbs>56

C:\dbs>c:\dbs\5.6\bin\mysql -uroot --port=3560 --debug-info --prompt="mysql 5.6 > "
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.22-debug-log Source distribution

Copyright (c) 2000, 2014, 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 5.6 > DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 1 row affected (0.17 sec)

Query OK, 1 row affected (0.01 sec)

Database changed
mysql 5.6 > SET character_set_filesystem=filename;
Query OK, 0 rows affected (0.00 sec)

mysql 5.6 > SET @session_start_value=@@character_set_filesystem;
Query OK, 0 rows affected (0.00 sec)

mysql 5.6 > SET @@session.collation_server=@session_start_value;
Query OK, 0 rows affected (0.00 sec)

mysql 5.6 > create table t0(a ENUM('',''));
Query OK, 0 rows affected, 1 warning (0.15 sec)

mysql 5.6 > DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 1 row affected (0.12 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql 5.6 > create table t0(a ENUM('',''));
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql 5.6 >

7ff78c184795    mysqld.exe!my_sigabrt_handler()[my_thr_init.c:458]
7ff78c75bfff    mysqld.exe!raise()[winsig.c:594]
7ff78c768e10    mysqld.exe!abort()[abort.c:82]
7ff78c7595cb    mysqld.exe!_wassert()[assert.c:380]
7ff78be0f41d    mysqld.exe!mysql_prepare_create_table()[sql_table.cc:3478]
7ff78be15880    mysqld.exe!create_table_impl()[sql_table.cc:4764]
7ff78be0217b    mysqld.exe!mysql_create_table_no_lock()[sql_table.cc:5030]
7ff78be01e7e    mysqld.exe!mysql_create_table()[sql_table.cc:5078]
7ff78bdc54f4    mysqld.exe!mysql_execute_command()[sql_parse.cc:3061]
7ff78bdc3102    mysqld.exe!mysql_parse()[sql_parse.cc:6357]
7ff78bdcc63e    mysqld.exe!dispatch_command()[sql_parse.cc:1335]
7ff78bdcb7a2    mysqld.exe!do_command()[sql_parse.cc:1034]
7ff78be1c402    mysqld.exe!do_handle_one_connection()[sql_connect.cc:982]
7ff78be1c232    mysqld.exe!handle_one_connection()[sql_connect.cc:899]
7ff78c636145    mysqld.exe!pfs_spawn_thread()[pfs.cc:1862]
7ff78c182d36    mysqld.exe!pthread_start()[my_winthread.c:62]
7ff78c76c655    mysqld.exe!_callthreadstartex()[threadex.c:376]
7ff78c76c8a7    mysqld.exe!_threadstartex()[threadex.c:359]
7ff95c2b16ad    KERNEL32.DLL!BaseThreadInitThunk()
7ff95c504409    ntdll.dll!RtlUserThreadStart()
[28 Oct 2014 11:47] MySQL Verification Team
Thank you for the bug report.

C:\dbs>NET START MYSQLD57
The MySQLD57 service is starting....
The MySQLD57 service was started successfully.

C:\dbs>57

C:\dbs>c:\dbs\5.7\bin\mysql -uroot --port=3570 --prompt="mysql 5.7 > "
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.6-m16-debug Source distribution

Copyright (c) 2000, 2014, 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 5.7 > DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 0 rows affected (0.09 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql 5.7 > SET character_set_filesystem=filename;
Query OK, 0 rows affected (0.00 sec)

mysql 5.7 > SET @session_start_value=@@character_set_filesystem;
Query OK, 0 rows affected (0.00 sec)

mysql 5.7 > SET @@session.collation_server=@session_start_value;
Query OK, 0 rows affected (0.00 sec)

mysql 5.7 > create table t0(a ENUM('',''));
ERROR 1291 (HY000): Column 'a' has duplicated value '' in ENUM
mysql 5.7 > DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 0 rows affected (0.01 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql 5.7 > create table t0(a ENUM('',''));
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql 5.7 >