• unknown's avatar
    Bug#31210 - INSERT DELAYED crashes server when used on · e5b2745e
    unknown authored
                partitioned table
    
    Trying INSERT DELAYED on a partitioned table, that has not been
    used right before, crashes the server. When a table is used for
    select or update, it is kept open for some time. This period I
    mean with "right before".
    
    Information about partitioning of a table is stored in form of
    a string in the .frm file. Parsing of this string requires a
    correctly set up lexical analyzer (lex). The partitioning code
    uses a new temporary instance of a lex. But it does still refer
    to the previously active lex. The delayd insert thread does not
    initialize its lex though...
    
    Added initialization for thd->lex before open table in the delayed
    thread and at all other places where it is necessary to call
    lex_start() if all tables would be partitioned and need to parse
    the .frm file.
    
    
    mysql-test/r/partition_hash.result:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Added test result
    mysql-test/t/partition_hash.test:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Added test
    sql/event_scheduler.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/events.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/ha_ndbcluster_binlog.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/slave.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/sql_acl.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/sql_base.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Asserted that lex is initialized in open_table().
    sql/sql_connect.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/sql_insert.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Added initialization for thd->lex before open table.
    sql/sql_lex.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Added 'is_lex_started' to test if lex is initialized.
    sql/sql_lex.h:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Added 'is_lex_started' to test if lex is initialized.
    sql/sql_plugin.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/sql_servers.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/sql_udf.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    sql/table.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Asserted that lex is initialized in open_table_from_share().
    sql/tztime.cc:
      Bug#31210 - INSERT DELAYED crashes server when used on
                  partitioned table
      Initialized lex for later use in open_table().
    e5b2745e
events.cc 32.7 KB