summaryrefslogtreecommitdiff
path: root/include/heap.h
diff options
context:
space:
mode:
authorunknown <guilhem@mysql.com>2004-01-30 00:05:34 +0100
committerunknown <guilhem@mysql.com>2004-01-30 00:05:34 +0100
commitbbd2adf4ba6ec2086a5e8eeaa89f56f1abee02f6 (patch)
tree86a549cfea46d66ac122b39922323a8bd8a9e317 /include/heap.h
parent8746a25554d18f03fc32ca5d338850f9308bee88 (diff)
downloadmariadb-git-bbd2adf4ba6ec2086a5e8eeaa89f56f1abee02f6.tar.gz
Fix for BUG#2477 "Slave stop with error after master reboot if use HEAP tables":
when we open the HEAP table for the first time since server restart, in hp_open(), we set a flag to propagate this info to the handler level which then writes a DELETE FROM this_heap_table to the binlog. It is not a perfect solution for the bug, because between the server start and the first open of the table, the slave still had old data in his table so a SELECT on the slave may show wrong content. But if there is a --init-file to populate the HEAP table on master as startup, then this is a safe fix (I'll put a note about init-file in the HEAP section of the manual). heap/hp_info.c: new info variable implicit_emptied heap/hp_open.c: If this is the first open of the HEAP table, it means it is empty, so we mark it. include/heap.h: new variables implicit_emptied (we need one in HEAPINFO for the hp_info() call). sql/ha_heap.cc: report info to upper level sql/handler.h: new info 'implicit_emptied' in the handler level; only HEAP uses it. sql/sql_base.cc: When a HEAP table is opened for the first time, write a DELETE FROM to the binlog, for replication and mysqlbinlog|mysql. Monty: I added the entry->file->implicit_emptied= 0;
Diffstat (limited to 'include/heap.h')
-rw-r--r--include/heap.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/heap.h b/include/heap.h
index 02b04e2b3ec..ed023133469 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -47,6 +47,7 @@ typedef struct st_heapinfo /* Struct from heap_info */
ulong index_length;
uint reclength; /* Length of one record */
int errkey;
+ my_bool implicit_emptied;
} HEAPINFO;
@@ -126,6 +127,7 @@ typedef struct st_heap_info
int mode; /* Mode of file (READONLY..) */
uint opt_flag,update;
byte *lastkey; /* Last used key with rkey */
+ my_bool implicit_emptied;
#ifdef THREAD
THR_LOCK_DATA lock;
#endif