• evgen@sunlight.local's avatar
    Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the · 7c42232d
    evgen@sunlight.local authored
    NO_AUTO_VALUE_ON_ZERO mode.
    
    In the NO_AUTO_VALUE_ON_ZERO mode the table->auto_increment_field_not_null
    variable is used to indicate that a non-NULL value was specified by the user
    for an auto_increment column. When an INSERT .. ON DUPLICATE updates the
    auto_increment field this variable is set to true and stays unchanged for the
    next insert operation. This makes the next inserted row sometimes wrongly have
    0 as the value of the auto_increment field.
    
    Now the fill_record() function resets the table->auto_increment_field_not_null
    variable before filling the record.
    The table->auto_increment_field_not_null variable is also reset by the
    open_table() function for a case if we missed some auto_increment_field_not_null
    handling bug.
    Now the table->auto_increment_field_not_null is reset at the end of the
    mysql_load() function.
    
    Reset the table->auto_increment_field_not_null variable after each
    write_row() call in the copy_data_between_tables() function.
    
    7c42232d
sql_base.cc 180 KB