• Tatjana Azundris Nuernberg's avatar
    Bug#11902767/Bug#60580: Statement improperly replicated crashes slave SQL thread · 5047a638
    Tatjana Azundris Nuernberg authored
    If LOAD DATA INFILE featured a SET clause, the name=value pairs
    would be regenerated using item::print. Unfortunately, that code
    is mostly optimized for EXPLAIN EXTENDED output and such, and can
    not be relied on to return valid SQL.
    
    We now name each value its original, user-supplied form and use
    that to create LOAD DATA INFILE statements for statement-based
    replication.
    
    mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
      minor change in syntactic sugar
    mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
      add test case
    mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
      add test case
    sql/sql_load.cc:
      Do not try to item::print values in LOAD DATA INFILE's
      SET clause; they might not even be valid SQL at this
      point. Use our saved version instead.
    sql/sql_yacc.yy:
      If LOAD DATA INFILE has SET name=val clauses, tag the
      individual val-parts with the user's version so we can
      later replicate that, rather than the smashed pieces
      we'd get from item::print once the optimizer's through
      with our poor values.
    5047a638
rpl_loaddatalocal.result 3.55 KB