Bug #100661 DBUG_ASSERT(item->fixed) raise an exception in delete_unused_merged_columns()
Submitted: 27 Aug 2020 12:15 Modified: 7 Sep 2020 8:23
Reporter: Hope Lee (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S6 (Debug Builds)
Version:8.0.20, 8.0.21 OS:Any
Assigned to: CPU Architecture:Any

[27 Aug 2020 12:15] Hope Lee
Description:
DBUG_ASSERT(item->fixed) raise an exception in SELECT_LEX::delete_unused_merged_columns()

How to repeat:
CREATE TABLE t1(a INT);

SELECT 1
FROM 
    (SELECT 
        (SELECT 1
        FROM t1 ) AS layer_0_column_0
        FROM t1
        WHERE 25 IN (1, 2, 3) ) AS layer_1_left_tb
    RIGHT JOIN t1 AS layer_1_right_tb
    ON layer_1_right_tb.a = layer_1_left_tb.layer_0_column_0;

ERROR 2013 (HY000): Lost connection to MySQL server during query

Thread 40 "mysqld" received signal SIGABRT, Aborted.
[Switching to Thread 0x7f1cc4718700 (LWP 38964)]
0x00007f1cd3b1d277 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007f1cd3b1d277 in raise () from /lib64/libc.so.6
#1  0x00007f1cd3b1e968 in abort () from /lib64/libc.so.6
#2  0x00007f1cd3b16096 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f1cd3b16142 in __assert_fail () from /lib64/libc.so.6
#4  0x0000000003038d24 in SELECT_LEX::delete_unused_merged_columns (this=0x7f1c18a73c78, tables=0x7f1c18b09860) at /flash1/daoke.wangc/mysql-server/sql/sql_resolver.cc:4755
#5  0x0000000003038ea2 in SELECT_LEX::delete_unused_merged_columns (this=0x7f1c18a73c78, tables=0x7f1c18a73e28) at /flash1/daoke.wangc/mysql-server/sql/sql_resolver.cc:4781
#6  0x000000000302dbf4 in SELECT_LEX::apply_local_transforms (this=0x7f1c18a73c78, thd=0x7f1c18000da0, prune=true) at /flash1/daoke.wangc/mysql-server/sql/sql_resolver.cc:652
#7  0x000000000302d5af in SELECT_LEX::prepare (this=0x7f1c18a73c78, thd=0x7f1c18000da0) at /flash1/daoke.wangc/mysql-server/sql/sql_resolver.cc:505
#8  0x000000000305344f in Sql_cmd_select::prepare_inner (this=0x7f1c18b09de8, thd=0x7f1c18000da0) at /flash1/daoke.wangc/mysql-server/sql/sql_select.cc:597
#9  0x0000000003052d83 in Sql_cmd_dml::prepare (this=0x7f1c18b09de8, thd=0x7f1c18000da0) at /flash1/daoke.wangc/mysql-server/sql/sql_select.cc:479
#10 0x00000000030535fd in Sql_cmd_dml::execute (this=0x7f1c18b09de8, thd=0x7f1c18000da0) at /flash1/daoke.wangc/mysql-server/sql/sql_select.cc:665
#11 0x0000000002fde95a in mysql_execute_command (thd=0x7f1c18000da0, first_level=true) at /flash1/daoke.wangc/mysql-server/sql/sql_parse.cc:4489
#12 0x0000000002fe12fe in mysql_parse (thd=0x7f1c18000da0, parser_state=0x7f1cc4716c30) at /flash1/daoke.wangc/mysql-server/sql/sql_parse.cc:5306
#13 0x0000000002fd66d3 in dispatch_command (thd=0x7f1c18000da0, com_data=0x7f1cc4717cd0, command=COM_QUERY) at /flash1/daoke.wangc/mysql-server/sql/sql_parse.cc:1776
#14 0x0000000002fd4c03 in do_command (thd=0x7f1c18000da0) at /flash1/daoke.wangc/mysql-server/sql/sql_parse.cc:1274
#15 0x0000000003197fa7 in handle_connection (arg=0x9fca1e0) at /flash1/daoke.wangc/mysql-server/sql/conn_handler/connection_handler_per_thread.cc:302
#16 0x0000000004cbdb8e in pfs_spawn_thread (arg=0x9fc8c80) at /flash1/daoke.wangc/mysql-server/storage/perfschema/pfs.cc:2854
#17 0x00007f1cd538fe25 in start_thread () from /lib64/libpthread.so.0
#18 0x00007f1cd3be4f1d in clone () from /lib64/libc.so.6
[27 Aug 2020 12:19] MySQL Verification Team
Hello Lee,

Thank you for the report and test case.
Observed that 8.0.21 debug build is affected.

regards,
Umesh
[27 Aug 2020 12:21] MySQL Verification Team
- 8.0.21

rm -rf 100640/
bin/mysqld-debug --initialize-insecure --basedir=$PWD --datadir=$PWD/100640 --log-error-verbosity=3 
bin/mysqld-debug --no-defaults --basedir=$PWD --datadir=$PWD/100640 --core-file --socket=/tmp/mysql_ushastry.sock  --port=3333 --log-error=$PWD/100640/log.err --mysqlx=0 --log-error-verbosity=3  --secure-file-priv="" --performance-schema=ON --performance-schema-instrument='memory/%=ON' 2>&1 &

 bin/mysql -uroot -S /tmp/mysql_ushastry.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.21-debug MySQL Community Server - GPL - Debug

Copyright (c) 2000, 2020, 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> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT 1 FROM      (SELECT          (SELECT 1         FROM t1 ) AS layer_0_column_0         FROM t1         WHERE 25 IN (1, 2, 3) ) AS layer_1_left_tb     RIGHT JOIN t1 AS layer_1_right_tb     ON layer_1_right_tb.a = layer_1_left_tb.layer_0_column_0;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> \q
Bye
[1]+  Aborted                 (core dumped) bin/mysqld-debug --no-defaults --basedir=$PWD --datadir=$PWD/100640 --core-file --socket=/tmp/mysql_ushastry.sock --port=3333 --log-error=$PWD/100640/log.err --mysqlx=0 --log-error-verbosity=3 --secure-file-priv="" --performance-schema=ON --performance-schema-instrument='memory/%=ON' 2>&1

-
(gdb) bt
#0  0x00007f169a62c771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x00000000045cfac3 in my_write_core (sig=6) at ../../mysql-8.0.21/mysys/stacktrace.cc:308
#2  0x00000000032bc308 in handle_fatal_signal (sig=6) at ../../mysql-8.0.21/sql/signal_handler.cc:171
#3  <signal handler called>
#4  0x00007f16986535d7 in raise () from /lib64/libc.so.6
#5  0x00007f1698654cc8 in abort () from /lib64/libc.so.6
#6  0x00007f169864c546 in __assert_fail_base () from /lib64/libc.so.6
#7  0x00007f169864c5f2 in __assert_fail () from /lib64/libc.so.6
#8  0x0000000003142afa in SELECT_LEX::delete_unused_merged_columns (this=0x7f15e80fa238, tables=0x7f15e8109c58) at ../../mysql-8.0.21/sql/sql_resolver.cc:4925
#9  0x0000000003142c78 in SELECT_LEX::delete_unused_merged_columns (this=0x7f15e80fa238, tables=0x7f15e80fa470) at ../../mysql-8.0.21/sql/sql_resolver.cc:4951
#10 0x00000000031374f6 in SELECT_LEX::apply_local_transforms (this=0x7f15e80fa238, thd=0x7f15e8000ca0, prune=true) at ../../mysql-8.0.21/sql/sql_resolver.cc:676
#11 0x0000000003136ec5 in SELECT_LEX::prepare (this=0x7f15e80fa238, thd=0x7f15e8000ca0) at ../../mysql-8.0.21/sql/sql_resolver.cc:529
#12 0x000000000315f0bf in Sql_cmd_select::prepare_inner (this=0x7f15e810a408, thd=0x7f15e8000ca0) at ../../mysql-8.0.21/sql/sql_select.cc:594
#13 0x000000000315ea17 in Sql_cmd_dml::prepare (this=0x7f15e810a408, thd=0x7f15e8000ca0) at ../../mysql-8.0.21/sql/sql_select.cc:477
#14 0x000000000315f26d in Sql_cmd_dml::execute (this=0x7f15e810a408, thd=0x7f15e8000ca0) at ../../mysql-8.0.21/sql/sql_select.cc:662
#15 0x00000000030e76e8 in mysql_execute_command (thd=0x7f15e8000ca0, first_level=true) at ../../mysql-8.0.21/sql/sql_parse.cc:4573
#16 0x00000000030ea112 in mysql_parse (thd=0x7f15e8000ca0, parser_state=0x7f168a779c60) at ../../mysql-8.0.21/sql/sql_parse.cc:5393
#17 0x00000000030df1aa in dispatch_command (thd=0x7f15e8000ca0, com_data=0x7f168a77ad10, command=COM_QUERY) at ../../mysql-8.0.21/sql/sql_parse.cc:1810
#18 0x00000000030dd6ec in do_command (thd=0x7f15e8000ca0) at ../../mysql-8.0.21/sql/sql_parse.cc:1294
#19 0x00000000032a70c7 in handle_connection (arg=0xb2a4e70) at ../../mysql-8.0.21/sql/conn_handler/connection_handler_per_thread.cc:302
#20 0x0000000004dcd772 in pfs_spawn_thread (arg=0xb2b4a10) at ../../../mysql-8.0.21/storage/perfschema/pfs.cc:2880
#21 0x00007f169a627df5 in start_thread () from /lib64/libpthread.so.0
#22 0x00007f169871460d in clone () from /lib64/libc.so.6
(gdb)
[7 Sep 2020 8:23] Erlend Dahl
Already fixed in the upcoming 8.0.22 release.