Bug #86701 Assertion failed: (type() != MYSQL_TYPE_TIMESTAMP), function check_constraints
Submitted: 14 Jun 2017 19:39 Modified: 14 Jun 2017 21:10
Reporter: Roel Van de Paar (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Partitions Severity:S6 (Debug Builds)
Version:5.7/8.0 OS:Any
Assigned to: CPU Architecture:Any
Tags: debug

[14 Jun 2017 19:39] Roel Van de Paar
Description:
2017-06-14T19:37:06.813984Z 0 [Note] /sda/mysql-5.7.18-osx10.12-x86_64/bin/mysqld: ready for connections.
Version: '5.7.18-debug'  socket: '/sda/mysql-5.7.18-osx10.12-x86_64/socket.sock'  port: 10091  MySQL Community Server (GPL)
2017-06-14T19:37:06.814012Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
2017-06-14T19:37:06.814026Z 0 [Note] Beginning of list of non-natively partitioned tables
2017-06-14T19:37:07.296424Z 0 [Note] End of list of non-natively partitioned tables
Assertion failed: (type() != MYSQL_TYPE_TIMESTAMP), function check_constraints, file /sda/mysql-5.7.18/sql/field.cc, line 1618.
19:37:19 UTC - mysqld got signal 6 ;

How to repeat:
DROP DATABASE test;CREATE DATABASE test;USE test;
SET SESSION explicit_defaults_for_timestamp=TRUE;
CREATE TABLE t0(a INT KEY, c0 TIMESTAMP NOT NULL) ENGINE=InnoDB PARTITION BY KEY (a);
CREATE TRIGGER t0_bi BEFORE INSERT ON t0 FOR EACH ROW SET @a=0;
INSERT INTO t0 VALUES (0,NULL);
[14 Jun 2017 21:00] Miguel Solorzano
c:\dbs>c:\dbs\5.7\bin\mysql -uroot --port=3570 -p --local-infile  --prompt="mysql 5.7 > "
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.19 Source distribution 2017-may-25

Copyright (c) 2000, 2017, 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, 1 row affected (0.85 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql 5.7 > SET SESSION explicit_defaults_for_timestamp=TRUE;
Query OK, 0 rows affected (0.00 sec)

mysql 5.7 > CREATE TABLE t0(a INT KEY, c0 TIMESTAMP NOT NULL) ENGINE=InnoDB PARTITION BY KEY (a);
Query OK, 0 rows affected (0.43 sec)

mysql 5.7 > CREATE TRIGGER t0_bi BEFORE INSERT ON t0 FOR EACH ROW SET @a=0;
Query OK, 0 rows affected (0.10 sec)

mysql 5.7 > INSERT INTO t0 VALUES (0,NULL);
ERROR 1048 (23000): Column 'c0' cannot be null
mysql 5.7 > exit
Bye

c:\dbs>57q

c:\dbs>c:\dbs\5.7\bin\mysqladmin -uroot --port=3570 -p shutdown
Enter password: ******

c:\dbs>cp c:\build\2017MAY25\mysql-5.7\sql\Debug\mysqld.exe C:\dbs\5.7\bin

c:\dbs>57c

c:\dbs>c:\dbs\5.7\bin\mysql -uroot --port=3570 -p --local-infile  --prompt="mysql 5.7 > "
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.19-debug Source distribution 2017-may-25

Copyright (c) 2000, 2017, 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, 1 row affected (0.58 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql 5.7 > SET SESSION explicit_defaults_for_timestamp=TRUE;
Query OK, 0 rows affected (0.02 sec)

mysql 5.7 > CREATE TABLE t0(a INT KEY, c0 TIMESTAMP NOT NULL) ENGINE=InnoDB PARTITION BY KEY (a);
Query OK, 0 rows affected (0.38 sec)

mysql 5.7 > CREATE TRIGGER t0_bi BEFORE INSERT ON t0 FOR EACH ROW SET @a=0;
Query OK, 0 rows affected (0.08 sec)

mysql 5.7 > INSERT INTO t0 VALUES (0,NULL);
ERROR 2013 (HY000): Lost connection to MySQL server during query

2017-06-14T20:55:21.789231Z 0 [Note] c:\dbs\5.7\bin\mysqld: ready for connections.
Version: '5.7.19-debug'  socket: ''  port: 3570  Source distribution 2017-may-25
2017-06-14T20:55:22.906684Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170614 17:55:22
Assertion failed: type() != MYSQL_TYPE_TIMESTAMP, file C:\build\2017MAY25\mysql-5.7\sql\field.cc, line 1618
R6010
- abort() has been called
20:56:01 UTC - mysqld got exception 0x80000003 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
Attempting to collect some information that could help diagnose the problem.
As this is a crash and something is definitely wrong, the information
collection process might fail.

key_buffer_size=67108864
read_buffer_size=131072
max_used_connections=1
max_threads=151
thread_count=1
connection_count=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 125416 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x1cf701fefd0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
7ff654af5345    mysqld.exe!my_sigabrt_handler()[my_thr_init.c:449]
7ffba3a7396f    MSVCR120D.dll!raise()
7ffba3a82060    MSVCR120D.dll!abort()
7ffba3a6bf78    MSVCR120D.dll!_wassert()
7ff65404f2f6    mysqld.exe!Field::check_constraints()[field.cc:1618]
7ff653f6f760    mysqld.exe!check_inserting_record()[sql_base.cc:9342]
7ff653f5ccf7    mysqld.exe!fill_record_n_invoke_before_triggers()[sql_base.cc:9675]
7ff65423b2dd    mysqld.exe!Sql_cmd_insert::mysql_insert()[sql_insert.cc:754]
7ff654239e2b    mysqld.exe!Sql_cmd_insert::execute()[sql_insert.cc:3105]
7ff653e14515    mysqld.exe!mysql_execute_command()[sql_parse.cc:3569]
7ff653e105be    mysqld.exe!mysql_parse()[sql_parse.cc:5574]
7ff653e1ae54    mysqld.exe!dispatch_command()[sql_parse.cc:1464]
7ff653e19c95    mysqld.exe!do_command()[sql_parse.cc:999]
7ff653dab66a    mysqld.exe!handle_connection()[connection_handler_per_thread.cc:300]
7ff655171312    mysqld.exe!pfs_spawn_thread()[pfs.cc:2190]
7ff654af3bd7    mysqld.exe!win_thread_start()[my_thread.c:37]
7ffba395a105    MSVCR120D.dll!_beginthreadex()
7ffba395a357    MSVCR120D.dll!_endthreadex()
7ffbcc732774    KERNEL32.DLL!BaseThreadInitThunk()
7ffbcd850d61    ntdll.dll!RtlUserThreadStart()

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (1cee6abd610): INSERT INTO t0 VALUES (0,NULL)
Connection ID (thread ID): 2
Status: NOT_KILLED
[14 Jun 2017 21:10] Miguel Solorzano
Thank you for the bug report.

2017-06-14T21:05:32.273086Z 0 [Note] c:\dbs\8.0\bin\mysqld: ready for connections. Version: '8.0.2-dmr-debug'  socket: ''  port: 3580
Source distribution 2017-may-25
Assertion failed: type() != MYSQL_TYPE_TIMESTAMP, file C:\build\2017MAY25\mysql-trunk\sql\field.cc, line 1628
abort() has been called21:06:01 UTC - mysqld got exception 0x80000003 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
Attempting to collect some information that could help diagnose the problem.
As this is a crash and something is definitely wrong, the information
collection process might fail.

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=1
max_threads=151
thread_count=1
connection_count=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68083 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x1d5a1426730
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
7ff78b1bfe85    mysqld.exe!my_sigabrt_handler()[my_thr_init.cc:418]
7ffb9cef1c01    ucrtbased.dll!raise()
7ffb9cef37d9    ucrtbased.dll!abort()
7ffb9cef9475    ucrtbased.dll!_get_wide_winmain_command_line()
7ffb9cef8fc7    ucrtbased.dll!_get_wide_winmain_command_line()
7ffb9cef7058    ucrtbased.dll!_get_wide_winmain_command_line()
7ffb9cef99ff    ucrtbased.dll!_wassert()
7ff78a0076e6    mysqld.exe!Field::check_constraints()[field.cc:1628]
7ff789f1cb30    mysqld.exe!check_inserting_record()[sql_base.cc:9530]
7ff789f07367    mysqld.exe!fill_record_n_invoke_before_triggers()[sql_base.cc:9871]
7ff78a77fa63    mysqld.exe!Sql_cmd_insert_values::execute_inner()[sql_insert.cc:643]
7ff78a2b4411    mysqld.exe!Sql_cmd_dml::execute()[sql_select.cc:619]
7ff789f484d1    mysqld.exe!mysql_execute_command()[sql_parse.cc:3327]
7ff789f45663    mysqld.exe!mysql_parse()[sql_parse.cc:5316]
7ff789f4f8fc    mysqld.exe!dispatch_command()[sql_parse.cc:1602]
7ff789f4df86    mysqld.exe!do_command()[sql_parse.cc:1187]
7ff789bab363    mysqld.exe!handle_connection()[connection_handler_per_thread.cc:324]
7ff78b96b79b    mysqld.exe!pfs_spawn_thread()[pfs.cc:2395]
7ff78b1beb07    mysqld.exe!win_thread_start()[my_thread.cc:42]
7ffb9cefb0a8    ucrtbased.dll!_register_onexit_function()
7ffb9cefad31    ucrtbased.dll!_register_onexit_function()
7ffbcc732774    KERNEL32.DLL!BaseThreadInitThunk()
7ffbcd850d61    ntdll.dll!RtlUserThreadStart()

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (1d5a14568f0): INSERT INTO t0 VALUES (0,NULL)