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.