summaryrefslogtreecommitdiff
path: root/sql/handler.h
diff options
context:
space:
mode:
authorguilhem@mysql.com <>2004-01-30 00:05:34 +0100
committerguilhem@mysql.com <>2004-01-30 00:05:34 +0100
commite71325caf95afbaaacac3581f38b0eafd2116620 (patch)
tree86a549cfea46d66ac122b39922323a8bd8a9e317 /sql/handler.h
parent5ce227e78a2bc0530c3cab2cbebdd4672a0c40c1 (diff)
downloadmariadb-git-e71325caf95afbaaacac3581f38b0eafd2116620.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).
Diffstat (limited to 'sql/handler.h')
-rw-r--r--sql/handler.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/handler.h b/sql/handler.h
index 8e72267c337..60edf539e2c 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -213,6 +213,7 @@ public:
uint raid_type,raid_chunks;
FT_INFO *ft_handler;
bool auto_increment_column_changed;
+ bool implicit_emptied; /* Can be !=0 only if HEAP */
handler(TABLE *table_arg) :table(table_arg),
ref(0), data_file_length(0), max_data_file_length(0), index_file_length(0),
@@ -221,7 +222,7 @@ public:
create_time(0), check_time(0), update_time(0),
key_used_on_scan(MAX_KEY), active_index(MAX_REF_PARTS),
ref_length(sizeof(my_off_t)), block_size(0),
- raid_type(0), ft_handler(0)
+ raid_type(0), ft_handler(0), implicit_emptied(0)
{}
virtual ~handler(void) {}
int ha_open(const char *name, int mode, int test_if_locked);