Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-25536

InnoDB: Failing assertion: sym_node->table != NULL in pars_retrieve_table_def

Details

    Description

      CREATE TABLE t (t TEXT,FULLTEXT (t)) ENGINE=InnoDB;
      ALTER TABLE t DISCARD TABLESPACE;
      SET GLOBAL innodb_ft_aux_table='test/t';
      SELECT * FROM information_schema.innodb_ft_deleted;
      

      Leads to:

      10.6.1 9db14e93acc4ec9023d50686c66dbef7d4d8c15c (Debug)

      InnoDB: Failing assertion: sym_node->table != NULL
      

      10.6.1 9db14e93acc4ec9023d50686c66dbef7d4d8c15c (Debug)

      Core was generated by `/test/MD270421-mariadb-10.6.1-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      [Current thread is 1 (Thread 0x1512280e1700 (LWP 3664009))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x000015123cb4e859 in __GI_abort () at abort.c:79
      #2  0x00005632c68cda1c in ut_dbg_assertion_failed (expr=expr@entry=0x5632c6ee097a "sym_node->table != NULL", file=file@entry=0x5632c6ee0008 "/test/10.6_dbg/storage/innobase/pars/pars0pars.cc", line=line@entry=771) at /test/10.6_dbg/storage/innobase/ut/ut0dbg.cc:60
      #3  0x00005632c678f9ea in pars_retrieve_table_def (sym_node=sym_node@entry=0x1511f005dba8) at /test/10.6_dbg/storage/innobase/pars/pars0pars.cc:771
      #4  0x00005632c6794f63 in pars_retrieve_table_list_defs (sym_node=0x1511f005dba8) at /test/10.6_dbg/storage/innobase/pars/pars0pars.cc:792
      #5  pars_select_statement (select_node=0x1511f005dab8, table_list=0x1511f005dba8, search_cond=0x0, for_update=0x0, lock_shared=0x0, order_by=0x0) at /test/10.6_dbg/storage/innobase/pars/pars0pars.cc:923
      #6  0x00005632c6a5879a in yyparse () at pars0grm.y:308
      #7  0x00005632c679335c in pars_sql (info=info@entry=0x1511f002a058, str=<optimized out>, str@entry=0x1511f002b938 "PROCEDURE P() IS\nDECLARE FUNCTION my_func;\nDECLARE CURSOR c IS SELECT doc_id FROM $table_name;\nBEGIN\n\nOPEN c;\nWHILE 1 = 1 LOOP\n  FETCH c INTO my_func();\n  IF c % NOTFOUND THEN\n    EXIT;\n  END IF;\nEND "...) at /test/10.6_dbg/storage/innobase/pars/pars0pars.cc:2001
      #8  0x00005632c6a364fb in fts_parse_sql (fts_table=fts_table@entry=0x1512280df650, info=info@entry=0x1511f002a058, sql=sql@entry=0x5632c6f2f5c0 "DECLARE FUNCTION my_func;\nDECLARE CURSOR c IS SELECT doc_id FROM $table_name;\nBEGIN\n\nOPEN c;\nWHILE 1 = 1 LOOP\n  FETCH c INTO my_func();\n  IF c % NOTFOUND THEN\n    EXIT;\n  END IF;\nEND LOOP;\nCLOSE c;") at /test/10.6_dbg/storage/innobase/fts/fts0sql.cc:159
      #9  0x00005632c6a260d1 in fts_table_fetch_doc_ids (trx=trx@entry=0x151223c012a0, fts_table=fts_table@entry=0x1512280df650, doc_ids=doc_ids@entry=0x1511f002b598) at /test/10.6_dbg/storage/innobase/fts/fts0opt.cc:989
      #10 0x00005632c66df5c0 in i_s_fts_deleted_generic_fill (thd=thd@entry=0x1511f0000db8, tables=tables@entry=0x1511f00146f0, being_deleted=being_deleted@entry=0) at /test/10.6_dbg/storage/innobase/handler/i_s.cc:2429
      #11 0x00005632c66df7ef in i_s_fts_deleted_fill (thd=0x1511f0000db8, tables=0x1511f00146f0) at /test/10.6_dbg/storage/innobase/handler/i_s.cc:2469
      #12 0x00005632c6069186 in get_schema_tables_result (join=join@entry=0x1511f0015810, executed_place=executed_place@entry=PROCESSED_BY_JOIN_EXEC) at /test/10.6_dbg/sql/sql_show.cc:8727
      #13 0x00005632c603d164 in JOIN::exec_inner (this=this@entry=0x1511f0015810) at /test/10.6_dbg/sql/sql_select.cc:4575
      #14 0x00005632c603dda6 in JOIN::exec (this=this@entry=0x1511f0015810) at /test/10.6_dbg/sql/sql_select.cc:4378
      #15 0x00005632c603be82 in mysql_select (thd=thd@entry=0x1511f0000db8, tables=0x1511f00146f0, fields=@0x1511f00141f0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x1511f0014670, last = 0x1511f0014670, elements = 1}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2684619520, result=0x1511f00157e8, unit=0x1511f0005118, select_lex=0x1511f0014098) at /test/10.6_dbg/sql/sql_select.cc:4854
      #16 0x00005632c603c148 in handle_select (thd=thd@entry=0x1511f0000db8, lex=lex@entry=0x1511f0005050, result=result@entry=0x1511f00157e8, setup_tables_done_option=setup_tables_done_option@entry=0) at /test/10.6_dbg/sql/sql_select.cc:446
      #17 0x00005632c5faee55 in execute_sqlcom_select (thd=thd@entry=0x1511f0000db8, all_tables=0x1511f00146f0) at /test/10.6_dbg/sql/sql_parse.cc:6244
      #18 0x00005632c5fbbd4e in mysql_execute_command (thd=thd@entry=0x1511f0000db8) at /test/10.6_dbg/sql/sql_parse.cc:3940
      #19 0x00005632c5fa7f81 in mysql_parse (thd=thd@entry=0x1511f0000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1512280e0410) at /test/10.6_dbg/sql/sql_parse.cc:8018
      #20 0x00005632c5fb6db3 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x1511f0000db8, packet=packet@entry=0x1511f000b789 "SELECT * FROM information_schema.innodb_ft_deleted", packet_length=packet_length@entry=50, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1332
      #21 0x00005632c5fba1a6 in do_command (thd=0x1511f0000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1406
      #22 0x00005632c6114a6a in do_handle_one_connection (connect=<optimized out>, connect@entry=0x5632c9dfaa58, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
      #23 0x00005632c611506f in handle_one_connection (arg=arg@entry=0x5632c9dfaa58) at /test/10.6_dbg/sql/sql_connect.cc:1312
      #24 0x00005632c65c72ca in pfs_spawn_thread (arg=0x5632c9ce4298) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
      #25 0x000015123d05c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #26 0x000015123cc4b293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      10.6.1 9db14e93acc4ec9023d50686c66dbef7d4d8c15c (Optimized)

      Core was generated by `/test/MD270421-mariadb-10.6.1-linux-x86_64-opt/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      [Current thread is 1 (Thread 0x151ec0104700 (LWP 3690974))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x0000151ec8f2d859 in __GI_abort () at abort.c:79
      #2  0x000055799a73bfa1 in ut_dbg_assertion_failed (expr=expr@entry=0x55799b31c6d4 "sym_node->table != NULL", file=file@entry=0x55799b31c080 "/test/10.6_opt/storage/innobase/pars/pars0pars.cc", line=line@entry=771) at /test/10.6_opt/storage/innobase/ut/ut0dbg.cc:60                                                                                             
      #3  0x000055799a72586a in pars_retrieve_table_def (sym_node=0x151e58047a08) at /test/10.6_opt/storage/innobase/pars/pars0pars.cc:771                                                                                                          
      #4  pars_retrieve_table_def (sym_node=0x151e58047a08) at /test/10.6_opt/storage/innobase/pars/pars0pars.cc:753
      #5  0x000055799ae1cd23 in pars_retrieve_table_list_defs (sym_node=0x151e58047a08) at /test/10.6_opt/storage/innobase/pars/pars0pars.cc:792                                                                                                    
      #6  pars_select_statement (select_node=0x151e58047920, table_list=0x151e58047a08, search_cond=0x0, for_update=0x0, lock_shared=0x0, order_by=0x0) at /test/10.6_opt/storage/innobase/pars/pars0pars.cc:923                                    
      #7  0x000055799af7a6ce in yyparse () at pars0grm.y:308
      #8  0x000055799ae2096e in pars_sql (info=info@entry=0x151e5801de00, str=str@entry=0x151e5801d4c8 "PROCEDURE P() IS\nDECLARE FUNCTION my_func;\nDECLARE CURSOR c IS SELECT doc_id FROM $table_name;\nBEGIN\n\nOPEN c;\nWHILE 1 = 1 LOOP\n  FETCH c INTO my_func();\n  IF c % NOTFOUND THEN\n    EXIT;\n  END IF;\nEND "...) at /test/10.6_opt/storage/innobase/pars/pars0pars.cc:2001                                                                                                        
      #9  0x000055799af671b3 in fts_parse_sql (fts_table=fts_table@entry=0x151ec01027f0, info=info@entry=0x151e5801de00, sql=sql@entry=0x55799b3382f0 "DECLARE FUNCTION my_func;\nDECLARE CURSOR c IS SELECT doc_id FROM $table_name;\nBEGIN\n\nOPEN c;\nWHILE 1 = 1 LOOP\n  FETCH c INTO my_func();\n  IF c % NOTFOUND THEN\n    EXIT;\n  END IF;\nEND LOOP;\nCLOSE c;") at /test/10.6_opt/storage/innobase/fts/fts0sql.cc:159                                                                   
      #10 0x000055799af5d39a in fts_table_fetch_doc_ids (trx=trx@entry=0x151eb41c3130, fts_table=fts_table@entry=0x151ec01027f0, doc_ids=doc_ids@entry=0x151e5801b7b0) at /test/10.6_opt/storage/innobase/fts/fts0opt.cc:989                        
      #11 0x000055799adc7bbd in i_s_fts_deleted_generic_fill (thd=0x151e58000c58, being_deleted=0, tables=<optimized out>, tables=<optimized out>) at /test/10.6_opt/storage/innobase/handler/i_s.cc:2429                                           
      #12 0x000055799a8ec20e in get_schema_tables_result (join=join@entry=0x151e580120b0, executed_place=executed_place@entry=PROCESSED_BY_JOIN_EXEC) at /test/10.6_opt/sql/sql_show.cc:8727                                                        
      #13 0x000055799a8d1c8f in JOIN::exec_inner (this=0x151e580120b0) at /test/10.6_opt/sql/sql_select.cc:4554
      #14 0x000055799a8d23e8 in JOIN::exec (this=this@entry=0x151e580120b0) at /test/10.6_opt/sql/sql_select.cc:4378
      #15 0x000055799a8d02c8 in mysql_select (thd=0x151e58000c58, tables=0x151e58010f90, fields=<optimized out>, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=<optimized out>, result=0x151e58012088, unit=0x151e58004df8, select_lex=0x151e58010938) at /test/10.6_opt/sql/sql_select.cc:4854                                    
      #16 0x000055799a8d0d47 in handle_select (thd=thd@entry=0x151e58000c58, lex=lex@entry=0x151e58004d30, result=result@entry=0x151e58012088, setup_tables_done_option=setup_tables_done_option@entry=0) at /test/10.6_opt/sql/sql_select.cc:446   
      #17 0x000055799a861281 in execute_sqlcom_select (thd=0x151e58000c58, all_tables=0x151e58010f90) at /test/10.6_opt/sql/sql_parse.cc:6244                                                                                                       
      #18 0x000055799a86ee87 in mysql_execute_command (thd=0x151e58000c58) at /test/10.6_opt/sql/sql_parse.cc:3940
      #19 0x000055799a85c064 in mysql_parse (thd=0x151e58000c58, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at /test/10.6_opt/sql/sql_parse.cc:8018                                                              
      #20 0x000055799a8680a5 in dispatch_command (command=COM_QUERY, thd=0x151e58000c58, packet=<optimized out>, packet_length=<optimized out>, blocking=<optimized out>) at /test/10.6_opt/sql/sql_class.h:1332                                    
      #21 0x000055799a86a007 in do_command (thd=0x151e58000c58, blocking=blocking@entry=true) at /test/10.6_opt/sql/sql_parse.cc:1406                                                                                                               
      #22 0x000055799a96ced7 in do_handle_one_connection (connect=<optimized out>, put_in_cache=true) at /test/10.6_opt/sql/sql_connect.cc:1410                                                                                                     
      #23 0x000055799a96d23d in handle_one_connection (arg=arg@entry=0x55799c856368) at /test/10.6_opt/sql/sql_connect.cc:1312                                                                                                                      
      #24 0x000055799acf2418 in pfs_spawn_thread (arg=0x55799c7ce8f8) at /test/10.6_opt/storage/perfschema/pfs.cc:2201
      #25 0x0000151ec943b609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #26 0x0000151ec902a293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      Bug confirmed present in:
      MariaDB: 10.2.38 (dbg), 10.2.38 (opt), 10.3.29 (dbg), 10.3.29 (opt), 10.4.19 (dbg), 10.4.19 (opt), 10.5.10 (dbg), 10.5.10 (opt), 10.6.1 (dbg), 10.6.1 (opt)
      MySQL: 5.6.51 (dbg), 5.6.51 (opt), 5.7.33 (dbg), 5.7.33 (opt), 8.0.23 (dbg), 8.0.23 (opt)

      Bug (or feature/syntax) confirmed not present in:
      MySQL: 5.5.62 (dbg), 5.5.62 (opt)

      MS 5.5.62 (Debug)

      5.5.62-dbg>CREATE TABLE t (t TEXT,FULLTEXT (t)) ENGINE=InnoDB;
      ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
      

      Attachments

        Issue Links

          Activity

            In that patch, would !user_table->is_readable() work as the predicate?

            marko Marko Mäkelä added a comment - In that patch, would !user_table->is_readable() work as the predicate?

            Patch is in bb-10.2-thiru

            thiru Thirunarayanan Balathandayuthapani added a comment - Patch is in bb-10.2-thiru

            Across all versions (MD+MS) quite a few uniqueID's/stacks are observed;

            SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs
            SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement
            sym_node->table != NULL|SIGABRT|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement
            sym_node->table != NULL|SIGABRT|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement|yyparse
            sym_node->table != NULL|SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs
            sym_node->table != NULL|SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement
            

            Roel Roel Van de Paar added a comment - Across all versions (MD+MS) quite a few uniqueID's/stacks are observed; SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement sym_node->table != NULL|SIGABRT|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement sym_node->table != NULL|SIGABRT|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement|yyparse sym_node->table != NULL|SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_def|pars_retrieve_table_list_defs sym_node->table != NULL|SIGABRT|ut_dbg_assertion_failed|pars_retrieve_table_def|pars_retrieve_table_list_defs|pars_select_statement

            InnoDB FULLTEXT INDEX support was introduced in MySQL 5.6 and MariaDB 10.0. I would think that also MariaDB 10.0 and 10.1 could be affected, but it does not really matter, because those lines are already EOL.

            marko Marko Mäkelä added a comment - InnoDB FULLTEXT INDEX support was introduced in MySQL 5.6 and MariaDB 10.0. I would think that also MariaDB 10.0 and 10.1 could be affected, but it does not really matter, because those lines are already EOL.

            People

              thiru Thirunarayanan Balathandayuthapani
              Roel Roel Van de Paar
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.