• Staale Smedseng's avatar
    Bug#39953 Triggers are not working properly with multi table · 50ed1ef7
    Staale Smedseng authored
    updates
    
    Attempt to execute trigger or stored function with multi-UPDATE
    which used - but didn't update - a table that was also used by
    the calling statement led to an error. Read-only reference to
    tables used in the calling statement should be allowed.
     
    This problem was caused by the fact that check for conflicting
    use of tables in SP/triggers was performed in open_tables(),
    and in case of multi-UPDATE we didn't know exact lock type at
    this stage.
    
    We solve the problem by moving this check to lock_tables(), so
    it can be performed after exact lock types for tables used by
    multi-UPDATE are determined.
    
    
    mysql-test/r/trigger.result:
      Results for the added test case is added.
    mysql-test/t/trigger.test:
      A new test case is added, verifying correct table multi-update
      conflict resolution, both read-only and write.
    sql/sql_base.cc:
      The check for conflicting use of tables in SP/triggers is moved
      to lock_tables(), to be performed after the exact lock types
      have been determined. Also, an assert is added to open_ltable()
      to ensure this func is not used in a prelocked context.
    50ed1ef7
trigger.test 64.4 KB