• Konstantin Osipov's avatar
    A fix and a test case for Bug#36171 "CREATE TEMPORARY TABLE and · 05617af0
    Konstantin Osipov authored
    MERGE engine".
    Backport the patch from 6.0 by Ingo Struewing:
    revid:ingo.struewing@sun.com-20091028183659-6kmv1k3gdq6cpg4d
    Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine
    
    In former MySQL versions, up to 5.1.23/6.0.4 it was possible to create
    temporary MERGE tables with non-temporary MyISAM tables.
            
    This has been changed in the mentioned version due to Bug 19627
    (temporary merge table locking). MERGE children were locked through
    the parent table. If the parent was temporary, it was not locked and
    so the children were not locked either. Parallel use of the MyISAM
    tables corrupted them.
           
    Since 6.0.6 (WL 4144 - Lock MERGE engine children), the children are
    locked independently from the parent. Now it is possible to allow
    non-temporary children with a temporary parent. Even though the
    temporary MERGE table itself is not locked, each non-temporary
    MyISAM table is locked anyway.
            
    NOTE: Behavior change: In 5.1.23/6.0.4 we prohibited non-temporary
    children with a temporary MERGE table. Now we re-allow it.
    An important side-effect is that temporary tables, which overlay
    non-temporary MERGE children, overlay the children in the MERGE table.
    
    
    mysql-test/r/merge.result:
      Update results (Bug#36171).
    mysql-test/r/merge_mmap.result:
      Update results (Bug#36171).
    mysql-test/t/merge.test:
      Add tests for Bug#36171
    mysql-test/t/merge_mmap.test:
      Add tests for Bug#36171.
    storage/myisammrg/ha_myisammrg.cc:
      Changed constraint for temporary state of tables.
    05617af0
merge.test 77.6 KB