summaryrefslogtreecommitdiff
path: root/storage/archive
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2012-03-28 13:22:21 +0300
committerMichael Widenius <monty@askmonty.org>2012-03-28 13:22:21 +0300
commit74b064933267f58b9201c46eb67454237d7664d3 (patch)
tree0edbcdc70f9ca702a1e95782f8f20472ff6849a5 /storage/archive
parentd1f311799988266159310afce3cf19eaf58a1fa5 (diff)
downloadmariadb-git-74b064933267f58b9201c46eb67454237d7664d3.tar.gz
Fixed lp:944422 "mysql_upgrade destroys Maria tables?"
The issue was that check/optimize/anaylze did not zerofill the table before they started to work on it. Added one more element to not often used function handler::auto_repair() to allow handler to decide when to auto repair. mysql-test/suite/maria/r/maria-autozerofill.result: Test case for lp:944422 mysql-test/suite/maria/t/maria-autozerofill.test: Test case for lp:944422 sql/ha_partition.cc: Added argument to auto_repair() sql/ha_partition.h: Added argument to auto_repair() sql/handler.h: Added argument to auto_repair() sql/table.cc: Let auto_repair() decide which errors to trigger auto-repair storage/archive/ha_archive.h: Added argument to auto_repair() storage/csv/ha_tina.h: Added argument to auto_repair() storage/maria/ha_maria.cc: Give better error & warning messages for auto-repaired tables. storage/maria/ha_maria.h: Added argument to auto_repair() Always auto-repair in case of moved table. storage/maria/ma_open.c: Remove special handling of HA_ERR_OLD_FILE (this is now handled in auto_repair()) storage/myisam/ha_myisam.h: Added argument to auto_repair()
Diffstat (limited to 'storage/archive')
-rw-r--r--storage/archive/ha_archive.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/storage/archive/ha_archive.h b/storage/archive/ha_archive.h
index 653a13b242d..6f0c0b529fb 100644
--- a/storage/archive/ha_archive.h
+++ b/storage/archive/ha_archive.h
@@ -125,7 +125,9 @@ public:
int free_share();
int init_archive_writer();
int init_archive_reader();
- bool auto_repair() const { return 1; } // For the moment we just do this
+ // Always try auto_repair in case of HA_ERR_CRASHED_ON_USAGE
+ bool auto_repair(int error) const
+ { return error == HA_ERR_CRASHED_ON_USAGE; }
int read_data_header(azio_stream *file_to_read);
void position(const uchar *record);
int info(uint);