diff options
author | Sergey Vojtovich <svoj@mysql.com> | 2009-02-05 17:03:47 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mysql.com> | 2009-02-05 17:03:47 +0400 |
commit | 071cfc03b7fb706b9262b58a794c6a8871592c3e (patch) | |
tree | 81da4e17ea29c46dd3810eafc956418a5c090208 /storage/myisammrg | |
parent | b9d02d4669ad45444f5082979e37908125eea3de (diff) | |
download | mariadb-git-071cfc03b7fb706b9262b58a794c6a8871592c3e.tar.gz |
BUG#39185 - Cardinality for merge tables calculated incorrectly.
Every subsequent query to a merge table with indexes was lowering
down cardinality.
The problem was that key statistics was not cleared when merge
children were detached. Causing next attach children perform
incremental key statistics calculation.
Fixed by clearing key statistics when attaching first child.
mysql-test/r/merge.result:
A test case for BUG#39185.
mysql-test/t/merge.test:
A test case for BUG#39185.
storage/myisammrg/myrg_open.c:
Clear key statistics when we're attaching first child, even
if it's buffer was allocated before. This is needed because
detach_children() doesn't clear statistics, causing incremental
statistics calculation.
Diffstat (limited to 'storage/myisammrg')
-rw-r--r-- | storage/myisammrg/myrg_open.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/storage/myisammrg/myrg_open.c b/storage/myisammrg/myrg_open.c index 64b4be2b7ca..69d2d2d0608 100644 --- a/storage/myisammrg/myrg_open.c +++ b/storage/myisammrg/myrg_open.c @@ -428,10 +428,11 @@ int myrg_attach_children(MYRG_INFO *m_info, int handle_locking, if (!m_info->rec_per_key_part) { if(!(m_info->rec_per_key_part= (ulong*) - my_malloc(key_parts * sizeof(long), MYF(MY_WME|MY_ZEROFILL)))) + my_malloc(key_parts * sizeof(long), MYF(MY_WME)))) goto err; /* purecov: inspected */ errpos= 1; } + bzero((char*) m_info->rec_per_key_part, key_parts * sizeof(long)); } /* Add MyISAM table info. */ |