Description:
An assertion failure occurred in the process of fuzzing:
Log file:
```
2022-06-29T08:17:45.061969Z 0 [System] [MY-010931] [Server] /home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld: ready for connections. Version: '8.0.29-debug-asan' socket: '/tmp/mysql.sock' port: 3306 Source distribution.
mysqld: /home/mysql-server/mysql-8.0.29-origin/sql/sql_planner.cc:4716: void Optimize_table_order::recalculate_lateral_deps(uint): Assertion `join->deps_of_remaining_lateral_derived_tables == calculate_lateral_deps_of_final_plan(first_tab_no)' failed.
08:29:41 UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x627000137900
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...
stack_bottom = 7fd7a2dc3b20 thread_stack 0x100000
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(__interceptor_backtrace+0x5b) [0x5e4e34b]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x10d) [0xb6ab1cd]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(print_fatal_signal(int)+0x389) [0x8149469]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(handle_fatal_signal+0x175) [0x8149ab5]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390) [0x7fd7d3fbc390]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38) [0x7fd7d24b0438]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a) [0x7fd7d24b203a]
/lib/x86_64-linux-gnu/libc.so.6(+0x2dbe7) [0x7fd7d24a8be7]
/lib/x86_64-linux-gnu/libc.so.6(+0x2dc92) [0x7fd7d24a8c92]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Optimize_table_order::recalculate_lateral_deps(unsigned int)+0x335) [0x79e81d5]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Optimize_table_order::recalculate_lateral_deps_incrementally(unsigned int)+0x3f5) [0x79ed655]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Optimize_table_order::semijoin_firstmatch_loosescan_access_paths(unsigned int, unsigned int, unsigned long, bool, double*, double*)+0x13da) [0x79fbe7a]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Optimize_table_order::fix_semijoin_strategies()+0xc23) [0x79eb2d3]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Optimize_table_order::choose_table_order()+0xf99) [0x79e63a9]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(JOIN::make_join_plan()+0xec6) [0x773e146]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(JOIN::optimize(bool)+0x47b1) [0x772e281]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Query_block::optimize(THD*, bool)+0x330) [0x7b71280]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Query_expression::optimize(THD*, TABLE*, bool, bool)+0x404) [0x7e176c4]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Query_block::optimize(THD*, bool)+0x566) [0x7b714b6]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Query_expression::optimize(THD*, TABLE*, bool, bool)+0x404) [0x7e176c4]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Sql_cmd_dml::execute_inner(THD*)+0x9a) [0x7b66eba]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(Sql_cmd_dml::execute(THD*)+0xe1d) [0x7b6423d]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(mysql_execute_command(THD*, bool)+0x3583) [0x794fbc3]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(dispatch_sql_command(THD*, Parser_state*)+0x1b5d) [0x7945c8d]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x974a) [0x793c61a]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld(do_command(THD*)+0xf9c) [0x794149c]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld() [0x80d00a2]
/home/mysql-server/mysql-8.0.29-origin-dev/bin/mysqld() [0xd6ac2da]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fd7d3fb26ba]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fd7d258251d]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (6190032d49df): SELECT ( NOT EXISTS ( SELECT ra0 . b FROM s AS ra0 WHERE EXISTS ( SELECT ra1 . b FROM t ra1 GROUP BY ra1 . b , ra1 . a , ra1 . a ) AND EXISTS ( SELECT ra3 . b FROM t ra2 JOIN t ra3 ON ra0 . b + ra0 . b = ( SELECT COUNT( * ) ca0 FROM t ra5 ) JOIN t ra4 ON ra4 . b + ( SELECT MIN( ra4 . a ) ca1 FROM s ra6 ) = ra3 . b ) AND EXISTS ( SELECT ra0 . b FROM s ra7 ) AND EXISTS ( SELECT ra0 . b AS ca2 FROM t ra8 ) AND EXISTS ( SELECT ra9 . b FROM s ra9 ) AND EXISTS ( SELECT ra0 . a , ra0 . b FROM s ra10 , LATERAL ( SELECT COUNT( * ) AS ca3 FROM t ra11 LEFT JOIN t ra12 ON ra0 . a > ra10 . a - ra10 . a ) AS dt ) ) ) + 1.000000 ca4 LIMIT 1
Connection ID (thread ID): 2486
Status: NOT_KILLED
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
```
How to repeat:
Test case:
```
CREATE TABLE t ( a INT , b INT ) ENGINE = innodb ;
INSERT INTO t VALUES ( 2 , 0 ) , ( 0 , 0 ) ;
CREATE TABLE s ( a INT AUTO_INCREMENT KEY , b INT ) ENGINE = archive ;
INSERT INTO s VALUES ( 1 , 1 ) , ( 2 , 2 ) , ( 3 , 2 ) , ( 4 , 3 ) , ( 5 , 3 ) ;
SELECT ( NOT EXISTS ( SELECT ra0 . b FROM s AS ra0 WHERE EXISTS ( SELECT ra1 . b FROM t ra1 GROUP BY ra1 . b , ra1 . a , ra1 . a ) AND EXISTS ( SELECT ra3 . b FROM t ra2 JOIN t ra3 ON ra0 . b + ra0 . b = ( SELECT COUNT( * ) ca0 FROM t ra5 ) JOIN t ra4 ON ra4 . b + ( SELECT MIN( ra4 . a ) ca1 FROM s ra6 ) = ra3 . b ) AND EXISTS ( SELECT ra0 . b FROM s ra7 ) AND EXISTS ( SELECT ra0 . b AS ca2 FROM t ra8 ) AND EXISTS ( SELECT ra9 . b FROM s ra9 ) AND EXISTS ( SELECT ra0 . a , ra0 . b FROM s ra10 , LATERAL ( SELECT COUNT( * ) AS ca3 FROM t ra11 LEFT JOIN t ra12 ON ra0 . a > ra10 . a - ra10 . a ) AS dt ) ) ) + 1.000000 ca4 LIMIT 1 ;
```