summaryrefslogtreecommitdiff
path: root/heap
diff options
context:
space:
mode:
authorunknown <pappa@c-5608e253.1238-1-64736c10.cust.bredbandsbolaget.se>2005-11-08 00:26:37 -0500
committerunknown <pappa@c-5608e253.1238-1-64736c10.cust.bredbandsbolaget.se>2005-11-08 00:26:37 -0500
commitbba73a091031e9c324fedd6ad1bb26bcd4e635f9 (patch)
treec9d5aa727d72266be0ab83ff53f139f4209b6e51 /heap
parent0e878d7e541983757bc0b31e7caa8a16a5fd2896 (diff)
downloadmariadb-git-bba73a091031e9c324fedd6ad1bb26bcd4e635f9.tar.gz
Bug #12796: Record lost in HEAP table
Two handler objects were present, one was used for an insert and the other for a select The state of the statistics was local to the handler object and thus the other handler object didn't notice the insert. Fix included: 1) Add a new variable key_stat_version added to whenever statistics was considered in need of update (previously key_stats_ok= FALSE in those places) 2) Add a new handler variable key_stat_version assigned whenever key_stats_ok= TRUE was set previously 3) Fix records_in_range to return records if records <= 1 4) Fix records_in_range to add 2 to rec_per_key to ensure we don't specify 0 or 1 when it isn't and thus invoking incorrect optimisations. 5) Fix unique key handling for HEAP table in records_in_range
Diffstat (limited to 'heap')
-rw-r--r--heap/hp_create.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/heap/hp_create.c b/heap/hp_create.c
index 2b811dac89b..acd4447fe5c 100644
--- a/heap/hp_create.c
+++ b/heap/hp_create.c
@@ -104,6 +104,7 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
DBUG_RETURN(1);
}
share->keydef= (HP_KEYDEF*) (share + 1);
+ share->key_stat_version= 1;
keyseg= (HA_KEYSEG*) (share->keydef + keys);
init_block(&share->block, reclength + 1, min_records, max_records);
/* Fix keys */