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.
Only update the default database. This is useful for skipping updates to
other database in the update log.
@cindex pager option
@item
--pager[=...]
Output type. Default is your
ENV variable PAGER. Valid pagers are less,
more, cat [> filename], etc. See interactive help (\h) also. This
option does not work in batch mode. Pager works only in UNIX.
@item
@code{--pager[=...]}
Output type. Default is your
@code{ENV} variable @code{PAGER}. Valid
pagers are less, more, cat [> filename], etc. See interactive help (\h)
also. This
option does not work in batch mode. Pager works only in UNIX.
@cindex password option
@item -p[password], --password[=...]
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
msg_nro: 3068
date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Michael Widenius <monty@monty.pp.sci.fi>
reply: monty@mysql.com
mail_to: "Thimble Smith" <tim@mysql.com>
cc: mysql_all@mysql.com
mail_from: Monty
reply: monty@@no.spam.com
mail_to: "Thimble Smith" <tim@@no.spam.com>
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> or Unicode? Otherwise I'll put this on my TODO list and see what
...
...
@@ -28166,8 +28165,6 @@ Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)
mysql>
@end example
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.
@appendixsubsec Changes in release 3.23.28
@itemize @bullet
@item
Fixed a major performance bug in the table locking code when you
constantly had a LOT of @code{SELECT} running on a table on which you
also did a lot of @code{UPDATE} and @code{INSERT}. The symptom was that
the @code{UPDATE} and @code{INSERT} queries was locked a long time
while @code{SELECT} statements where executed without locks.
Fixed crash when automatic repair of @code{MyISAM} table failed.
@item
Fixed a major performance bug in the table locking code when one
constantly had a LOT of @code{SELECT}, @code{UPDATE} and @code{INSERT}
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
One can now specify @code{interactive-timeout} in the option file that
is read by @code{mysql_options()}. This makes it possible to force
client/mysqladmin.c
View file @
b65dbb61
...
...
@@ -28,7 +28,7 @@
#include <my_pthread.h>
/* because of signal() */
#endif
#define ADMIN_VERSION "8.1
1
"
#define ADMIN_VERSION "8.1
2
"
#define MAX_MYSQL_VAR 64
#define MAX_TIME_TO_WAIT 3600
/* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
...
...
extra/perror.c
View file @
b65dbb61
...
...
@@ -66,6 +66,7 @@ static HA_ERRORS ha_errlist[]=
{
142
,
"Unknown character set used"
},
{
143
,
"Conflicting table definition between MERGE and mapped table"
},
{
144
,
"Table is crashed and last repair failed"
},
{
145
,
"Table was marked as crashed and should be repaired"
},
{
0
,
NullS
},
};
...
...
include/my_base.h
View file @
b65dbb61
...
...
@@ -207,6 +207,7 @@ enum ha_base_keytype {
#define HA_ERR_UNKNOWN_CHARSET 142
/* Can't open charset */
#define HA_ERR_WRONG_TABLE_DEF 143
#define HA_ERR_CRASHED_ON_REPAIR 144
/* Last (automatic?) repair failed */
#define HA_ERR_CRASHED_ON_USAGE 145
/* Table must be repaired */
/* Other constants */
...
...
isam/rnext.c
View file @
b65dbb61
...
...
@@ -27,7 +27,7 @@
int
nisam_rnext
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
int
error
;
int
error
,
changed
;
uint
flag
;
DBUG_ENTER
(
"nisam_rnext"
);
...
...
@@ -40,10 +40,11 @@ int nisam_rnext(N_INFO *info, byte *buf, int inx)
#ifndef NO_LOCKING
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
#endif
changed
=
_nisam_test_if_changed
(
info
);
if
(
!
flag
)
error
=
_nisam_search_first
(
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
,
info
->
s
->
state
.
key_root
[
inx
]);
else
...
...
isam/rprev.c
View file @
b65dbb61
...
...
@@ -27,7 +27,7 @@
int
nisam_rprev
(
N_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
int
error
;
int
error
,
changed
;
register
uint
flag
;
DBUG_ENTER
(
"nisam_rprev"
);
...
...
@@ -40,9 +40,10 @@ int nisam_rprev(N_INFO *info, byte *buf, int inx)
#ifndef NO_LOCKING
if
(
_nisam_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
-
1
);
#endif
changed
=
_nisam_test_if_changed
(
info
);
if
(
!
flag
)
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
,
info
->
s
->
state
.
key_root
[
inx
]);
else
...
...
libmysql/libmysql.c
View file @
b65dbb61
...
...
@@ -1450,10 +1450,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
mysql
->
unix_socket
=
0
;
strmov
(
mysql
->
server_version
,(
char
*
)
net
->
read_pos
+
1
);
mysql
->
port
=
port
;
mysql
->
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
));
client_flag
|=
mysql
->
options
.
client_flag
;
/* Send client information for access check */
client_flag
|=
CLIENT_CAPABILITIES
;
...
...
@@ -1510,6 +1507,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
}
#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
);
if
(
user
&&
user
[
0
])
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)
share
->
state
.
unique
!=
info
->
last_unique
||
share
->
state
.
update_count
!=
info
->
last_loop
)
{
/* Keyfile has changed */
DBUG_PRINT
(
"info"
,(
"index file changed"
));
if
(
share
->
state
.
process
!=
share
->
this_process
)
VOID
(
flush_key_blocks
(
share
->
kfile
,
FLUSH_RELEASE
));
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)
{
DBUG_PRINT
(
"error"
,(
"Table is marked as crashed"
));
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
;
}
/* 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)
state
->
process
=
mi_uint4korr
(
ptr
);
ptr
+=
4
;
state
->
unique
=
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
++
)
{
state
->
key_root
[
i
]
=
mi_sizekorr
(
ptr
);
ptr
+=
8
;
...
...
myisam/mi_rnext.c
View file @
b65dbb61
...
...
@@ -25,7 +25,7 @@
int
mi_rnext
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
int
error
;
int
error
,
changed
;
uint
flag
;
DBUG_ENTER
(
"mi_rnext"
);
...
...
@@ -39,10 +39,13 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx)
DBUG_RETURN
(
my_errno
);
if
(
info
->
s
->
concurrent_insert
)
rw_rdlock
(
&
info
->
s
->
key_root_lock
[
inx
]);
changed
=
_mi_test_if_changed
(
info
);
if
(
!
flag
)
{
error
=
_mi_search_first
(
info
,
info
->
s
->
keyinfo
+
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
,
info
->
lastkey_length
,
flag
,
info
->
s
->
state
.
key_root
[
inx
]);
...
...
myisam/mi_rprev.c
View file @
b65dbb61
...
...
@@ -25,7 +25,7 @@
int
mi_rprev
(
MI_INFO
*
info
,
byte
*
buf
,
int
inx
)
{
int
error
;
int
error
,
changed
;
register
uint
flag
;
MYISAM_SHARE
*
share
=
info
->
s
;
DBUG_ENTER
(
"mi_rprev"
);
...
...
@@ -38,12 +38,13 @@ int mi_rprev(MI_INFO *info, byte *buf, int inx)
if
(
_mi_readinfo
(
info
,
F_RDLCK
,
1
))
DBUG_RETURN
(
my_errno
);
changed
=
_mi_test_if_changed
(
info
);
if
(
share
->
concurrent_insert
)
rw_rdlock
(
&
share
->
key_root_lock
[
inx
]);
if
(
!
flag
)
error
=
_mi_search_last
(
info
,
share
->
keyinfo
+
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
,
info
->
lastkey_length
,
flag
,
share
->
state
.
key_root
[
inx
]);
...
...
myisam/myisamchk.c
View file @
b65dbb61
...
...
@@ -196,7 +196,7 @@ static struct option long_options[] =
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
);
}
...
...
@@ -502,8 +502,15 @@ static int myisamchk(MI_CHECK *param, my_string filename)
param
->
error_printed
=
1
;
switch
(
my_errno
)
{
case
HA_ERR_CRASHED
:
case
HA_ERR_WRONG_TABLE_DEF
:
mi_check_print_error
(
param
,
"'%s' is not a MyISAM-table"
,
filename
);
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
:
mi_check_print_error
(
param
,
"'%s' is a old type of MyISAM-table"
,
filename
);
break
;
...
...
sql/sql_base.cc
View file @
b65dbb61
...
...
@@ -1162,25 +1162,26 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
HA_TRY_READ_ONLY
),
READ_KEYINFO
|
COMPUTE_TYPES
|
EXTRA_RECORD
,
ha_open_options
|
HA_OPEN_FOR_REPAIR
,
entry
)
||
entry
)
||
!
entry
->
file
||
(
entry
->
file
->
is_crashed
()
&&
entry
->
file
->
check_and_repair
(
thd
)))
{
/* Give right error message */
thd
->
net
.
last_error
[
0
]
=
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
);
closefrm
(
entry
);
if
(
entry
->
file
)
closefrm
(
entry
);
error
=
1
;
}
else
{
thd
->
net
.
last_error
[
0
]
=
0
;
// Clear error message
thd
->
net
.
last_error
[
0
]
=
0
;
// Clear error message
thd
->
net
.
last_errno
=
0
;
}
unlock_table_name
(
thd
,
&
table_list
);
if
(
locked
)
pthread_mutex_lock
(
&
LOCK_open
);
// Get back original lock
unlock_table_name
(
thd
,
&
table_list
);
if
(
error
)
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,
HA_OPEN_IGNORE_IF_LOCKED
)
|
ha_open_flags
))))
{
/* 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
()
&&
!
(
ha_open_flags
&
HA_OPEN_FOR_REPAIR
));
goto
err_not_open
;
/* purecov: inspected */
...
...
@@ -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
);
delete
outparam
->
file
;
outparam
->
file
=
0
;
// For easyer errorchecking
outparam
->
db_stat
=
0
;
free_root
(
&
outparam
->
mem_root
,
MYF
(
0
));
my_free
(
outparam
->
table_name
,
MYF
(
MY_ALLOW_ZERO_PTR
));
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