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
b65dbb61
Commit
b65dbb61
authored
Nov 21, 2000
by
monty@donna.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed problem with auto-repair of MyISAM tables
Fixed bug in ISAM and MyISAM when updating from multiple-processes
parent
b7d81c03
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
60 additions
and
38 deletions
+60
-38
Docs/manual.texi
Docs/manual.texi
+18
-16
client/mysqladmin.c
client/mysqladmin.c
+1
-1
extra/perror.c
extra/perror.c
+1
-0
include/my_base.h
include/my_base.h
+1
-0
isam/rnext.c
isam/rnext.c
+3
-2
isam/rprev.c
isam/rprev.c
+3
-2
libmysql/libmysql.c
libmysql/libmysql.c
+5
-4
myisam/mi_locking.c
myisam/mi_locking.c
+1
-0
myisam/mi_open.c
myisam/mi_open.c
+3
-2
myisam/mi_rnext.c
myisam/mi_rnext.c
+5
-2
myisam/mi_rprev.c
myisam/mi_rprev.c
+3
-2
myisam/myisamchk.c
myisam/myisamchk.c
+8
-1
sql/sql_base.cc
sql/sql_base.cc
+6
-5
sql/table.cc
sql/table.cc
+2
-1
No files found.
Docs/manual.texi
View file @
b65dbb61
...
@@ -28015,10 +28015,10 @@ Give a variable a value. @code{--help} lists variables.
...
@@ -28015,10 +28015,10 @@ Give a variable a value. @code{--help} lists variables.
Only update the default database. This is useful for skipping updates to
Only update the default database. This is useful for skipping updates to
other database in the update log.
other database in the update log.
@cindex pager option
@cindex pager option
@item
--pager[=...]
@item
@code{--pager[=...]}
Output type. Default is your
ENV variable PAGER. Valid pagers are less,
Output type. Default is your
@code{ENV} variable @code{PAGER}. Valid
more, cat [> filename], etc. See interactive help (\h) also. This
pagers are less, more, cat [> filename], etc. See interactive help (\h)
option does not work in batch mode. Pager works only in UNIX.
also. This
option does not work in batch mode. Pager works only in UNIX.
@cindex password option
@cindex password option
@item -p[password], --password[=...]
@item -p[password], --password[=...]
Password to use when connecting to server. If password is not given on
Password to use when connecting to server. If password is not given on
...
@@ -28148,12 +28148,11 @@ mysql> select * from mails where length(txt) < 300 limit 300,1\G
...
@@ -28148,12 +28148,11 @@ mysql> select * from mails where length(txt) < 300 limit 300,1\G
msg_nro: 3068
msg_nro: 3068
date: 2000-03-01 23:29:50
date: 2000-03-01 23:29:50
time_zone: +0200
time_zone: +0200
mail_from: Michael Widenius <monty@monty.pp.sci.fi>
mail_from: Monty
reply: monty@mysql.com
reply: monty@@no.spam.com
mail_to: "Thimble Smith" <tim@mysql.com>
mail_to: "Thimble Smith" <tim@@no.spam.com>
cc: mysql_all@mysql.com
sbj: UTF-8
sbj: UTF-8
txt: >>>>> "Thimble" == Thimble Smith
<tim@mysql.com>
writes:
txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8
Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8
Thimble> or Unicode? Otherwise I'll put this on my TODO list and see what
Thimble> or Unicode? Otherwise I'll put this on my TODO list and see what
...
@@ -28166,8 +28165,6 @@ Monty
...
@@ -28166,8 +28165,6 @@ Monty
file: inbox-jani-1
file: inbox-jani-1
hash: 190402944
hash: 190402944
1 row in set (0.09 sec)
1 row in set (0.09 sec)
mysql>
@end example
@end example
For logging, one can use the @code{tee} option. The @code{tee} can be
For logging, one can use the @code{tee} option. The @code{tee} can be
...
@@ -38808,11 +38805,16 @@ though, so Version 3.23 is not released as a stable version yet.
...
@@ -38808,11 +38805,16 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.28
@appendixsubsec Changes in release 3.23.28
@itemize @bullet
@itemize @bullet
@item
@item
Fixed a major performance bug in the table locking code when you
Fixed crash when automatic repair of @code{MyISAM} table failed.
constantly had a LOT of @code{SELECT} running on a table on which you
@item
also did a lot of @code{UPDATE} and @code{INSERT}. The symptom was that
Fixed a major performance bug in the table locking code when one
the @code{UPDATE} and @code{INSERT} queries was locked a long time
constantly had a LOT of @code{SELECT}, @code{UPDATE} and @code{INSERT}
while @code{SELECT} statements where executed without locks.
statements running. The symptom was that the @code{UPDATE} and
@code{INSERT} queries was locked a long time while new @code{SELECT}
statements where executed without locks.
@item
When reading options_files with @code{mysql_options()} the
@code{return-found-rows} option was ignored.
@item
@item
One can now specify @code{interactive-timeout} in the option file that
One can now specify @code{interactive-timeout} in the option file that
is read by @code{mysql_options()}. This makes it possible to force
is read by @code{mysql_options()}. This makes it possible to force
client/mysqladmin.c
View file @
b65dbb61
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
#include <my_pthread.h>
/* because of signal() */
#include <my_pthread.h>
/* because of signal() */
#endif
#endif
#define ADMIN_VERSION "8.1
1
"
#define ADMIN_VERSION "8.1
2
"
#define MAX_MYSQL_VAR 64
#define MAX_MYSQL_VAR 64
#define MAX_TIME_TO_WAIT 3600
/* Wait for shutdown */
#define MAX_TIME_TO_WAIT 3600
/* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
#define MAX_TRUNC_LENGTH 3
...
...
extra/perror.c
View file @
b65dbb61
...
@@ -66,6 +66,7 @@ static HA_ERRORS ha_errlist[]=
...
@@ -66,6 +66,7 @@ static HA_ERRORS ha_errlist[]=
{
142
,
"Unknown character set used"
},
{
142
,
"Unknown character set used"
},
{
143
,
"Conflicting table definition between MERGE and mapped table"
},
{
143
,
"Conflicting table definition between MERGE and mapped table"
},
{
144
,
"Table is crashed and last repair failed"
},
{
144
,
"Table is crashed and last repair failed"
},
{
145
,
"Table was marked as crashed and should be repaired"
},
{
0
,
NullS
},
{
0
,
NullS
},
};
};
...
...
include/my_base.h
View file @
b65dbb61
...
@@ -207,6 +207,7 @@ enum ha_base_keytype {
...
@@ -207,6 +207,7 @@ enum ha_base_keytype {
#define HA_ERR_UNKNOWN_CHARSET 142
/* Can't open charset */
#define HA_ERR_UNKNOWN_CHARSET 142
/* Can't open charset */
#define HA_ERR_WRONG_TABLE_DEF 143
#define HA_ERR_WRONG_TABLE_DEF 143
#define HA_ERR_CRASHED_ON_REPAIR 144
/* Last (automatic?) repair failed */
#define HA_ERR_CRASHED_ON_REPAIR 144
/* Last (automatic?) repair failed */
#define HA_ERR_CRASHED_ON_USAGE 145
/* Table must be repaired */
/* Other constants */
/* Other constants */
...
...
isam/rnext.c
View file @
b65dbb61
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
int
nisam_rnext
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
int
nisam_rnext
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
{
int
error
;
int
error
,
changed
;
uint
flag
;
uint
flag
;
DBUG_ENTER
(
"nisam_rnext"
);
DBUG_ENTER
(
"nisam_rnext"
);
...
@@ -40,10 +40,11 @@ int nisam_rnext(N_INFO *info, byte *buf, int inx)
...
@@ -40,10 +40,11 @@ int nisam_rnext(N_INFO *info, byte *buf, int inx)
#ifndef NO_LOCKING
#ifndef NO_LOCKING
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
#endif
#endif
changed
=
_nisam_test_if_changed
(
info
);
if
(
!
flag
)
if
(
!
flag
)
error
=
_nisam_search_first
(
info
,
info
->
s
->
keyinfo
+
inx
,
error
=
_nisam_search_first
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
s
->
state
.
key_root
[
inx
]);
info
->
s
->
state
.
key_root
[
inx
]);
else
if
(
_nisam_test_if_changed
(
info
)
==
0
)
else
if
(
!
changed
)
error
=
_nisam_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
flag
,
error
=
_nisam_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
flag
,
info
->
s
->
state
.
key_root
[
inx
]);
info
->
s
->
state
.
key_root
[
inx
]);
else
else
...
...
isam/rprev.c
View file @
b65dbb61
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
int
nisam_rprev
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
int
nisam_rprev
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
{
int
error
;
int
error
,
changed
;
register
uint
flag
;
register
uint
flag
;
DBUG_ENTER
(
"nisam_rprev"
);
DBUG_ENTER
(
"nisam_rprev"
);
...
@@ -40,9 +40,10 @@ int nisam_rprev(N_INFO *info, byte *buf, int inx)
...
@@ -40,9 +40,10 @@ int nisam_rprev(N_INFO *info, byte *buf, int inx)
#ifndef NO_LOCKING
#ifndef NO_LOCKING
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
#endif
#endif
changed
=
_nisam_test_if_changed
(
info
);
if
(
!
flag
)
if
(
!
flag
)
error
=
_nisam_search_last
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
s
->
state
.
key_root
[
inx
]);
error
=
_nisam_search_last
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
s
->
state
.
key_root
[
inx
]);
else
if
(
_nisam_test_if_changed
(
info
)
==
0
)
else
if
(
!
changed
)
error
=
_nisam_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
flag
,
error
=
_nisam_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
flag
,
info
->
s
->
state
.
key_root
[
inx
]);
info
->
s
->
state
.
key_root
[
inx
]);
else
else
...
...
libmysql/libmysql.c
View file @
b65dbb61
...
@@ -1450,10 +1450,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
...
@@ -1450,10 +1450,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
mysql
->
unix_socket
=
0
;
mysql
->
unix_socket
=
0
;
strmov
(
mysql
->
server_version
,(
char
*
)
net
->
read_pos
+
1
);
strmov
(
mysql
->
server_version
,(
char
*
)
net
->
read_pos
+
1
);
mysql
->
port
=
port
;
mysql
->
port
=
port
;
mysql
->
client_flag
=
client_flag
|
mysql
->
options
.
client_flag
;
client_flag
|=
mysql
->
options
.
client_flag
;
DBUG_PRINT
(
"info"
,(
"Server version = '%s' capabilites: %ld status: %d"
,
mysql
->
server_version
,
mysql
->
server_capabilities
,
mysql
->
server_status
));
/* Send client information for access check */
/* Send client information for access check */
client_flag
|=
CLIENT_CAPABILITIES
;
client_flag
|=
CLIENT_CAPABILITIES
;
...
@@ -1510,6 +1507,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
...
@@ -1510,6 +1507,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
}
}
#endif
/* HAVE_OPENSSL */
#endif
/* HAVE_OPENSSL */
DBUG_PRINT
(
"info"
,(
"Server version = '%s' capabilites: %ld status: %d client_flag: %d"
,
mysql
->
server_version
,
mysql
->
server_capabilities
,
mysql
->
server_status
,
client_flag
));
int3store
(
buff
+
2
,
max_allowed_packet
);
int3store
(
buff
+
2
,
max_allowed_packet
);
if
(
user
&&
user
[
0
])
if
(
user
&&
user
[
0
])
strmake
(
buff
+
5
,
user
,
32
);
/* Max user name */
strmake
(
buff
+
5
,
user
,
32
);
/* Max user name */
...
...
myisam/mi_locking.c
View file @
b65dbb61
...
@@ -382,6 +382,7 @@ int _mi_test_if_changed(register MI_INFO *info)
...
@@ -382,6 +382,7 @@ int _mi_test_if_changed(register MI_INFO *info)
share
->
state
.
unique
!=
info
->
last_unique
||
share
->
state
.
unique
!=
info
->
last_unique
||
share
->
state
.
update_count
!=
info
->
last_loop
)
share
->
state
.
update_count
!=
info
->
last_loop
)
{
/* Keyfile has changed */
{
/* Keyfile has changed */
DBUG_PRINT
(
"info"
,(
"index file changed"
));
if
(
share
->
state
.
process
!=
share
->
this_process
)
if
(
share
->
state
.
process
!=
share
->
this_process
)
VOID
(
flush_key_blocks
(
share
->
kfile
,
FLUSH_RELEASE
));
VOID
(
flush_key_blocks
(
share
->
kfile
,
FLUSH_RELEASE
));
share
->
last_process
=
share
->
state
.
process
;
share
->
last_process
=
share
->
state
.
process
;
...
...
myisam/mi_open.c
View file @
b65dbb61
...
@@ -182,7 +182,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
...
@@ -182,7 +182,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
{
{
DBUG_PRINT
(
"error"
,(
"Table is marked as crashed"
));
DBUG_PRINT
(
"error"
,(
"Table is marked as crashed"
));
my_errno
=
((
share
->
state
.
changed
&
STATE_CRASHED_ON_REPAIR
)
?
my_errno
=
((
share
->
state
.
changed
&
STATE_CRASHED_ON_REPAIR
)
?
HA_ERR_CRASHED_ON_REPAIR
:
HA_ERR_CRASHED
);
HA_ERR_CRASHED_ON_REPAIR
:
HA_ERR_CRASHED
_ON_USAGE
);
goto
err
;
goto
err
;
}
}
/* Correct max_file_length based on length of sizeof_t */
/* Correct max_file_length based on length of sizeof_t */
...
@@ -732,7 +732,8 @@ char *mi_state_info_read(char *ptr, MI_STATE_INFO *state)
...
@@ -732,7 +732,8 @@ char *mi_state_info_read(char *ptr, MI_STATE_INFO *state)
state
->
process
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
process
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
unique
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
unique
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
status
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
status
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
ptr
+=
4
;
/* extra */
state
->
update_count
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
for
(
i
=
0
;
i
<
keys
;
i
++
)
for
(
i
=
0
;
i
<
keys
;
i
++
)
{
{
state
->
key_root
[
i
]
=
mi_sizekorr
(
ptr
);
ptr
+=
8
;
state
->
key_root
[
i
]
=
mi_sizekorr
(
ptr
);
ptr
+=
8
;
...
...
myisam/mi_rnext.c
View file @
b65dbb61
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
int
mi_rnext
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
int
mi_rnext
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
{
int
error
;
int
error
,
changed
;
uint
flag
;
uint
flag
;
DBUG_ENTER
(
"mi_rnext"
);
DBUG_ENTER
(
"mi_rnext"
);
...
@@ -39,10 +39,13 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx)
...
@@ -39,10 +39,13 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx)
DBUG_RETURN
(
my_errno
);
DBUG_RETURN
(
my_errno
);
if
(
info
->
s
->
concurrent_insert
)
if
(
info
->
s
->
concurrent_insert
)
rw_rdlock
(
&
info
->
s
->
key_root_lock
[
inx
]);
rw_rdlock
(
&
info
->
s
->
key_root_lock
[
inx
]);
changed
=
_mi_test_if_changed
(
info
);
if
(
!
flag
)
if
(
!
flag
)
{
error
=
_mi_search_first
(
info
,
info
->
s
->
keyinfo
+
inx
,
error
=
_mi_search_first
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
s
->
state
.
key_root
[
inx
]);
info
->
s
->
state
.
key_root
[
inx
]);
else
if
(
_mi_test_if_changed
(
info
)
==
0
)
}
else
if
(
!
changed
)
error
=
_mi_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
error
=
_mi_search_next
(
info
,
info
->
s
->
keyinfo
+
inx
,
info
->
lastkey
,
info
->
lastkey_length
,
flag
,
info
->
lastkey_length
,
flag
,
info
->
s
->
state
.
key_root
[
inx
]);
info
->
s
->
state
.
key_root
[
inx
]);
...
...
myisam/mi_rprev.c
View file @
b65dbb61
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
int
mi_rprev
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
int
mi_rprev
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
{
int
error
;
int
error
,
changed
;
register
uint
flag
;
register
uint
flag
;
MYISAM_SHARE
*
share
=
info
->
s
;
MYISAM_SHARE
*
share
=
info
->
s
;
DBUG_ENTER
(
"mi_rprev"
);
DBUG_ENTER
(
"mi_rprev"
);
...
@@ -38,12 +38,13 @@ int mi_rprev(MI_INFO *info, byte *buf, int inx)
...
@@ -38,12 +38,13 @@ int mi_rprev(MI_INFO *info, byte *buf, int inx)
if
(
_mi_readinfo
(
info
,
F_RDLCK
,
1
))
if
(
_mi_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
my_errno
);
DBUG_RETURN
(
my_errno
);
changed
=
_mi_test_if_changed
(
info
);
if
(
share
->
concurrent_insert
)
if
(
share
->
concurrent_insert
)
rw_rdlock
(
&
share
->
key_root_lock
[
inx
]);
rw_rdlock
(
&
share
->
key_root_lock
[
inx
]);
if
(
!
flag
)
if
(
!
flag
)
error
=
_mi_search_last
(
info
,
share
->
keyinfo
+
inx
,
error
=
_mi_search_last
(
info
,
share
->
keyinfo
+
inx
,
share
->
state
.
key_root
[
inx
]);
share
->
state
.
key_root
[
inx
]);
else
if
(
_mi_test_if_changed
(
info
)
==
0
)
else
if
(
!
changed
)
error
=
_mi_search_next
(
info
,
share
->
keyinfo
+
inx
,
info
->
lastkey
,
error
=
_mi_search_next
(
info
,
share
->
keyinfo
+
inx
,
info
->
lastkey
,
info
->
lastkey_length
,
flag
,
info
->
lastkey_length
,
flag
,
share
->
state
.
key_root
[
inx
]);
share
->
state
.
key_root
[
inx
]);
...
...
myisam/myisamchk.c
View file @
b65dbb61
...
@@ -196,7 +196,7 @@ static struct option long_options[] =
...
@@ -196,7 +196,7 @@ static struct option long_options[] =
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
printf
(
"%s Ver 1.3
6
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
printf
(
"%s Ver 1.3
7
for %s at %s
\n
"
,
my_progname
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
MACHINE_TYPE
);
}
}
...
@@ -502,8 +502,15 @@ static int myisamchk(MI_CHECK *param, my_string filename)
...
@@ -502,8 +502,15 @@ static int myisamchk(MI_CHECK *param, my_string filename)
param
->
error_printed
=
1
;
param
->
error_printed
=
1
;
switch
(
my_errno
)
{
switch
(
my_errno
)
{
case
HA_ERR_CRASHED
:
case
HA_ERR_CRASHED
:
case
HA_ERR_WRONG_TABLE_DEF
:
mi_check_print_error
(
param
,
"'%s' is not a MyISAM-table"
,
filename
);
mi_check_print_error
(
param
,
"'%s' is not a MyISAM-table"
,
filename
);
break
;
break
;
case
HA_ERR_CRASHED_ON_USAGE
:
mi_check_print_error
(
param
,
"'%s' is marked as crashed"
,
filename
);
break
;
case
HA_ERR_CRASHED_ON_REPAIR
:
mi_check_print_error
(
param
,
"'%s' is marked as crashed after last repair"
,
filename
);
break
;
case
HA_ERR_OLD_FILE
:
case
HA_ERR_OLD_FILE
:
mi_check_print_error
(
param
,
"'%s' is a old type of MyISAM-table"
,
filename
);
mi_check_print_error
(
param
,
"'%s' is a old type of MyISAM-table"
,
filename
);
break
;
break
;
...
...
sql/sql_base.cc
View file @
b65dbb61
...
@@ -1162,25 +1162,26 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
...
@@ -1162,25 +1162,26 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
HA_TRY_READ_ONLY
),
HA_TRY_READ_ONLY
),
READ_KEYINFO
|
COMPUTE_TYPES
|
EXTRA_RECORD
,
READ_KEYINFO
|
COMPUTE_TYPES
|
EXTRA_RECORD
,
ha_open_options
|
HA_OPEN_FOR_REPAIR
,
ha_open_options
|
HA_OPEN_FOR_REPAIR
,
entry
)
||
entry
)
||
!
entry
->
file
||
(
entry
->
file
->
is_crashed
()
&&
entry
->
file
->
check_and_repair
(
thd
)))
(
entry
->
file
->
is_crashed
()
&&
entry
->
file
->
check_and_repair
(
thd
)))
{
{
/* Give right error message */
/* Give right error message */
thd
->
net
.
last_error
[
0
]
=
0
;
thd
->
net
.
last_error
[
0
]
=
0
;
thd
->
net
.
last_errno
=
0
;
thd
->
net
.
last_errno
=
0
;
entry
->
file
->
print_error
(
HA_ERR_CRASHED
,
MYF
(
0
)
);
my_error
(
ER_NOT_KEYFILE
,
MYF
(
0
),
name
,
my_errno
);
sql_print_error
(
"Error: Couldn't repair table: %s.%s"
,
db
,
name
);
sql_print_error
(
"Error: Couldn't repair table: %s.%s"
,
db
,
name
);
closefrm
(
entry
);
if
(
entry
->
file
)
closefrm
(
entry
);
error
=
1
;
error
=
1
;
}
}
else
else
{
{
thd
->
net
.
last_error
[
0
]
=
0
;
// Clear error message
thd
->
net
.
last_error
[
0
]
=
0
;
// Clear error message
thd
->
net
.
last_errno
=
0
;
thd
->
net
.
last_errno
=
0
;
}
}
unlock_table_name
(
thd
,
&
table_list
);
if
(
locked
)
if
(
locked
)
pthread_mutex_lock
(
&
LOCK_open
);
// Get back original lock
pthread_mutex_lock
(
&
LOCK_open
);
// Get back original lock
unlock_table_name
(
thd
,
&
table_list
);
if
(
error
)
if
(
error
)
goto
err
;
goto
err
;
}
}
...
...
sql/table.cc
View file @
b65dbb61
...
@@ -542,7 +542,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
...
@@ -542,7 +542,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
HA_OPEN_IGNORE_IF_LOCKED
)
|
ha_open_flags
))))
HA_OPEN_IGNORE_IF_LOCKED
)
|
ha_open_flags
))))
{
{
/* Set a flag if the table is crashed and it can be auto. repaired */
/* Set a flag if the table is crashed and it can be auto. repaired */
outparam
->
crashed
=
(
err
==
HA_ERR_CRASHED
&&
outparam
->
crashed
=
(
err
==
HA_ERR_CRASHED
_ON_USAGE
&&
outparam
->
file
->
auto_repair
()
&&
outparam
->
file
->
auto_repair
()
&&
!
(
ha_open_flags
&
HA_OPEN_FOR_REPAIR
));
!
(
ha_open_flags
&
HA_OPEN_FOR_REPAIR
));
goto
err_not_open
;
/* purecov: inspected */
goto
err_not_open
;
/* purecov: inspected */
...
@@ -569,6 +569,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
...
@@ -569,6 +569,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
frm_error
(
error
,
outparam
,
name
,
ME_ERROR
+
ME_WAITTANG
);
frm_error
(
error
,
outparam
,
name
,
ME_ERROR
+
ME_WAITTANG
);
delete
outparam
->
file
;
delete
outparam
->
file
;
outparam
->
file
=
0
;
// For easyer errorchecking
outparam
->
file
=
0
;
// For easyer errorchecking
outparam
->
db_stat
=
0
;
free_root
(
&
outparam
->
mem_root
,
MYF
(
0
));
free_root
(
&
outparam
->
mem_root
,
MYF
(
0
));
my_free
(
outparam
->
table_name
,
MYF
(
MY_ALLOW_ZERO_PTR
));
my_free
(
outparam
->
table_name
,
MYF
(
MY_ALLOW_ZERO_PTR
));
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
...
...
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