Description:
InnoDB hits an assertion during CREATE TABLE as follows:
[ERROR] InnoDB: Assertion failure: lock0lock.cc:1436:((m_mode - (0xFUL & m_mode)) - (0xF0UL & m_mode) - (256 & m_mode)) == 1024
Stacktrace:
#2 handle_fatal_signal (sig=6) at sql/signal_handler.cc:231
#3 <signal handler called>
#4 __GI_raise (sig=sig@entry=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#5 __GI_abort () at abort.c:89
#6 ut_dbg_assertion_failed (expr="((m_mode - (0xFUL & m_mode)) -
(0xF0UL & m_mode) - (256 & m_mode)) == 1024",
file="storage/innobase/lock/lock0lock.cc", line=1436)
at storage/innobase/ut/ut0dbg.cc:60
#7 RecLock::create (this=, trx=, owns_trx_mutex=false,
add_to_hash=true, prdt=)
at storage/innobase/lock/lock0lock.cc:1436
#8 lock_rec_lock_fast (impl=false, mode=515, block=,
heap_no=298, index=, thr=)
at storage/innobase/lock/lock0lock.cc:1803
#9 lock_rec_lock (impl=false, sel_mode=SELECT_ORDINARY, mode=515, block=,
heap_no=298, index=, thr=)
at storage/innobase/lock/lock0lock.cc:1982
#10 lock_sec_rec_read_check_and_lock (flags=0, block=, rec="", index=,
offsets=, sel_mode=SELECT_ORDINARY, mode=LOCK_X, gap_mode=512,
thr=) at storage/innobase/lock/lock0lock.cc:6170
#11 row_ins_set_exclusive_rec_lock (type=512, block=, rec="",
index=, offsets=, thr=)
at storage/innobase/row/row0ins.cc:1528
#12 row_ins_sec_index_entry_low (flags=0, mode=2, index=, offsets_heap=,
heap=, entry=, trx_id=0, thr=, dup_chk_only=false)
at storage/innobase/row/row0ins.cc:3350
#13 row_ins_sec_index_entry (index=, entry=, thr=, dup_chk_only=false)
at storage/innobase/row/row0ins.cc:3617
#14 row_ins_index_entry (index=, entry=, thr=)
at storage/innobase/row/row0ins.cc:3666
#15 row_ins_index_entry_step (node=, thr=)
at storage/innobase/row/row0ins.cc:3811
#16 row_ins (node=, thr=) at storage/innobase/row/row0ins.cc:3953
#17 row_ins_step (thr=) at storage/innobase/row/row0ins.cc:4137
#18 row_insert_for_mysql_using_ins_graph
(mysql_rec="\370\377\377H\001", prebuilt=)
at storage/innobase/row/row0mysql.cc:1708
#19 row_insert_for_mysql (mysql_rec="\370\377\377H\001", prebuilt=)
at storage/innobase/row/row0mysql.cc:1846
#20 ha_innobase::write_row (this=, record="\370\377\377H\001")
at storage/innobase/handler/ha_innodb.cc:8804
#21 handler::ha_write_row (this=, buf="\370\377\377H\001")
at sql/handler.cc:8346
#22 dd::Raw_new_record::insert (this=)
at sql/dd/impl/raw/raw_record.cc:323
#23 dd::Weak_object_impl::store (this=, otx=)
at sql/dd/impl/types/weak_object_impl.cc:131
#24 dd::cache::Storage_adapter::store<dd::Table> (thd=, object=)
at sql/dd/impl/cache/storage_adapter.cc:306
#25 dd::cache::Dictionary_client::store<dd::Table> (this=, object=)
at sql/dd/impl/cache/dictionary_client.cc:2192
Verified against debug build of mysql-trunk (8.0.2) commit da4b76a9 (2017-05-23).
No issue observed against release build of the same code.
How to repeat:
--error ER_NO_DEFAULT_FOR_FIELD
CREATE TEMPORARY TABLE mytable116 ( `QMd` TEXT NOT NULL) REPLACE AS
SELECT thread_id, user, total_allocated FROM sys.memory_by_thread_by_current_bytes;
CREATE TABLE IF NOT EXISTS mytable111 (a INT);
DROP TABLE mytable111;