-
Arun Kuruvila authored
Description: Server may exit during SELECT on a MERGE table if concurrent INSERT SELECT statements are executing in some sequence. Analysis: Optimizer creates a clone of MRG_INFO structure of the merge table for index merge optimization during the execution of SELECT statement on a MERGE table. Due to concurrent INSERT SELECT statements, there arises a scenario where the file_offset values maintained by the two MRG_INFO structures becomes inconsistent. This in turn results in a read from an incorrect position on the child table which later results in the server crash. Fix:- Table's main MRG_INFO structure is also updated with the help of the function, 'info()' just after the clone for MRG_INFO is created [inside 'ha_myisammrg::open()']. This will make sure that all the values maintained by both the structures will be in sync during the execution.
Arun Kuruvila authoredDescription: Server may exit during SELECT on a MERGE table if concurrent INSERT SELECT statements are executing in some sequence. Analysis: Optimizer creates a clone of MRG_INFO structure of the merge table for index merge optimization during the execution of SELECT statement on a MERGE table. Due to concurrent INSERT SELECT statements, there arises a scenario where the file_offset values maintained by the two MRG_INFO structures becomes inconsistent. This in turn results in a read from an incorrect position on the child table which later results in the server crash. Fix:- Table's main MRG_INFO structure is also updated with the help of the function, 'info()' just after the clone for MRG_INFO is created [inside 'ha_myisammrg::open()']. This will make sure that all the values maintained by both the structures will be in sync during the execution.
Loading