Commit 395613d4 authored by Monty's avatar Monty

Added 'crash_error' to Aria for recording of reason for crash)

This will allow us to in the future add better error messages why
an Aria table is crashed.
parent c0744105
...@@ -1364,6 +1364,7 @@ static int maria_chk(HA_CHECK *param, char *filename) ...@@ -1364,6 +1364,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
DBUG_PRINT("info", ("Resetting crashed state")); DBUG_PRINT("info", ("Resetting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS | share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS |
STATE_IN_REPAIR); STATE_IN_REPAIR);
share->crash_error= 0;
} }
else else
maria_mark_crashed(info); maria_mark_crashed(info);
...@@ -1428,6 +1429,7 @@ static int maria_chk(HA_CHECK *param, char *filename) ...@@ -1428,6 +1429,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
DBUG_PRINT("info", ("Resetting crashed state")); DBUG_PRINT("info", ("Resetting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS | share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS |
STATE_IN_REPAIR); STATE_IN_REPAIR);
share->crash_error= 0;
} }
else if (!maria_is_crashed(info) && else if (!maria_is_crashed(info) &&
(param->testflag & T_UPDATE_STATE)) (param->testflag & T_UPDATE_STATE))
......
...@@ -1413,6 +1413,7 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt) ...@@ -1413,6 +1413,7 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
DBUG_PRINT("info", ("Resetting crashed state")); DBUG_PRINT("info", ("Resetting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS | share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS |
STATE_IN_REPAIR); STATE_IN_REPAIR);
share->crash_error= 0;
if (!(table->db_stat & HA_READ_ONLY)) if (!(table->db_stat & HA_READ_ONLY))
{ {
int tmp; int tmp;
...@@ -1835,6 +1836,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize) ...@@ -1835,6 +1836,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
DBUG_PRINT("info", ("Resetting crashed state")); DBUG_PRINT("info", ("Resetting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS | share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED_FLAGS |
STATE_IN_REPAIR | STATE_MOVED); STATE_IN_REPAIR | STATE_MOVED);
share->crash_error= 0;
file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
} }
/* /*
......
...@@ -702,6 +702,7 @@ typedef struct st_maria_share ...@@ -702,6 +702,7 @@ typedef struct st_maria_share
LIST *open_list; /* Tables open with this share */ LIST *open_list; /* Tables open with this share */
PAGECACHE *pagecache; /* ref to the current key cache */ PAGECACHE *pagecache; /* ref to the current key cache */
MARIA_DECODE_TREE *decode_trees; MARIA_DECODE_TREE *decode_trees;
int crash_error; /* Reason for marked crashed */
/* /*
Previous auto-increment value. Used to verify if we can restore the Previous auto-increment value. Used to verify if we can restore the
auto-increment counter if we have to abort an insert (duplicate key). auto-increment counter if we have to abort an insert (duplicate key).
...@@ -1151,19 +1152,23 @@ struct ha_table_option_struct ...@@ -1151,19 +1152,23 @@ struct ha_table_option_struct
#define int4store_aligned(A,B) int4store((A),(B)) #define int4store_aligned(A,B) int4store((A),(B))
#define maria_mark_crashed(x) do{(x)->s->state.changed|= STATE_CRASHED; \ #define maria_mark_crashed(x) do{(x)->s->state.changed|= STATE_CRASHED; \
(x)->s->crash_error= my_errno; \
DBUG_PRINT("error", ("Marked table crashed")); \ DBUG_PRINT("error", ("Marked table crashed")); \
}while(0) }while(0)
#define maria_mark_crashed_share(x) \ #define maria_mark_crashed_share(x) \
do{(x)->state.changed|= STATE_CRASHED; \ do{(x)->state.changed|= STATE_CRASHED; \
(x)->crash_error= my_errno; \
DBUG_PRINT("error", ("Marked table crashed")); \ DBUG_PRINT("error", ("Marked table crashed")); \
}while(0) }while(0)
#define maria_mark_crashed_on_repair(x) do{(x)->s->state.changed|= \ #define maria_mark_crashed_on_repair(x) do{(x)->s->state.changed|= \
STATE_CRASHED|STATE_CRASHED_ON_REPAIR; \ STATE_CRASHED|STATE_CRASHED_ON_REPAIR; \
(x)->update|= HA_STATE_CHANGED; \ (x)->update|= HA_STATE_CHANGED; \
(x)->s->crash_error= my_errno; \
DBUG_PRINT("error", ("Marked table crashed on repair")); \ DBUG_PRINT("error", ("Marked table crashed on repair")); \
}while(0) }while(0)
#define maria_mark_in_repair(x) do{(x)->s->state.changed|= \ #define maria_mark_in_repair(x) do{(x)->s->state.changed|= \
STATE_CRASHED | STATE_IN_REPAIR; \ STATE_CRASHED | STATE_IN_REPAIR; \
(x)->s->crash_error= my_errno; \
(x)->update|= HA_STATE_CHANGED; \ (x)->update|= HA_STATE_CHANGED; \
DBUG_PRINT("error", ("Marked table crashed for repair")); \ DBUG_PRINT("error", ("Marked table crashed for repair")); \
}while(0) }while(0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment