Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
bb6cc525
Commit
bb6cc525
authored
Mar 28, 2012
by
Michael Widenius
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge
parents
6131d708
3bc932ec
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
93 additions
and
15 deletions
+93
-15
mysql-test/suite/maria/r/maria-autozerofill.result
mysql-test/suite/maria/r/maria-autozerofill.result
+27
-2
mysql-test/suite/maria/t/maria-autozerofill.test
mysql-test/suite/maria/t/maria-autozerofill.test
+19
-1
sql/ha_partition.cc
sql/ha_partition.cc
+2
-2
sql/ha_partition.h
sql/ha_partition.h
+1
-1
sql/handler.h
sql/handler.h
+1
-1
sql/table.cc
sql/table.cc
+1
-2
storage/archive/ha_archive.h
storage/archive/ha_archive.h
+3
-1
storage/csv/ha_tina.h
storage/csv/ha_tina.h
+2
-0
storage/maria/ha_maria.cc
storage/maria/ha_maria.cc
+24
-0
storage/maria/ha_maria.h
storage/maria/ha_maria.h
+8
-2
storage/maria/ma_open.c
storage/maria/ma_open.c
+0
-2
storage/myisam/ha_myisam.h
storage/myisam/ha_myisam.h
+5
-1
No files found.
mysql-test/suite/maria/r/maria-autozerofill.result
View file @
bb6cc525
...
...
@@ -4,17 +4,42 @@ create database mysqltest;
use mysqltest;
create table t1(a int) engine=aria;
insert into t1 values(1);
flush table t1;
create table t2 (a int) engine=aria;
INSERT INTO t2 VALUES (1),(2);
create table t3 (a int) engine=aria;
INSERT INTO t3 VALUES (1),(2);
create table t4 (a int) engine=aria;
INSERT INTO t4 VALUES (1),(2);
flush tables;
create_rename_lsn has non-magic value
* shut down mysqld, removed logs, restarted it
select * from t1;
a
1
Warnings:
Error 1194 t1' is marked as crashed and should be repaired
Note 1194 Zerofilling moved table ./mysqltest/t1
flush table t1;
Status: changed,sorted index pages,zerofilled
insert into t1 values(2);
flush table t1;
create_rename_lsn has non-magic value
check table t2;
Table Op Msg_type Msg_text
mysqltest.t2 check error Table is from another system and must be zerofilled or repaired to be usable on this system
mysqltest.t2 check error Corrupt
check table t2;
Table Op Msg_type Msg_text
mysqltest.t2 check error Table is from another system and must be zerofilled or repaired to be usable on this system
mysqltest.t2 check error Corrupt
repair table t2;
Table Op Msg_type Msg_text
mysqltest.t2 repair status OK
optimize table t3;
Table Op Msg_type Msg_text
mysqltest.t3 optimize Note Zerofilling moved table ./mysqltest/t3
mysqltest.t3 optimize status OK
analyze table t4;
Table Op Msg_type Msg_text
mysqltest.t4 analyze Note Zerofilling moved table ./mysqltest/t4
mysqltest.t4 analyze status OK
drop database mysqltest;
mysql-test/suite/maria/t/maria-autozerofill.test
View file @
bb6cc525
...
...
@@ -22,9 +22,17 @@ connection default;
use
mysqltest
;
--
enable_reconnect
# Create some tables for future tests
create
table
t1
(
a
int
)
engine
=
aria
;
insert
into
t1
values
(
1
);
flush
table
t1
;
create
table
t2
(
a
int
)
engine
=
aria
;
INSERT
INTO
t2
VALUES
(
1
),(
2
);
create
table
t3
(
a
int
)
engine
=
aria
;
INSERT
INTO
t3
VALUES
(
1
),(
2
);
create
table
t4
(
a
int
)
engine
=
aria
;
INSERT
INTO
t4
VALUES
(
1
),(
2
);
flush
tables
;
# Check that table is not zerofilled, not movable
let
$MYSQLD_DATADIR
=
`select @@datadir`
;
--
exec
$MARIA_CHK
-
dv
$MYSQLD_DATADIR
/
mysqltest
/
t1
>
$MYSQLTEST_VARDIR
/
tmp
/
ariachk
.
txt
...
...
@@ -80,4 +88,14 @@ perl;
close
FILE
;
EOF
#
# BUG#44422 "mysql_upgrade destroys Maria tables?"
# Check repair and optimize of moved table
#
check
table
t2
;
check
table
t2
;
repair
table
t2
;
optimize
table
t3
;
analyze
table
t4
;
drop
database
mysqltest
;
sql/ha_partition.cc
View file @
bb6cc525
...
...
@@ -1218,7 +1218,7 @@ bool ha_partition::check_and_repair(THD *thd)
@retval FALSE Cannot be auto repaired
*/
bool
ha_partition
::
auto_repair
()
const
bool
ha_partition
::
auto_repair
(
int
error
)
const
{
DBUG_ENTER
(
"ha_partition::auto_repair"
);
...
...
@@ -1226,7 +1226,7 @@ bool ha_partition::auto_repair() const
As long as we only support one storage engine per table,
we can use the first partition for this function.
*/
DBUG_RETURN
(
m_file
[
0
]
->
auto_repair
());
DBUG_RETURN
(
m_file
[
0
]
->
auto_repair
(
error
));
}
...
...
sql/ha_partition.h
View file @
bb6cc525
...
...
@@ -1099,7 +1099,7 @@ public:
virtual
int
check
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
virtual
int
repair
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
virtual
bool
check_and_repair
(
THD
*
thd
);
virtual
bool
auto_repair
()
const
;
virtual
bool
auto_repair
(
int
error
)
const
;
virtual
bool
is_crashed
()
const
;
private:
...
...
sql/handler.h
View file @
bb6cc525
...
...
@@ -2257,7 +2257,7 @@ public:
virtual
uint
checksum
()
const
{
return
0
;
}
virtual
bool
is_crashed
()
const
{
return
0
;
}
virtual
bool
auto_repair
()
const
{
return
0
;
}
virtual
bool
auto_repair
(
int
error
)
const
{
return
0
;
}
void
update_global_table_stats
();
void
update_global_index_stats
();
...
...
sql/table.cc
View file @
bb6cc525
...
...
@@ -2383,8 +2383,7 @@ partititon_err:
HA_OPEN_IGNORE_IF_LOCKED
)
|
ha_open_flags
))))
{
/* Set a flag if the table is crashed and it can be auto. repaired */
share
->
crashed
=
((
ha_err
==
HA_ERR_CRASHED_ON_USAGE
)
&&
outparam
->
file
->
auto_repair
()
&&
share
->
crashed
=
(
outparam
->
file
->
auto_repair
(
ha_err
)
&&
!
(
ha_open_flags
&
HA_OPEN_FOR_REPAIR
));
switch
(
ha_err
)
...
...
storage/archive/ha_archive.h
View file @
bb6cc525
...
...
@@ -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
);
...
...
storage/csv/ha_tina.h
View file @
bb6cc525
...
...
@@ -151,6 +151,8 @@ public:
int
rnd_end
();
int
repair
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
/* This is required for SQL layer to know that we support autorepair */
bool
auto_repair
(
int
error
)
const
{
return
error
==
HA_ERR_CRASHED_ON_USAGE
;
}
bool
auto_repair
()
const
{
return
1
;
}
void
position
(
const
uchar
*
record
);
int
info
(
uint
);
...
...
storage/maria/ha_maria.cc
View file @
bb6cc525
...
...
@@ -52,6 +52,9 @@ C_MODE_END
ulong
pagecache_division_limit
,
pagecache_age_threshold
;
ulonglong
pagecache_buffer_size
;
const
char
*
zerofill_error_msg
=
"Table is from another system and must be zerofilled or repaired to be "
"usable on this system"
;
/**
As the auto-repair is initiated when opened from the SQL layer
...
...
@@ -1058,7 +1061,15 @@ int ha_maria::open(const char *name, int mode, uint test_if_locked)
}
if
(
!
(
file
=
maria_open
(
name
,
mode
,
test_if_locked
|
HA_OPEN_FROM_SQL_LAYER
)))
{
if
(
my_errno
==
HA_ERR_OLD_FILE
)
{
push_warning
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_CRASHED_ON_USAGE
,
zerofill_error_msg
);
}
return
(
my_errno
?
my_errno
:
-
1
);
}
file
->
s
->
chst_invalidator
=
query_cache_invalidate_by_MyISAM_filename_ref
;
/* Set external_ref, mainly for temporary tables */
...
...
@@ -1172,6 +1183,14 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
return
HA_ADMIN_ALREADY_DONE
;
maria_chk_init_for_check
(
&
param
,
file
);
if
((
file
->
s
->
state
.
changed
&
(
STATE_CRASHED_FLAGS
|
STATE_MOVED
))
==
STATE_MOVED
)
{
_ma_check_print_error
(
&
param
,
zerofill_error_msg
);
return
HA_ADMIN_CORRUPT
;
}
old_proc_info
=
thd_proc_info
(
thd
,
"Checking status"
);
thd_progress_init
(
thd
,
3
);
(
void
)
maria_chk_status
(
&
param
,
file
);
// Not fatal
...
...
@@ -2166,6 +2185,11 @@ bool ha_maria::check_and_repair(THD *thd)
if
((
file
->
s
->
state
.
changed
&
(
STATE_CRASHED_FLAGS
|
STATE_MOVED
))
==
STATE_MOVED
)
{
/* Remove error about crashed table */
mysql_reset_errors
(
thd
,
true
);
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_CRASHED_ON_USAGE
,
"Zerofilling moved table %s"
,
table
->
s
->
path
.
str
);
sql_print_information
(
"Zerofilling moved table: '%s'"
,
table
->
s
->
path
.
str
);
if
(
!
(
error
=
zerofill
(
thd
,
&
check_opt
)))
...
...
storage/maria/ha_maria.h
View file @
bb6cc525
...
...
@@ -151,8 +151,14 @@ public:
bool
check_and_repair
(
THD
*
thd
);
bool
is_crashed
()
const
;
bool
is_changed
()
const
;
bool
auto_repair
()
const
{
return
test
(
maria_recover_options
&
HA_RECOVER_ANY
);
}
bool
auto_repair
(
int
error
)
const
{
/* Always auto-repair moved tables (error == HA_ERR_OLD_FILE) */
return
((
test
(
maria_recover_options
&
HA_RECOVER_ANY
)
&&
error
==
HA_ERR_CRASHED_ON_USAGE
)
||
error
==
HA_ERR_OLD_FILE
);
}
int
optimize
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
int
restore
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
int
backup
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
...
...
storage/maria/ma_open.c
View file @
bb6cc525
...
...
@@ -1006,8 +1006,6 @@ err:
tmp_name
.
length
=
strlen
(
name
);
_ma_report_error
(
save_errno
,
&
tmp_name
);
}
if
(
save_errno
==
HA_ERR_OLD_FILE
)
/* uuid is different ? */
save_errno
=
HA_ERR_CRASHED_ON_USAGE
;
/* the code to trigger auto-repair */
switch
(
errpos
)
{
case
5
:
if
(
data_file
>=
0
)
...
...
storage/myisam/ha_myisam.h
View file @
bb6cc525
...
...
@@ -135,7 +135,11 @@ class ha_myisam: public handler
int
repair
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
bool
check_and_repair
(
THD
*
thd
);
bool
is_crashed
()
const
;
bool
auto_repair
()
const
{
return
myisam_recover_options
!=
0
;
}
bool
auto_repair
(
int
error
)
const
{
return
(
myisam_recover_options
!=
0
&&
error
==
HA_ERR_CRASHED_ON_USAGE
);
}
int
optimize
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
int
restore
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
int
backup
(
THD
*
thd
,
HA_CHECK_OPT
*
check_opt
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment