Commit 55b096b8 authored by unknown's avatar unknown

Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-engines

into  mysql.com:/home/svoj/devel/mysql/BUG26138/mysql-5.0-engines

parents fe8c67ef 0da1a0cd
...@@ -12355,3 +12355,12 @@ auto fld1 companynr fld3 fld4 fld5 ...@@ -12355,3 +12355,12 @@ auto fld1 companynr fld3 fld4 fld5
4 011403 37 intercepted audiology tinily 4 011403 37 intercepted audiology tinily
4 011403 37 intercepted audiology tinily 4 011403 37 intercepted audiology tinily
drop table t1, t2, t4; drop table t1, t2, t4;
create table t1 (i int) engine=archive;
insert into t1 values (1);
repair table t1 use_frm;
Table Op Msg_type Msg_text
test.t1 repair status OK
select * from t1;
i
1
drop table t1;
...@@ -1364,3 +1364,13 @@ SELECT * from t2; ...@@ -1364,3 +1364,13 @@ SELECT * from t2;
drop table t1, t2, t4; drop table t1, t2, t4;
#
# BUG#26138 - REPAIR TABLE with option USE_FRM erases all records in ARCHIVE
# table
#
create table t1 (i int) engine=archive;
insert into t1 values (1);
repair table t1 use_frm;
select * from t1;
drop table t1;
...@@ -211,6 +211,12 @@ ha_example::ha_example(TABLE *table_arg) ...@@ -211,6 +211,12 @@ ha_example::ha_example(TABLE *table_arg)
If frm_error() is called then we will use this to to find out what file extentions If frm_error() is called then we will use this to to find out what file extentions
exist for the storage engine. This is also used by the default rename_table and exist for the storage engine. This is also used by the default rename_table and
delete_table method in handler.cc. delete_table method in handler.cc.
For engines that have two file name extentions (separate meta/index file
and data file), the order of elements is relevant. First element of engine
file name extentions array should be meta/index file extention. Second
element - data file extention. This order is assumed by
prepare_for_repair() when REPAIR TABLE ... USE_FRM is issued.
*/ */
static const char *ha_example_exts[] = { static const char *ha_example_exts[] = {
NullS NullS
......
...@@ -503,8 +503,8 @@ int ha_archive::init_archive_writer() ...@@ -503,8 +503,8 @@ int ha_archive::init_archive_writer()
We just implement one additional file extension. We just implement one additional file extension.
*/ */
static const char *ha_archive_exts[] = { static const char *ha_archive_exts[] = {
ARZ,
ARM, ARM,
ARZ,
NullS NullS
}; };
......
...@@ -780,6 +780,17 @@ class handler :public Sql_alloc ...@@ -780,6 +780,17 @@ class handler :public Sql_alloc
virtual void free_foreign_key_create_info(char* str) {} virtual void free_foreign_key_create_info(char* str) {}
/* The following can be called without an open handler */ /* The following can be called without an open handler */
virtual const char *table_type() const =0; virtual const char *table_type() const =0;
/*
If frm_error() is called then we will use this to find out what file
extentions exist for the storage engine. This is also used by the default
rename_table and delete_table method in handler.cc.
For engines that have two file name extentions (separate meta/index file
and data file), the order of elements is relevant. First element of engine
file name extentions array should be meta/index file extention. Second
element - data file extention. This order is assumed by
prepare_for_repair() when REPAIR TABLE ... USE_FRM is issued.
*/
virtual const char **bas_ext() const =0; virtual const char **bas_ext() const =0;
virtual ulong table_flags(void) const =0; virtual ulong table_flags(void) const =0;
virtual ulong index_flags(uint idx, uint part, bool all_parts) const =0; virtual ulong index_flags(uint idx, uint part, bool all_parts) const =0;
......
...@@ -2068,7 +2068,9 @@ static int prepare_for_repair(THD* thd, TABLE_LIST *table_list, ...@@ -2068,7 +2068,9 @@ static int prepare_for_repair(THD* thd, TABLE_LIST *table_list,
/* /*
Check if this is a table type that stores index and data separately, Check if this is a table type that stores index and data separately,
like ISAM or MyISAM like ISAM or MyISAM. We assume fixed order of engine file name
extentions array. First element of engine file name extentions array
is meta/index file extention. Second element - data file extention.
*/ */
if (!ext[0] || !ext[1]) if (!ext[0] || !ext[1])
goto end; // No data file goto end; // No data file
......
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