• unknown's avatar
    Fixed bug#36006: Optimizer does table scan for SELECT COUNT(*) · 5b8cdbf4
    unknown authored
                     for ENGINE=MRG_MYISAM (should be optimized out).
    
    Before WL#3281 MERGE engine had the HA_NOT_EXACT_COUNT flag
    unset, and it worked with COUNT optimization as desired.
    After the removal of the HA_NOT_EXACT_COUNT flag neither
    HA_STATS_RECORDS_IS_EXACT (opposite to former HA_NOT_EXACT_COUNT
    flag) nor modern HA_HAS_RECORDS flag were not added to MERGE
    table flag mask.
    
    1. The HA_HAS_RECORDS table flag has been set.
    2. The ha_myisammrg::records method has been overridden to
       calculate total number of records in underlying tables.
    
    
    
    storage/myisammrg/myrg_records.c:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      The myrg_records function has been added to calculate total number
      of records in underlying tables.
    include/myisammrg.h:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      The myrg_records function declaration has been added.
    mysql-test/r/merge.result:
      Added test case for bug#36006.
    mysql-test/t/merge.test:
      Added test case for bug#36006.
    storage/myisammrg/CMakeLists.txt:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      New myrg_records.c file has been added.
    storage/myisammrg/Makefile.am:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      New myrg_records.c file has been added.
    storage/myisammrg/ha_myisammrg.cc:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      The ha_myisammrg::records method has been overridden.
    storage/myisammrg/ha_myisammrg.h:
      Fixed bug#36006: Optimizer does table scan for select count(*).
      1. The HA_HAS_RECORDS table flag has been set.
      2. The ha_myisammrg::records method has been overridden.
    5b8cdbf4
ha_myisammrg.h 3.96 KB