Commit graph

1 commit

Author SHA1 Message Date
unknown
5b8cdbf4a6 Fixed bug#36006: Optimizer does table scan for SELECT COUNT(*)
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.
2008-04-26 02:45:58 +05:00