## Bug#14007109 RECURSIVE ACQ OF BLOCK LOCK IN S MODE, STATS UPDATE ASRT !RW_LOCK_OWN(LOCK, 352)#--sourceinclude/have_innodb.inc# The assertion only fails in debug versions, so no need to test in non-debug--sourceinclude/have_debug.incCREATETABLEbug14007109(aVARCHAR(512),PRIMARYKEY(a))ENGINE=INNODBSTATS_PERSISTENT=1;BEGIN;--disable_query_log# As of the time this test is added, 854 pages do not trigger the assert,# while 855 do. We use a bigger number here just in case. What is needed# is to have a btree with 3 levels, where the level in the middle contains# two (or more) pages. The persistent stats code crawls that level twice# in the same mtr:# dict_stats_analyze_index()# start mtr# dict_stats_analyze_index_level(mtr)# traverse the level (leaves the last page in the middle level S-latched)# dict_stats_analyze_index_for_n_prefix(mtr)# traverse the level (would try to S-latch the last page)# commit mtrlet$i=900;while($i){evalINSERTINTObug14007109VALUES(REPEAT(1000+$i,128));dec$i;}--enable_query_logCOMMIT;# We get a (debug) assertion failure here if the bug existsANALYZETABLEbug14007109;DROPTABLEbug14007109;