summaryrefslogtreecommitdiff
path: root/include/myisammrg.h
diff options
context:
space:
mode:
authorunknown <gshchepa/uchum@host.loc>2008-04-26 02:45:58 +0500
committerunknown <gshchepa/uchum@host.loc>2008-04-26 02:45:58 +0500
commit5b8cdbf4a652e3a39aa2bd894c43293fb007a694 (patch)
tree168fdf05aa71e4176ac8753ebb98afdbd5b05dca /include/myisammrg.h
parent304c4381e69647aac38c7304bc0c3e4592f487dd (diff)
downloadmariadb-git-5b8cdbf4a652e3a39aa2bd894c43293fb007a694.tar.gz
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.
Diffstat (limited to 'include/myisammrg.h')
-rw-r--r--include/myisammrg.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/myisammrg.h b/include/myisammrg.h
index cc6e6aac6cd..dafae157ee0 100644
--- a/include/myisammrg.h
+++ b/include/myisammrg.h
@@ -112,6 +112,7 @@ extern int myrg_reset(MYRG_INFO *info);
extern void myrg_extrafunc(MYRG_INFO *info,invalidator_by_filename inv);
extern ha_rows myrg_records_in_range(MYRG_INFO *info, int inx,
key_range *min_key, key_range *max_key);
+extern ha_rows myrg_records(MYRG_INFO *info);
extern ulonglong myrg_position(MYRG_INFO *info);
#ifdef __cplusplus