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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
3bc932ec
Commit
3bc932ec
authored
12 years ago
by
Michael Widenius
Browse files
Options
Browse Files
Download
Plain Diff
Merge with 5.1
parents
c88e2679
74b06493
Branches unavailable
Tags unavailable
No related merge requests found
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
92 additions
and
15 deletions
+92
-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
+23
-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 @
3bc932ec
...
...
@@ -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;
This diff is collapsed.
Click to expand it.
mysql-test/suite/maria/t/maria-autozerofill.test
View file @
3bc932ec
...
...
@@ -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
;
This diff is collapsed.
Click to expand it.
sql/ha_partition.cc
View file @
3bc932ec
...
...
@@ -1226,7 +1226,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"
);
...
...
@@ -1234,7 +1234,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
));
}
...
...
This diff is collapsed.
Click to expand it.
sql/ha_partition.h
View file @
3bc932ec
...
...
@@ -1102,7 +1102,7 @@ class ha_partition :public handler
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:
...
...
This diff is collapsed.
Click to expand it.
sql/handler.h
View file @
3bc932ec
...
...
@@ -1833,7 +1833,7 @@ class handler :public Sql_alloc
virtual
bool
low_byte_first
()
const
{
return
1
;
}
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
();
...
...
This diff is collapsed.
Click to expand it.
sql/table.cc
View file @
3bc932ec
...
...
@@ -2380,8 +2380,7 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias,
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
)
...
...
This diff is collapsed.
Click to expand it.
storage/archive/ha_archive.h
View file @
3bc932ec
...
...
@@ -125,7 +125,9 @@ class ha_archive: public handler
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
);
...
...
This diff is collapsed.
Click to expand it.
storage/csv/ha_tina.h
View file @
3bc932ec
...
...
@@ -151,6 +151,8 @@ class ha_tina: public handler
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
);
...
...
This diff is collapsed.
Click to expand it.
storage/maria/ha_maria.cc
View file @
3bc932ec
...
...
@@ -53,6 +53,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
...
...
@@ -1024,7 +1027,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
;
...
...
@@ -1124,6 +1135,13 @@ 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
;
}
(
void
)
maria_chk_status
(
&
param
,
file
);
// Not fatal
error
=
maria_chk_size
(
&
param
,
file
);
if
(
!
error
)
...
...
@@ -2080,6 +2098,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
)))
...
...
This diff is collapsed.
Click to expand it.
storage/maria/ha_maria.h
View file @
3bc932ec
...
...
@@ -136,8 +136,14 @@ class ha_maria :public handler
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
);
...
...
This diff is collapsed.
Click to expand it.
storage/maria/ma_open.c
View file @
3bc932ec
...
...
@@ -987,8 +987,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
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
)
...
...
This diff is collapsed.
Click to expand it.
storage/myisam/ha_myisam.h
View file @
3bc932ec
...
...
@@ -127,7 +127,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
);
...
...
This diff is collapsed.
Click to expand it.
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