1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-30 11:22:14 +03:00
Files
mariadb/mysql-test/r
Martin Hansson 2cc1134c2c Bug#44653: Server crash noticed when executing random queries with partitions.
When opening a table, it is imperative that the flag
TABLE::auto_increment_field_not_null be false. But if an error occured during
the creation of a table (e.g. the table exists already) with an auto_increment
column and a BEFORE trigger that used the INSERT ... SELECT construct, the
flag was not reset until after error checking. Thus if an error occured,
select_insert::send_data() returned immediately and it was not reset (see * in
pseudocode below).  Crash happened if the table was opened again. Fixed by
resetting the flag after error checking.

nested-loops_join():
  for each row in SELECT table {
    select_insert::send_data():
      if a values is supplied for AUTO_INCREMENT column
         table->auto_increment_field_not_null= TRUE
       else
         table->auto_increment_field_not_null= FALSE
       if (error)
         return 1; *
       if (table->auto_increment_field_not_null == FALSE)
         ...
       table->auto_increment_field_not_null == FALSE 
  }
<-- table returned to table cache and later retrieved by open_table: 
open_table():
  assert(table->auto_increment_field_not_null)
2009-06-22 14:51:33 +02:00
..
2008-04-02 10:06:36 +02:00
2009-02-10 16:27:35 +03:00
2009-01-23 13:22:05 +01:00
2008-11-21 17:32:45 +04:00
2008-09-03 13:06:03 +05:00
2009-05-10 21:20:35 +05:00
2009-03-11 14:29:59 +02:00
2009-05-21 21:51:48 +04:00
2009-06-01 16:00:38 +04:00
2009-03-27 10:18:06 +08:00
2008-09-05 13:36:02 +05:00
2009-02-07 16:50:31 +01:00
2009-05-13 23:39:35 +05:00
2009-01-23 13:22:05 +01:00
2009-04-29 07:59:10 +05:00
2009-04-29 07:59:10 +05:00
2009-02-26 18:17:06 +01:00
2009-02-03 14:45:17 +01:00
2009-05-06 15:00:14 +05:30
2009-02-10 16:27:35 +03:00
2009-04-09 14:38:50 +05:00
2009-03-16 20:54:50 +01:00
2008-10-23 21:27:09 +02:00
2009-01-26 15:20:33 +01:00
2009-05-28 16:21:41 +05:00
2009-02-10 22:26:37 +01:00
2009-05-08 21:24:15 +04:00
2009-02-27 17:06:23 +02:00
2009-02-19 18:22:28 +01:00
2009-02-03 14:45:17 +01:00
2009-02-09 22:00:15 +01:00
2008-07-03 23:41:22 +04:00
2009-02-19 17:59:00 +04:00
2008-04-02 10:06:36 +02:00
2009-06-04 13:53:15 +02:00
2009-06-04 13:53:15 +02:00
2009-06-10 11:58:36 +03:00
2008-07-07 11:43:56 +03:00
2008-12-13 19:42:12 +00:00
2009-02-09 22:00:15 +01:00
2008-12-13 19:42:12 +00:00
2009-02-19 18:24:25 -05:00
2008-12-09 17:31:22 +04:00
2009-01-13 15:04:28 +01:00
2009-02-14 20:14:10 +03:00
2008-11-18 13:52:03 +04:00
2009-05-15 12:42:57 +04:00
2008-08-26 15:22:09 +05:00
2009-05-15 12:11:07 +05:00
2009-05-10 21:20:35 +05:00
2009-06-02 13:44:41 +05:30
2009-02-12 11:52:01 +02:00