mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
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
This commit is contained in:
parent
79aaf0754d
commit
4282ad92cb
7 changed files with 71 additions and 16 deletions
|
|
@ -29,10 +29,10 @@ class ha_heap: public handler
|
|||
key_map btree_keys;
|
||||
/* number of records changed since last statistics update */
|
||||
uint records_changed;
|
||||
bool key_stats_ok;
|
||||
uint key_stat_version;
|
||||
public:
|
||||
ha_heap(TABLE *table): handler(table), file(0), records_changed(0),
|
||||
key_stats_ok(0) {}
|
||||
key_stat_version(0) {}
|
||||
~ha_heap() {}
|
||||
const char *table_type() const { return "HEAP"; }
|
||||
const char *index_type(uint inx)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue