summaryrefslogtreecommitdiff
path: root/storage/myisammrg
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mysql.com>2009-02-05 17:03:47 +0400
committerSergey Vojtovich <svoj@mysql.com>2009-02-05 17:03:47 +0400
commit071cfc03b7fb706b9262b58a794c6a8871592c3e (patch)
tree81da4e17ea29c46dd3810eafc956418a5c090208 /storage/myisammrg
parentb9d02d4669ad45444f5082979e37908125eea3de (diff)
downloadmariadb-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.c3
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. */