Recommit of antonys previous commit.
Bug#21413 "Engine table handler used by multiple threads in REPLACE DELAYED" When executing a REPLACE DELAYED statement, the storage engine ::extra() method was invoked by a different thread than the thread which has acquired the handler instance. This did not cause problems within the current server and with the current storage engines. But it has the potential to confuse future storage engines. Added code to avoid surplus calls to extra() method in case of DELAYED which avoids calling storage engine from a different thread than expected. No test case. This change does not change behavior in conjunction with current storage engines. So it cannot be tested by the regression test suite. sql/sql_insert.cc: Bug#21413 When performing DELAYED operations, we should not call the storage engine methods from the 'wrong' context. Ensure that the calls to the methods are appropiately guarded by either moving calls to sections where the lock_type is checked. No need to copy all elements of TABLE_LIST when opening table using open_ltable().
Showing
Please register or sign in to comment