• dlenev@mockturtle.local's avatar
    Proposed fix for bug#24491 "using alias from source table in insert ... · 2b63f106
    dlenev@mockturtle.local authored
    on duplicate key".
    
    INSERT ... SELECT ... ON DUPLICATE KEY UPDATE which was used in
    stored routine or as prepared statement and which in its ON DUPLICATE
    KEY clause erroneously tried to assign value to a column mentioned only
    in its SELECT part was properly emitting error on the first execution
    but succeeded on the second and following executions.
    
    Code which is responsible for name resolution of fields mentioned in
    UPDATE clause (e.g. see select_insert::prepare()) modifies table list
    and Name_resolution_context used in this process. It uses
    Name_resolution_context_state::save_state/restore_state() to revert
    these modifications. Unfortunately those two methods failed to revert
    properly modifications to TABLE_LIST::next_name_resolution_table
    and this broke name resolution process for successive executions.
    
    This patch fixes Name_resolution_context_state::save_state/restore_state()
    in such way that it properly handles TABLE_LIST::next_name_resolution_table.
    2b63f106
sp-error.test 42.4 KB