Bug #48481 assert in unique_table called by mysql_prepare_delete
Submitted: 2 Nov 2009 17:27 Modified: 10 Nov 2009 13:18
Reporter: Matthias Leich Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:mysql-6.0-codebase-bugfixing OS:Any
Assigned to: CPU Architecture:Any

[2 Nov 2009 17:27] Matthias Leich
Description:
The assert happens in sql_base.cc:1799 :
  if (table->table)
  {
    /* temporary table is always unique */
    if (table->table && table->table->s->tmp_table != NO_TMP_TABLE)
      DBUG_RETURN(0);
    table= table->find_underlying_table(table->table);
    /*
      as far as we have table->table we have to find real TABLE_LIST of
      it in underlying tables
    */
    DBUG_ASSERT(table);       <<===============
  }

RQG test with 30 threads using the grammar WL5004_sql.yy

Result on mysql-6.0-codebase-bugfixing
revno: 3692 2009-10-31
--------------------------------------
Thread 1 (process 2435):
#0  pthread_kill () from /lib/libpthread.so.0
#1  my_write_core (sig=6) at stacktrace.c:309
#2  handle_segfault (sig=6) at mysqld.cc:2765
#3  <signal handler called>
#4  raise () from /lib/libc.so.6
#5  abort () from /lib/libc.so.6
#6  __assert_fail () from /lib/libc.so.6
#7  unique_table (thd=0x317a1c8, table=0x0, table_list=0x31d51e8, check_alias=false) at sql_base.cc:1799
#8  mysql_prepare_delete (thd=0x317a1c8, table_list=0x316b720, conds=0x7f1642d5a198) at sql_delete.cc:510
#9  mysql_delete (thd=0x317a1c8, table_list=0x316b720, conds=0x2b973f0, order=0x317c380, limit=18446744073709551615, options=0, reset_auto_increment=false) at sql_delete.cc:77
#10 mysql_execute_command (thd=0x317a1c8) at sql_parse.cc:3382
#11 mysql_parse (thd=0x317a1c8, inBuf=0x316b5c0 "DELETE   FROM testdb_S . t1_all_2_S  WHERE `pk` + SLEEP( 0.5 * 1 * 1 ) = 3", length=74, found_semicolon=0x7f1642d5c8f8) at sql_parse.cc:5979
#12 dispatch_command (command=COM_QUERY, thd=0x317a1c8, packet=0x32179f9 "DELETE   FROM testdb_S . t1_all_2_S  WHERE `pk` + SLEEP( 0.5 * 1 * 1 ) = 3", packet_length=74) at sql_parse.cc:1076
#13 do_command (thd=0x317a1c8) at sql_parse.cc:758
#14 handle_one_connection (arg=0x317a1c8) at sql_connect.cc:1164
#15 start_thread () from /lib/libpthread.so.0
#16 clone () from /lib/libc.so.6
#17 ?? ()

My environment:
- MySQL compiled from source with
  ./BUILD/compile-pentium64-debug-max
- Linux OpenSuSE 11.0 (64 Bit)
- Intel Core2Duo

How to repeat:
I will come up with a simplified testcase soon.
[10 Nov 2009 13:18] Matthias Leich
Any attempt to replay this bug like grammar simplification
was not successful. Therefor I set this bug to
"Can't repeat" but will restart attempts if I have the time.