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
a3802f9b
Commit
a3802f9b
authored
Dec 30, 2000
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge
parents
7805e90f
603977f2
Changes
42
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
667 additions
and
291 deletions
+667
-291
.bzrignore
.bzrignore
+1
-0
BUILD/compile-pentium
BUILD/compile-pentium
+6
-0
BUILD/compile-pentium-debug
BUILD/compile-pentium-debug
+6
-0
BUILD/compile-pentium-symbols
BUILD/compile-pentium-symbols
+15
-0
Docs/internals.texi
Docs/internals.texi
+145
-0
Docs/manual.texi
Docs/manual.texi
+15
-11
client/my_readline.h
client/my_readline.h
+1
-0
client/mysql.cc
client/mysql.cc
+4
-3
client/mysqladmin.c
client/mysqladmin.c
+0
-1
client/mysqldump.c
client/mysqldump.c
+9
-4
client/mysqlimport.c
client/mysqlimport.c
+1
-1
client/mysqltest.c
client/mysqltest.c
+1
-7
client/readline.cc
client/readline.cc
+5
-4
heap/_check.c
heap/_check.c
+11
-5
heap/hp_close.c
heap/hp_close.c
+1
-1
heap/hp_hash.c
heap/hp_hash.c
+87
-6
heap/hp_open.c
heap/hp_open.c
+1
-0
heap/hp_test1.c
heap/hp_test1.c
+2
-2
heap/hp_test2.c
heap/hp_test2.c
+11
-10
include/heap.h
include/heap.h
+1
-1
merge/rrnd.c
merge/rrnd.c
+1
-1
mysql-test/install_test_db.sh
mysql-test/install_test_db.sh
+7
-6
mysql-test/mysql-test-run.sh
mysql-test/mysql-test-run.sh
+64
-28
mysql-test/r/key_diff.result
mysql-test/r/key_diff.result
+3
-3
mysql-test/r/type_blob.result
mysql-test/r/type_blob.result
+3
-3
mysql-test/t/key_diff.test
mysql-test/t/key_diff.test
+1
-1
mysql-test/t/type_blob.test
mysql-test/t/type_blob.test
+1
-1
mysys/hash.c
mysys/hash.c
+45
-0
scripts/mysqld_multi.sh
scripts/mysqld_multi.sh
+1
-1
scripts/safe_mysqld.sh
scripts/safe_mysqld.sh
+10
-8
sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha
+8
-7
sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha
+78
-75
sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha
+4
-4
sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha
+6
-6
sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha
+10
-10
sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha
+7
-7
sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha
+44
-42
sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha
+12
-12
sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha
sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha
+4
-4
sql/ha_innobase.cc
sql/ha_innobase.cc
+11
-5
sql/mysqld.cc
sql/mysqld.cc
+23
-10
sql/sql_table.cc
sql/sql_table.cc
+1
-1
No files found.
.bzrignore
View file @
a3802f9b
...
@@ -184,3 +184,4 @@ mysqld.sym
...
@@ -184,3 +184,4 @@ mysqld.sym
.snprj/*
.snprj/*
sql-bench/output/*
sql-bench/output/*
sql-bench/Results-linux/ATIS-mysql_bdb-Linux_2.2.14_my_SMP_i686
sql-bench/Results-linux/ATIS-mysql_bdb-Linux_2.2.14_my_SMP_i686
Docs/my_sys.doc
BUILD/compile-pentium
View file @
a3802f9b
...
@@ -7,4 +7,10 @@ extra_flags="$pentium_cflags $fast_cflags"
...
@@ -7,4 +7,10 @@ extra_flags="$pentium_cflags $fast_cflags"
extra_configs
=
"
$pentium_configs
"
extra_configs
=
"
$pentium_configs
"
strip
=
yes
strip
=
yes
# Use the optimized version if it exists
if
test
-d
/usr/local/BerkeleyDB-opt/
then
extra_configs
=
"
$extra_configs
--with-berkeley-db=/usr/local/BerkeleyDB-opt/"
fi
.
"
$path
/FINISH.sh"
.
"
$path
/FINISH.sh"
BUILD/compile-pentium-debug
View file @
a3802f9b
...
@@ -8,4 +8,10 @@ c_warnings="$c_warnings $debug_extra_warnings"
...
@@ -8,4 +8,10 @@ c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings
=
"
$cxx_warnings
$debug_extra_warnings
"
cxx_warnings
=
"
$cxx_warnings
$debug_extra_warnings
"
extra_configs
=
"
$pentium_configs
$debug_configs
"
extra_configs
=
"
$pentium_configs
$debug_configs
"
# Use the debug version if it exists
if
test
-d
/usr/local/BerkeleyDB-dbug/
then
extra_configs
=
"
$extra_configs
--with-berkeley-db=/usr/local/BerkeleyDB-dbug/"
fi
.
"
$path
/FINISH.sh"
.
"
$path
/FINISH.sh"
BUILD/compile-pentium-symbols
0 → 100755
View file @
a3802f9b
#! /bin/sh
path
=
`
dirname
$0
`
.
"
$path
/SETUP.sh"
extra_flags
=
"
$pentium_cflags
$fast_cflags
-g"
extra_configs
=
"
$pentium_configs
"
# Use the optimized version if it exists
if
test
-d
/usr/local/BerkeleyDB-opt/
then
extra_configs
=
"
$extra_configs
--with-berkeley-db=/usr/local/BerkeleyDB-opt/"
fi
.
"
$path
/FINISH.sh"
Docs/internals.texi
View file @
a3802f9b
...
@@ -289,6 +289,151 @@ Use pointers rather than array indexing when operating on strings.
...
@@ -289,6 +289,151 @@ Use pointers rather than array indexing when operating on strings.
@end itemize
@end itemize
@node mysys functions
@chapter mysys functions
Functions i mysys: (For flags se my
_
sys.h)
int my
_
copy
_
A((const char *from,const char *to,myf MyFlags));
- Copy file
int my
_
delete
_
A((const char *name,myf MyFlags));
- Delete file
int my
_
getwd
_
A((string buf,uint size,myf MyFlags));
int my
_
setwd
_
A((const char *dir,myf MyFlags));
- Get and set working directory
string my
_
tempnam
_
A((const char *pfx,myf MyFlags));
- Make a uniq temp file name by using dir and adding something after
pfx to make name uniq. Name is made by adding a uniq 6 length-string
and TMP
_
EXT after pfx.
Returns pointer to malloced area for filename. Should be freed by
free().
File my
_
open
_
A((const char *FileName,int Flags,myf MyFlags));
File my
_
create
_
A((const char *FileName,int CreateFlags,
int AccsesFlags, myf MyFlags));
int my
_
close
_
A((File Filedes,myf MyFlags));
uint my
_
read
_
A((File Filedes,byte *Buffer,uint Count,myf MyFlags));
uint my
_
write
_
A((File Filedes,const byte *Buffer,uint Count,
myf MyFlags));
ulong my
_
seek
_
A((File fd,ulong pos,int whence,myf MyFlags));
ulong my
_
tell
_
A((File fd,myf MyFlags));
- Use instead of open,open-with-create-flag, close read and write
to get automatic error-messages (flag: MYF
_
WME) and only have
to test for != 0 if error (flag: MY
_
NABP).
int my
_
rename
_
A((const char *from,const char *to,myf MyFlags));
- Rename file
FILE *my
_
fopen
_
A((const char *FileName,int Flags,myf MyFlags));
FILE *my
_
fdopen
_
A((File Filedes,int Flags,myf MyFlags));
int my
_
fclose
_
A((FILE *fd,myf MyFlags));
uint my
_
fread
_
A((FILE *stream,byte *Buffer,uint Count,myf MyFlags));
uint my
_
fwrite
_
A((FILE *stream,const byte *Buffer,uint Count,
myf MyFlags));
ulong my
_
fseek
_
A((FILE *stream,ulong pos,int whence,myf MyFlags));
ulong my
_
ftell
_
A((FILE *stream,myf MyFlags));
- Same read-interface for streams as for files
gptr
_
mymalloc
_
A((uint uSize,const char *sFile,
uint uLine, myf MyFlag));
gptr
_
myrealloc
_
A((string pPtr,uint uSize,const char *sFile,
uint uLine, myf MyFlag));
void
_
myfree
_
A((gptr pPtr,const char *sFile,uint uLine));
int
_
sanity
_
A((const char *sFile,unsigned int uLine));
gptr
_
myget
_
copy
_
of
_
memory
_
A((const byte *from,uint length,
const char *sFile, uint uLine,
myf MyFlag));
- malloc(size,myflag) is mapped to this functions if not compiled
with -DSAFEMALLOC
void TERMINATE
_
A((void));
- Writes malloc-info on stdout if compiled with -DSAFEMALLOC.
int my
_
chsize
_
A((File fd,ulong newlength,myf MyFlags));
- Change size of file
void my
_
error
_
D((int nr,myf MyFlags, ...));
- Writes message using error number (se mysys/errors.h) on
stdout or curses if MYSYS
_
PROGRAM
_
USES
_
CURSES() is called.
void my
_
message
_
A((const char *str,myf MyFlags));
- Writes message-string on
stdout or curses if MYSYS
_
PROGRAM
_
USES
_
CURSES() is called.
void my
_
init
_
A((void ));
- Start each program (in main) with this.
void my
_
end
_
A((int infoflag));
- Gives info about program.
- If infoflag
&
MY
_
CHECK
_
ERROR prints if some files are left open
- If infoflag
&
MY
_
GIVE
_
INFO prints timing info and malloc info
about prog.
int my
_
redel
_
A((const char *from, const char *to, int MyFlags));
- Delete from before rename of to to from. Copyes state from old
file to new file. If MY
_
COPY
_
TIME is set sets old time.
int my
_
copystat
_
A((const char *from, const char *to, int MyFlags));
- Copye state from old file to new file.
If MY
_
COPY
_
TIME is set sets copy also time.
string my
_
filename
_
A((File fd));
- Give filename of open file.
int dirname
_
A((string to,const char *name));
- Copy name of directory from filename.
int test
_
if
_
hard
_
path
_
A((const char *dir
_
name));
- Test if dirname is a hard path (Starts from root)
void convert
_
dirname
_
A((string name));
- Convert dirname acording to system.
- In MSDOS changes all caracters to capitals and changes '/' to
'
\'
string fn
_
ext
_
A((const char *name));
- Returns pointer to extension in filename
string fn
_
format
_
A((string to,const char *name,const char *dsk,
const char *form,int flag));
format a filename with replace of library and extension and
converts between different systems.
params to and name may be identicall
function dosn't change name if name != to
Flag may be: 1 force replace filnames library with 'dsk'
2 force replace extension with 'form' */
4 force Unpack filename (replace ~ with home)
8 Pack filename as short as possibly for output to
user.
All open requests should allways use at least:
"open(fn
_
format(temp
_
buffe,name,"","",4),...)" to unpack home and
convert filename to system-form.
string fn
_
same
_
A((string toname,const char *name,int flag));
- Copys directory and extension from name to toname if neaded.
copy can be forced by same flags that in fn
_
format.
int wild
_
compare
_
A((const char *str,const char *wildstr));
- Compare if str matches wildstr. Wildstr can contain "*" and "?"
as match-characters.
Returns 0 if match.
void get
_
date
_
A((string to,int timeflag));
- Get current date in a form ready for printing.
void soundex
_
A((string out
_
pntr, string in
_
pntr))
- Makes in
_
pntr to a 5 chars long string. All words that sounds
alike have the same string.
int init
_
key
_
cache
_
A((ulong use
_
mem,ulong leave
_
this
_
much
_
mem));
- Use cacheing of keys in MISAM, PISAM, and ISAM.
KEY
_
CACHE
_
SIZE is a good size.
- Remember to lock databases for optimal cacheing
void end
_
key
_
cache
_
A((void));
- End key-cacheing.
@c The Index was empty, and ugly, so I removed it. (jcole, Sep 7, 2000)
@c The Index was empty, and ugly, so I removed it. (jcole, Sep 7, 2000)
@c @node Index
@c @node Index
...
...
Docs/manual.texi
View file @
a3802f9b
...
@@ -28445,20 +28445,20 @@ Most of the options to @code{safe_mysqld} are the same as the options to
...
@@ -28445,20 +28445,20 @@ Most of the options to @code{safe_mysqld} are the same as the options to
@table @code
@table @code
@item --basedir=path
@item --basedir=path
@item --core-file-size=#
@item --core-file-size=#
@item --datadir=path
@item --defaults-extra-file=path
@item --defaults-extra-file=path
@item --defaults-file=path
@item --defaults-file=path
@item --open-files=#
Size of the core file @code{mysqld} should be able to create. Passed to
@code{ulimit -c}.
@item --datadir=path
@item --err-log=path
@item --err-log=path
@item --ledir=path
@item --ledir=path
Path to @code{mysqld}
Path to @code{mysqld}
@item --log=path
@item --log=path
@item --mysqld=mysqld-version
Name of the mysqld version in the @code{ledir} directory you want to start.
@item --no-defaults
@item --no-defaults
@item --open-files=#
@item --open-files=#
Number of files @code{mysqld} should be able to open. Passed to
Number of files @code{mysqld} should be able to open. Passed to @code{ulimit -n}.
@code{ulimit -n}.
@item --open-files=#
Size of the core file @code{mysqld} should be able to create. Passed to @code{ulimit -c}.
@item --pid-file=path
@item --pid-file=path
@item --port=#
@item --port=#
@item --socket=path
@item --socket=path
...
@@ -38289,10 +38289,11 @@ To be consistent with our setup, you should put your result files in
...
@@ -38289,10 +38289,11 @@ To be consistent with our setup, you should put your result files in
test produces more than one result, you should use @code{test_name.a.result},
test produces more than one result, you should use @code{test_name.a.result},
@code{test_name.b.result}, etc
@code{test_name.b.result}, etc
@item
@item
Failed test results are put in a file with the same name as the result file
Failed test results are put in a file with the same base name as the
followed by @code{.reject} extenstion. If your test case is failing, you
result file with the @code{.reject} extenstion. If your test case is
should do a diff on the two files. If you cannot see how they are different,
failing, you should do a diff on the two files. If you cannot see how
examine both with @code{od -c} and also check their lengths.
they are different, examine both with @code{od -c} and also check their
lengths.
@item
@item
You can prefix a query with @code{!} if the test can continue after that query
You can prefix a query with @code{!} if the test can continue after that query
returns an error.
returns an error.
...
@@ -40056,8 +40057,11 @@ though, so Version 3.23 is not released as a stable version yet.
...
@@ -40056,8 +40057,11 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.30
@appendixsubsec Changes in release 3.23.30
@itemize @bullet
@itemize @bullet
@item
@item
Added option @code{--mysqld=#} to @code{safe_mysqld}
@item
Allow hex constants in the @code{--fields-*-by} and
Allow hex constants in the @code{--fields-*-by} and
@code{--lines-terminated-by} options to @code{mysqldump}. By Paul DuBois.
@code{--lines-terminated-by} options to @code{mysqldump} and
@code{mysqlimport}. By Paul DuBois.
@item
@item
Added option @code{--safe-show-databases}.
Added option @code{--safe-show-databases}.
@item
@item
client/my_readline.h
View file @
a3802f9b
...
@@ -26,6 +26,7 @@ typedef struct st_line_buffer
...
@@ -26,6 +26,7 @@ typedef struct st_line_buffer
uint
bufread
;
/* Number of bytes to get with each read(). */
uint
bufread
;
/* Number of bytes to get with each read(). */
uint
eof
;
uint
eof
;
ulong
max_size
;
ulong
max_size
;
ulong
read_length
;
/* Length of last read string */
}
LINE_BUFFER
;
}
LINE_BUFFER
;
extern
LINE_BUFFER
*
batch_readline_init
(
ulong
max_size
,
FILE
*
file
);
extern
LINE_BUFFER
*
batch_readline_init
(
ulong
max_size
,
FILE
*
file
);
...
...
client/mysql.cc
View file @
a3802f9b
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
#include "my_readline.h"
#include "my_readline.h"
#include <signal.h>
#include <signal.h>
const
char
*
VER
=
"11.
9
"
;
const
char
*
VER
=
"11.
10
"
;
gptr
sql_alloc
(
unsigned
size
);
// Don't use mysqld alloc for these
gptr
sql_alloc
(
unsigned
size
);
// Don't use mysqld alloc for these
void
sql_element_free
(
void
*
ptr
);
void
sql_element_free
(
void
*
ptr
);
...
@@ -903,7 +903,6 @@ static bool add_line(String &buffer,char *line,char *in_string)
...
@@ -903,7 +903,6 @@ static bool add_line(String &buffer,char *line,char *in_string)
continue
;
continue
;
#ifdef USE_MB
#ifdef USE_MB
int
l
;
int
l
;
/* if ((l = ismbchar(pos, pos+MBMAXLEN))) { Wei He: I think it's wrong! */
if
(
use_mb
(
default_charset_info
)
&&
if
(
use_mb
(
default_charset_info
)
&&
(
l
=
my_ismbchar
(
default_charset_info
,
pos
,
strend
)))
{
(
l
=
my_ismbchar
(
default_charset_info
,
pos
,
strend
)))
{
while
(
l
--
)
while
(
l
--
)
...
@@ -2163,7 +2162,9 @@ com_status(String *buffer __attribute__((unused)),
...
@@ -2163,7 +2162,9 @@ com_status(String *buffer __attribute__((unused)),
tee_fprintf
(
stdout
,
"Server version:
\t\t
%s
\n
"
,
mysql_get_server_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Server version:
\t\t
%s
\n
"
,
mysql_get_server_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Protocol version:
\t
%d
\n
"
,
mysql_get_proto_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Protocol version:
\t
%d
\n
"
,
mysql_get_proto_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Connection:
\t\t
%s
\n
"
,
mysql_get_host_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Connection:
\t\t
%s
\n
"
,
mysql_get_host_info
(
&
mysql
));
tee_fprintf
(
stdout
,
"Language:
\t\t
%s
\n
"
,
mysql
.
charset
->
name
);
tee_fprintf
(
stdout
,
"Client characterset:
\t
%s
\n
"
,
default_charset_info
->
name
);
tee_fprintf
(
stdout
,
"Server characterset:
\t
%s
\n
"
,
mysql
.
charset
->
name
);
if
(
strstr
(
mysql_get_host_info
(
&
mysql
),
"TCP/IP"
)
||
!
mysql
.
unix_socket
)
if
(
strstr
(
mysql_get_host_info
(
&
mysql
),
"TCP/IP"
)
||
!
mysql
.
unix_socket
)
tee_fprintf
(
stdout
,
"TCP port:
\t\t
%d
\n
"
,
mysql
.
port
);
tee_fprintf
(
stdout
,
"TCP port:
\t\t
%d
\n
"
,
mysql
.
port
);
else
else
...
...
client/mysqladmin.c
View file @
a3802f9b
...
@@ -122,7 +122,6 @@ static struct option long_options[] = {
...
@@ -122,7 +122,6 @@ static struct option long_options[] = {
{
"socket"
,
required_argument
,
0
,
'S'
},
{
"socket"
,
required_argument
,
0
,
'S'
},
{
"sleep"
,
required_argument
,
0
,
'i'
},
{
"sleep"
,
required_argument
,
0
,
'i'
},
#include "sslopt-longopts.h"
#include "sslopt-longopts.h"
{
"connect-timeout"
,
required_argument
,
0
,
't'
},
#ifndef DONT_ALLOW_USER_CHANGE
#ifndef DONT_ALLOW_USER_CHANGE
{
"user"
,
required_argument
,
0
,
'u'
},
{
"user"
,
required_argument
,
0
,
'u'
},
#endif
#endif
...
...
client/mysqldump.c
View file @
a3802f9b
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
** Tnu Samuel <tonu@please.do.not.remove.this.spam.ee>
** Tnu Samuel <tonu@please.do.not.remove.this.spam.ee>
**/
**/
#define DUMP_VERSION "8.1
1
"
#define DUMP_VERSION "8.1
2
"
#include <global.h>
#include <global.h>
#include <my_sys.h>
#include <my_sys.h>
...
@@ -862,11 +862,16 @@ static char *add_load_option(char *ptr,const char *object,
...
@@ -862,11 +862,16 @@ static char *add_load_option(char *ptr,const char *object,
const
char
*
statement
)
const
char
*
statement
)
{
{
if
(
object
)
if
(
object
)
{
if
(
!
strncasecmp
(
object
,
"0x"
,
2
))
/* hex constant; don't escape */
ptr
=
strxmov
(
ptr
,
" "
,
statement
,
" "
,
object
,
NullS
);
else
/* char constant; escape */
{
{
ptr
=
strxmov
(
ptr
,
" "
,
statement
,
" '"
,
NullS
);
ptr
=
strxmov
(
ptr
,
" "
,
statement
,
" '"
,
NullS
);
ptr
=
field_escape
(
ptr
,
object
,(
uint
)
strlen
(
object
));
ptr
=
field_escape
(
ptr
,
object
,(
uint
)
strlen
(
object
));
*
ptr
++=
'\''
;
*
ptr
++=
'\''
;
}
}
}
return
ptr
;
return
ptr
;
}
/* add_load_option */
}
/* add_load_option */
...
...
client/mysqlimport.c
View file @
a3802f9b
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
** * *
** * *
** *************************
** *************************
*/
*/
#define IMPORT_VERSION "2.
6
"
#define IMPORT_VERSION "2.
7
"
#include <global.h>
#include <global.h>
#include <my_sys.h>
#include <my_sys.h>
...
...
client/mysqltest.c
View file @
a3802f9b
...
@@ -1098,10 +1098,7 @@ void str_to_file(const char* fname, char* str, int size)
...
@@ -1098,10 +1098,7 @@ void str_to_file(const char* fname, char* str, int size)
void
reject_dump
(
const
char
*
record_file
,
char
*
buf
,
int
size
)
void
reject_dump
(
const
char
*
record_file
,
char
*
buf
,
int
size
)
{
{
char
reject_file
[
FN_REFLEN
];
char
reject_file
[
FN_REFLEN
];
if
(
strlen
(
record_file
)
>=
FN_REFLEN
-
8
)
str_to_file
(
fn_format
(
reject_file
,
record_file
,
""
,
".reject"
,
2
),
buf
,
size
);
die
(
"too long path name for reject"
);
strmov
(
strmov
(
reject_file
,
record_file
),
".reject"
);
str_to_file
(
reject_file
,
buf
,
size
);
}
}
...
@@ -1282,9 +1279,6 @@ int main(int argc, char** argv)
...
@@ -1282,9 +1279,6 @@ int main(int argc, char** argv)
if
(
!
(
mysql_init
(
&
cur_con
->
mysql
)))
if
(
!
(
mysql_init
(
&
cur_con
->
mysql
)))
die
(
"Failed in mysql_init()"
);
die
(
"Failed in mysql_init()"
);
mysql_options
(
&
cur_con
->
mysql
,
MYSQL_READ_DEFAULT_GROUP
,
"mysql"
);
cur_con
->
name
=
my_strdup
(
"default"
,
MYF
(
MY_WME
));
cur_con
->
name
=
my_strdup
(
"default"
,
MYF
(
MY_WME
));
if
(
!
cur_con
->
name
)
if
(
!
cur_con
->
name
)
die
(
"Out of memory"
);
die
(
"Out of memory"
);
...
...
client/readline.cc
View file @
a3802f9b
...
@@ -26,7 +26,7 @@ static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
...
@@ -26,7 +26,7 @@ static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
ulong
max_size
);
ulong
max_size
);
static
bool
init_line_buffer_from_string
(
LINE_BUFFER
*
buffer
,
my_string
str
);
static
bool
init_line_buffer_from_string
(
LINE_BUFFER
*
buffer
,
my_string
str
);
static
uint
fill_buffer
(
LINE_BUFFER
*
buffer
);
static
uint
fill_buffer
(
LINE_BUFFER
*
buffer
);
static
char
*
intern_read_line
(
LINE_BUFFER
*
buffer
,
u
int
*
out_length
);
static
char
*
intern_read_line
(
LINE_BUFFER
*
buffer
,
u
long
*
out_length
);
LINE_BUFFER
*
batch_readline_init
(
ulong
max_size
,
FILE
*
file
)
LINE_BUFFER
*
batch_readline_init
(
ulong
max_size
,
FILE
*
file
)
...
@@ -46,12 +46,13 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
...
@@ -46,12 +46,13 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
char
*
batch_readline
(
LINE_BUFFER
*
line_buff
)
char
*
batch_readline
(
LINE_BUFFER
*
line_buff
)
{
{
char
*
pos
;
char
*
pos
;
u
int
out_length
;
u
long
out_length
;
if
(
!
(
pos
=
intern_read_line
(
line_buff
,
&
out_length
)))
if
(
!
(
pos
=
intern_read_line
(
line_buff
,
&
out_length
)))
return
0
;
return
0
;
if
(
out_length
&&
pos
[
out_length
-
1
]
==
'\n'
)
if
(
out_length
&&
pos
[
out_length
-
1
]
==
'\n'
)
out_length
--
;
/* Remove '\n' */
out_length
--
;
/* Remove '\n' */
line_buff
->
read_length
=
out_length
;
pos
[
out_length
]
=
0
;
pos
[
out_length
]
=
0
;
return
pos
;
return
pos
;
}
}
...
@@ -187,7 +188,7 @@ static uint fill_buffer(LINE_BUFFER *buffer)
...
@@ -187,7 +188,7 @@ static uint fill_buffer(LINE_BUFFER *buffer)
char
*
intern_read_line
(
LINE_BUFFER
*
buffer
,
u
int
*
out_length
)
char
*
intern_read_line
(
LINE_BUFFER
*
buffer
,
u
long
*
out_length
)
{
{
char
*
pos
;
char
*
pos
;
uint
length
;
uint
length
;
...
@@ -210,7 +211,7 @@ char *intern_read_line(LINE_BUFFER *buffer,uint *out_length)
...
@@ -210,7 +211,7 @@ char *intern_read_line(LINE_BUFFER *buffer,uint *out_length)
pos
--
;
/* break line here */
pos
--
;
/* break line here */
}
}
buffer
->
end_of_line
=
pos
+
1
;
buffer
->
end_of_line
=
pos
+
1
;
*
out_length
=
(
u
int
)
(
pos
+
1
-
buffer
->
eof
-
buffer
->
start_of_line
);
*
out_length
=
(
u
long
)
(
pos
+
1
-
buffer
->
eof
-
buffer
->
start_of_line
);
DBUG_RETURN
(
buffer
->
start_of_line
);
DBUG_RETURN
(
buffer
->
start_of_line
);
}
}
}
}
heap/_check.c
View file @
a3802f9b
...
@@ -18,11 +18,12 @@
...
@@ -18,11 +18,12 @@
#include "heapdef.h"
#include "heapdef.h"
static
int
check_one_key
(
HP_KEYDEF
*
keydef
,
ulong
records
,
ulong
blength
);
static
int
check_one_key
(
HP_KEYDEF
*
keydef
,
uint
keynr
,
ulong
records
,
ulong
blength
,
my_bool
print_status
);
/* Returns 0 if the HEAP is ok */
/* Returns 0 if the HEAP is ok */
int
heap_check_heap
(
HP_INFO
*
info
)
int
heap_check_heap
(
HP_INFO
*
info
,
my_bool
print_status
)
{
{
int
error
;
int
error
;
uint
key
;
uint
key
;
...
@@ -30,13 +31,15 @@ int heap_check_heap(HP_INFO *info)
...
@@ -30,13 +31,15 @@ int heap_check_heap(HP_INFO *info)
DBUG_ENTER
(
"heap_check_keys"
);
DBUG_ENTER
(
"heap_check_keys"
);
for
(
error
=
key
=
0
;
key
<
share
->
keys
;
key
++
)
for
(
error
=
key
=
0
;
key
<
share
->
keys
;
key
++
)
error
|=
check_one_key
(
share
->
keydef
+
key
,
share
->
records
,
share
->
blength
);
error
|=
check_one_key
(
share
->
keydef
+
key
,
key
,
share
->
records
,
share
->
blength
,
print_status
);
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
}
}
static
int
check_one_key
(
HP_KEYDEF
*
keydef
,
ulong
records
,
ulong
blength
)
static
int
check_one_key
(
HP_KEYDEF
*
keydef
,
uint
keynr
,
ulong
records
,
ulong
blength
,
my_bool
print_status
)
{
{
int
error
;
int
error
;
uint
i
,
found
,
max_links
,
seek
,
links
;
uint
i
,
found
,
max_links
,
seek
,
links
;
...
@@ -76,6 +79,9 @@ static int check_one_key(HP_KEYDEF *keydef, ulong records, ulong blength)
...
@@ -76,6 +79,9 @@ static int check_one_key(HP_KEYDEF *keydef, ulong records, ulong blength)
}
}
DBUG_PRINT
(
"info"
,
DBUG_PRINT
(
"info"
,
(
"records: %ld seeks: %d max links: %d hitrate: %.2f"
,
(
"records: %ld seeks: %d max links: %d hitrate: %.2f"
,
records
,
seek
,
max_links
,(
float
)
seek
/
(
float
)
records
));
records
,
seek
,
max_links
,(
float
)
seek
/
(
float
)
(
records
?
records
:
1
)));
if
(
print_status
)
printf
(
"Key: %d records: %ld seeks: %d max links: %d hitrate: %.2f
\n
"
,
keynr
,
records
,
seek
,
max_links
,
(
float
)
seek
/
(
float
)
records
);
return
error
;
return
error
;
}
}
heap/hp_close.c
View file @
a3802f9b
...
@@ -37,7 +37,7 @@ int _hp_close(register HP_INFO *info)
...
@@ -37,7 +37,7 @@ int _hp_close(register HP_INFO *info)
int
error
=
0
;
int
error
=
0
;
DBUG_ENTER
(
"_hp_close"
);
DBUG_ENTER
(
"_hp_close"
);
#ifndef DBUG_OFF
#ifndef DBUG_OFF
if
(
info
->
s
->
changed
&&
heap_check_heap
(
info
))
if
(
info
->
s
->
changed
&&
heap_check_heap
(
info
,
0
))
{
{
error
=
my_errno
=
HA_ERR_CRASHED
;
error
=
my_errno
=
HA_ERR_CRASHED
;
}
}
...
...
heap/hp_hash.c
View file @
a3802f9b
...
@@ -145,6 +145,7 @@ void _hp_movelink(HASH_INFO *pos, HASH_INFO *next_link, HASH_INFO *newlink)
...
@@ -145,6 +145,7 @@ void _hp_movelink(HASH_INFO *pos, HASH_INFO *next_link, HASH_INFO *newlink)
return
;
return
;
}
}
#ifndef NEW_HASH_FUNCTION
/* Calc hashvalue for a key */
/* Calc hashvalue for a key */
...
@@ -152,13 +153,14 @@ ulong _hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
...
@@ -152,13 +153,14 @@ ulong _hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
{
{
register
ulong
nr
=
1
,
nr2
=
4
;
register
ulong
nr
=
1
,
nr2
=
4
;
HP_KEYSEG
*
seg
,
*
endseg
;
HP_KEYSEG
*
seg
,
*
endseg
;
uchar
*
pos
;
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
{
{
uchar
*
pos
=
(
uchar
*
)
key
;
key
+=
seg
->
length
;
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
{
{
for
(
pos
=
(
uchar
*
)
key
,
key
+=
seg
->
length
;
pos
<
(
uchar
*
)
key
;
pos
++
)
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
{
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
my_sort_order
[(
uint
)
*
pos
]))
+
(
nr
<<
8
);
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
my_sort_order
[(
uint
)
*
pos
]))
+
(
nr
<<
8
);
nr2
+=
3
;
nr2
+=
3
;
...
@@ -166,7 +168,7 @@ ulong _hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
...
@@ -166,7 +168,7 @@ ulong _hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
}
}
else
else
{
{
for
(
pos
=
(
uchar
*
)
key
,
key
+=
seg
->
length
;
pos
<
(
uchar
*
)
key
;
pos
++
)
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
{
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
*
pos
))
+
(
nr
<<
8
);
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
*
pos
))
+
(
nr
<<
8
);
nr2
+=
3
;
nr2
+=
3
;
...
@@ -182,13 +184,13 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
...
@@ -182,13 +184,13 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
{
{
register
ulong
nr
=
1
,
nr2
=
4
;
register
ulong
nr
=
1
,
nr2
=
4
;
HP_KEYSEG
*
seg
,
*
endseg
;
HP_KEYSEG
*
seg
,
*
endseg
;
uchar
*
pos
,
*
end
;
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
{
{
uchar
*
pos
=
(
uchar
*
)
rec
+
seg
->
start
,
*
end
=
pos
+
seg
->
length
;
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
{
{
for
(
pos
=
(
uchar
*
)
rec
+
seg
->
start
,
end
=
pos
+
seg
->
length
;
pos
<
end
;
pos
++
)
for
(;
pos
<
end
;
pos
++
)
{
{
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
my_sort_order
[(
uint
)
*
pos
]))
+
(
nr
<<
8
);
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
my_sort_order
[(
uint
)
*
pos
]))
+
(
nr
<<
8
);
nr2
+=
3
;
nr2
+=
3
;
...
@@ -196,7 +198,7 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
...
@@ -196,7 +198,7 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
}
}
else
else
{
{
for
(
pos
=
(
uchar
*
)
rec
+
seg
->
start
,
end
=
pos
+
seg
->
length
;
pos
<
end
;
pos
++
)
for
(;
pos
<
end
;
pos
++
)
{
{
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
*
pos
))
+
(
nr
<<
8
);
nr
^=
(
ulong
)
((((
uint
)
nr
&
63
)
+
nr2
)
*
((
uint
)
*
pos
))
+
(
nr
<<
8
);
nr2
+=
3
;
nr2
+=
3
;
...
@@ -206,6 +208,85 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
...
@@ -206,6 +208,85 @@ ulong _hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
return
((
ulong
)
nr
);
return
((
ulong
)
nr
);
}
}
#else
/*
* Fowler/Noll/Vo hash
*
* The basis of the hash algorithm was taken from an idea sent by email to the
* IEEE Posix P1003.2 mailing list from Phong Vo (kpv@research.att.com) and
* Glenn Fowler (gsf@research.att.com). Landon Curt Noll (chongo@toad.com)
* later improved on their algorithm.
*
* The magic is in the interesting relationship between the special prime
* 16777619 (2^24 + 403) and 2^32 and 2^8.
*
* This hash produces the fewest collisions of any function that we've seen so
* far, and works well on both numbers and strings.
*/
ulong
_hp_hashnr
(
register
HP_KEYDEF
*
keydef
,
register
const
byte
*
key
)
{
register
ulong
nr
=
0
;
HP_KEYSEG
*
seg
,
*
endseg
;
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
{
uchar
*
pos
=
(
uchar
*
)
key
;
key
+=
seg
->
length
;
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
{
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
nr
*=
16777619
;
nr
^=
((
uint
)
my_sort_order
[(
uint
)
*
pos
]);
}
}
else
{
for
(
;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
nr
*=
16777619
;
nr
^=
(
uint
)
*
pos
;
}
}
}
return
((
ulong
)
nr
);
}
/* Calc hashvalue for a key in a record */
ulong
_hp_rec_hashnr
(
register
HP_KEYDEF
*
keydef
,
register
const
byte
*
rec
)
{
register
ulong
nr
=
0
;
HP_KEYSEG
*
seg
,
*
endseg
;
for
(
seg
=
keydef
->
seg
,
endseg
=
seg
+
keydef
->
keysegs
;
seg
<
endseg
;
seg
++
)
{
uchar
*
pos
=
(
uchar
*
)
rec
+
seg
->
start
,
*
end
=
pos
+
seg
->
length
;
if
(
seg
->
type
==
HA_KEYTYPE_TEXT
)
{
for
(
;
pos
<
end
;
pos
++
)
{
nr
*=
16777619
;
nr
^=
(
uint
)
my_sort_order
[(
uint
)
*
pos
];
}
}
else
{
for
(
;
pos
<
end
;
pos
++
)
{
nr
*=
16777619
;
nr
^=
(
uint
)
*
pos
;
}
}
}
return
((
ulong
)
nr
);
}
#endif
/* Compare keys for two records. Returns 0 if they are identical */
/* Compare keys for two records. Returns 0 if they are identical */
int
_hp_rec_key_cmp
(
HP_KEYDEF
*
keydef
,
const
byte
*
rec1
,
const
byte
*
rec2
)
int
_hp_rec_key_cmp
(
HP_KEYDEF
*
keydef
,
const
byte
*
rec1
,
const
byte
*
rec2
)
...
...
heap/hp_open.c
View file @
a3802f9b
...
@@ -38,6 +38,7 @@ HP_INFO *heap_open(const char *name, int mode, uint keys, HP_KEYDEF *keydef,
...
@@ -38,6 +38,7 @@ HP_INFO *heap_open(const char *name, int mode, uint keys, HP_KEYDEF *keydef,
pthread_mutex_lock
(
&
THR_LOCK_heap
);
pthread_mutex_lock
(
&
THR_LOCK_heap
);
if
(
!
(
share
=
_hp_find_named_heap
(
name
)))
if
(
!
(
share
=
_hp_find_named_heap
(
name
)))
{
{
DBUG_PRINT
(
"info"
,(
"Initializing new table"
));
for
(
i
=
key_segs
=
max_length
=
0
;
i
<
keys
;
i
++
)
for
(
i
=
key_segs
=
max_length
=
0
;
i
<
keys
;
i
++
)
{
{
key_segs
+=
keydef
[
i
].
keysegs
;
key_segs
+=
keydef
[
i
].
keysegs
;
...
...
heap/hp_test1.c
View file @
a3802f9b
...
@@ -65,7 +65,7 @@ int main(int argc, char **argv)
...
@@ -65,7 +65,7 @@ int main(int argc, char **argv)
sprintf
(
key
,
"%6d"
,
j
);
sprintf
(
key
,
"%6d"
,
j
);
bmove
(
record
+
1
,
key
,
6
);
bmove
(
record
+
1
,
key
,
6
);
error
=
heap_write
(
file
,
record
);
error
=
heap_write
(
file
,
record
);
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -100,7 +100,7 @@ int main(int argc, char **argv)
...
@@ -100,7 +100,7 @@ int main(int argc, char **argv)
if
(
!
error
)
if
(
!
error
)
deleted
++
;
deleted
++
;
}
}
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
...
heap/hp_test2.c
View file @
a3802f9b
...
@@ -133,7 +133,7 @@ char *argv[];
...
@@ -133,7 +133,7 @@ char *argv[];
write_count
++
;
key1
[
n1
]
++
;
key3
[
n3
]
=
1
;
write_count
++
;
key1
[
n1
]
++
;
key3
[
n3
]
=
1
;
key_check
+=
n1
;
key_check
+=
n1
;
}
}
if
(
testflag
==
1
&&
heap_check_heap
(
file
))
if
(
testflag
==
1
&&
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -141,7 +141,7 @@ char *argv[];
...
@@ -141,7 +141,7 @@ char *argv[];
}
}
if
(
testflag
==
1
)
if
(
testflag
==
1
)
goto
end
;
goto
end
;
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -173,7 +173,7 @@ char *argv[];
...
@@ -173,7 +173,7 @@ char *argv[];
key1
[
atoi
(
record
+
keyinfo
[
0
].
seg
[
0
].
start
)]
--
;
key1
[
atoi
(
record
+
keyinfo
[
0
].
seg
[
0
].
start
)]
--
;
key3
[
atoi
(
record
+
keyinfo
[
2
].
seg
[
0
].
start
)]
=
0
;
key3
[
atoi
(
record
+
keyinfo
[
2
].
seg
[
0
].
start
)]
=
0
;
key_check
-=
atoi
(
record
);
key_check
-=
atoi
(
record
);
if
(
testflag
==
2
&&
heap_check_heap
(
file
))
if
(
testflag
==
2
&&
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -183,7 +183,7 @@ char *argv[];
...
@@ -183,7 +183,7 @@ char *argv[];
puts
(
"Warning: Skipping delete test because no dupplicate keys"
);
puts
(
"Warning: Skipping delete test because no dupplicate keys"
);
}
}
if
(
testflag
==
2
)
goto
end
;
if
(
testflag
==
2
)
goto
end
;
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -239,14 +239,14 @@ char *argv[];
...
@@ -239,14 +239,14 @@ char *argv[];
update
++
;
update
++
;
key_check
=
key_check
-
atoi
(
record
)
+
n1
;
key_check
=
key_check
-
atoi
(
record
)
+
n1
;
}
}
if
(
testflag
==
3
&&
heap_check_heap
(
file
))
if
(
testflag
==
3
&&
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
}
}
}
}
if
(
testflag
==
3
)
goto
end
;
if
(
testflag
==
3
)
goto
end
;
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -284,7 +284,7 @@ char *argv[];
...
@@ -284,7 +284,7 @@ char *argv[];
goto
end
;
goto
end
;
}
}
dupp_keys
--
;
dupp_keys
--
;
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -320,7 +320,7 @@ char *argv[];
...
@@ -320,7 +320,7 @@ char *argv[];
goto
end
;
goto
end
;
}
}
dupp_keys
-=
2
;
dupp_keys
-=
2
;
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -353,7 +353,7 @@ char *argv[];
...
@@ -353,7 +353,7 @@ char *argv[];
printf
(
"next: Found: %d records of %d
\n
"
,
ant
,
write_count
-
delete
);
printf
(
"next: Found: %d records of %d
\n
"
,
ant
,
write_count
-
delete
);
goto
end
;
goto
end
;
}
}
if
(
heap_check_heap
(
file
))
if
(
heap_check_heap
(
file
,
0
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
@@ -556,7 +556,8 @@ char *argv[];
...
@@ -556,7 +556,8 @@ char *argv[];
}
}
pos
++
;
pos
++
;
}
}
if
(
heap_check_heap
(
file
)
||
heap_check_heap
(
file2
))
printf
(
"- Checking heap tables
\n
"
);
if
(
heap_check_heap
(
file
,
1
)
||
heap_check_heap
(
file2
,
1
))
{
{
puts
(
"Heap keys crashed"
);
puts
(
"Heap keys crashed"
);
goto
err
;
goto
err
;
...
...
include/heap.h
View file @
a3802f9b
...
@@ -156,7 +156,7 @@ extern int heap_rlast(HP_INFO *info,byte *record);
...
@@ -156,7 +156,7 @@ extern int heap_rlast(HP_INFO *info,byte *record);
extern
void
heap_clear
(
HP_INFO
*
info
);
extern
void
heap_clear
(
HP_INFO
*
info
);
extern
int
heap_rkey
(
HP_INFO
*
info
,
byte
*
record
,
int
inx
,
const
byte
*
key
);
extern
int
heap_rkey
(
HP_INFO
*
info
,
byte
*
record
,
int
inx
,
const
byte
*
key
);
extern
gptr
heap_find
(
HP_INFO
*
info
,
int
inx
,
const
byte
*
key
);
extern
gptr
heap_find
(
HP_INFO
*
info
,
int
inx
,
const
byte
*
key
);
extern
int
heap_check_heap
(
HP_INFO
*
info
);
extern
int
heap_check_heap
(
HP_INFO
*
info
,
my_bool
print_status
);
extern
byte
*
heap_position
(
HP_INFO
*
info
);
extern
byte
*
heap_position
(
HP_INFO
*
info
);
/* The following is for programs that uses the old HEAP interface where
/* The following is for programs that uses the old HEAP interface where
...
...
merge/rrnd.c
View file @
a3802f9b
...
@@ -82,7 +82,7 @@ int mrg_rrnd(MRG_INFO *info,byte *buf,mrg_off_t filepos)
...
@@ -82,7 +82,7 @@ int mrg_rrnd(MRG_INFO *info,byte *buf,mrg_off_t filepos)
}
}
}
}
info
->
current_table
=
find_table
(
info
->
open_tables
,
info
->
current_table
=
find_table
(
info
->
open_tables
,
info
->
end_table
,
filepos
);
info
->
end_table
-
1
,
filepos
);
isam_info
=
info
->
current_table
->
table
;
isam_info
=
info
->
current_table
->
table
;
isam_info
->
update
&=
HA_STATE_CHANGED
;
isam_info
->
update
&=
HA_STATE_CHANGED
;
return
((
*
isam_info
->
s
->
read_rnd
)(
isam_info
,(
byte
*
)
buf
,
return
((
*
isam_info
->
s
->
read_rnd
)(
isam_info
,(
byte
*
)
buf
,
...
...
mysql-test/install_test_db.sh
View file @
a3802f9b
...
@@ -17,16 +17,16 @@ else
...
@@ -17,16 +17,16 @@ else
fix_bin
=
.
fix_bin
=
.
fi
fi
vardir
=
var
logdir
=
$vardir
/log
if
[
x
$1
=
x
"-slave"
]
if
[
x
$1
=
x
"-slave"
]
then
then
shift
1
shift
1
data
=
var/slave-data
data
=
var/slave-data
ldata
=
$fix_bin
/var/slave-data
ldata
=
$fix_bin
/var/slave-data
logdir
=
var/log
else
else
data
=
var/lib
data
=
var/lib
ldata
=
$fix_bin
/var/lib
ldata
=
$fix_bin
/var/lib
logdir
=
var/log
fi
fi
mdata
=
$data
/mysql
mdata
=
$data
/mysql
...
@@ -45,9 +45,13 @@ hostname=`hostname` # Install this too in the user table
...
@@ -45,9 +45,13 @@ hostname=`hostname` # Install this too in the user table
resolved
=
127.0.0.1
resolved
=
127.0.0.1
#create the directories
[
-d
$vardir
]
||
mkdir
$vardir
[
-d
$logdir
]
||
mkdir
$logdir
# Create database directories mysql & test
# Create database directories mysql & test
if
[
-d
$data
]
;
then
rm
-rf
$data
;
fi
if
[
-d
$data
]
;
then
rm
-rf
$data
;
fi
mkdir
-p
$data
$data
/mysql
$data
/test
mkdir
$data
$data
/mysql
$data
/test
#for error messages
#for error messages
if
[
x
$BINARY_DIST
=
x1
]
;
then
if
[
x
$BINARY_DIST
=
x1
]
;
then
...
@@ -59,9 +63,6 @@ mkdir share
...
@@ -59,9 +63,6 @@ mkdir share
ln
-sf
../../sql/share share/mysql
ln
-sf
../../sql/share share/mysql
fi
fi
#create the directory for logs
mkdir
-p
$logdir
# Initialize variables
# Initialize variables
c_d
=
""
i_d
=
""
c_d
=
""
i_d
=
""
c_h
=
""
i_h
=
""
c_h
=
""
i_h
=
""
...
...
mysql-test/mysql-test-run.sh
View file @
a3802f9b
...
@@ -54,35 +54,32 @@ TOT_TEST=0
...
@@ -54,35 +54,32 @@ TOT_TEST=0
USERT
=
0
USERT
=
0
SYST
=
0
SYST
=
0
REALT
=
0
REALT
=
0
MY_TMP_DIR
=
$MYSQL_TEST_DIR
/var/tmp
MY
SQL
_TMP_DIR
=
$MYSQL_TEST_DIR
/var/tmp
TIMEFILE
=
"
$MYSQL_T
EST_DIR
/var/tmp
/mysqltest-time"
TIMEFILE
=
"
$MYSQL_T
MP_DIR
/mysqltest-time"
RES_SPACE
=
" "
RES_SPACE
=
" "
MYSQLD_SRC_DIRS
=
"strings mysys include extra regex isam merge myisam
\
MYSQLD_SRC_DIRS
=
"strings mysys include extra regex isam merge myisam
\
myisammrg heap sql"
myisammrg heap sql"
GCOV_MSG
=
/tmp
/mysqld-gcov.out
GCOV_MSG
=
$MYSQL_TMP_DIR
/mysqld-gcov.out
GCOV_ERR
=
/tmp
/mysqld-gcov.err
GCOV_ERR
=
$MYSQL_TMP_DIR
/mysqld-gcov.err
MASTER_RUNNING
=
0
MASTER_RUNNING
=
0
SLAVE_RUNNING
=
0
SLAVE_RUNNING
=
0
[
-d
$MY_TMP_DIR
]
||
mkdir
-p
$MY_TMP_DIR
#++
#++
# mysqld Environment Parameters
# mysqld Environment Parameters
#--
#--
MYRUN_DIR
=
var/run
MYRUN_DIR
=
$MYSQL_TEST_DIR
/
var/run
MASTER_MYPORT
=
9306
MASTER_MYPORT
=
9306
MASTER_MYDDIR
=
"
$MYSQL_TEST_DIR
/var/lib"
MASTER_MYDDIR
=
"
$MYSQL_TEST_DIR
/var/lib"
MASTER_MYSOCK
=
"
$MYSQL_T
EST_DIR
/var/tmp
/mysql.sock"
MASTER_MYSOCK
=
"
$MYSQL_T
MP_DIR
/mysql.sock"
MASTER_MYPID
=
"
$MY
SQL_TEST_DIR
/var/run
/mysqld.pid"
MASTER_MYPID
=
"
$MY
RUN_DIR
/mysqld.pid"
MASTER_MYLOG
=
"
$MYSQL_TEST_DIR
/var/log/mysqld.log"
MASTER_MYLOG
=
"
$MYSQL_TEST_DIR
/var/log/mysqld.log"
MASTER_MYERR
=
"
$MYSQL_TEST_DIR
/var/log/mysqld.err"
MASTER_MYERR
=
"
$MYSQL_TEST_DIR
/var/log/mysqld.err"
SLAVE_MYPORT
=
9307
SLAVE_MYPORT
=
9307
SLAVE_MYDDIR
=
"
$MYSQL_TEST_DIR
/var/slave-data"
SLAVE_MYDDIR
=
"
$MYSQL_TEST_DIR
/var/slave-data"
SLAVE_MYSOCK
=
"
$MYSQL_T
EST_DIR
/var/tmp
/mysql-slave.sock"
SLAVE_MYSOCK
=
"
$MYSQL_T
MP_DIR
/mysql-slave.sock"
SLAVE_MYPID
=
"
$MY
SQL_TEST_DIR
/var/run
/mysqld-slave.pid"
SLAVE_MYPID
=
"
$MY
RUN_DIR
/mysqld-slave.pid"
SLAVE_MYLOG
=
"
$MYSQL_TEST_DIR
/var/log/mysqld-slave.log"
SLAVE_MYLOG
=
"
$MYSQL_TEST_DIR
/var/log/mysqld-slave.log"
SLAVE_MYERR
=
"
$MYSQL_TEST_DIR
/var/log/mysqld-slave.err"
SLAVE_MYERR
=
"
$MYSQL_TEST_DIR
/var/log/mysqld-slave.err"
...
@@ -92,6 +89,15 @@ else
...
@@ -92,6 +89,15 @@ else
MY_BASEDIR
=
$BASEDIR
MY_BASEDIR
=
$BASEDIR
fi
fi
# Create the directories
# This should be fixed to be not be dependent on the contence of MYSQL_TMP_DIR
# or MYRUN_DIR
# (mkdir -p is not portable)
[
-d
$MYSQL_TEST_DIR
/var
]
||
mkdir
$MYSQL_TEST_DIR
/var
[
-d
$MYSQL_TEST_DIR
/var/tmp
]
||
mkdir
$MYSQL_TEST_DIR
/var/tmp
[
-d
$MYSQL_TEST_DIR
/var/run
]
||
mkdir
$MYSQL_TEST_DIR
/var/run
#++
#++
# Program Definitions
# Program Definitions
#--
#--
...
@@ -124,15 +130,15 @@ else
...
@@ -124,15 +130,15 @@ else
MYSQLD
=
"
$BASEDIR
/bin/mysqld"
MYSQLD
=
"
$BASEDIR
/bin/mysqld"
MYSQL_TEST
=
"
$BASEDIR
/bin/mysqltest"
MYSQL_TEST
=
"
$BASEDIR
/bin/mysqltest"
MYSQLADMIN
=
"
$BASEDIR
/bin/mysqladmin"
MYSQLADMIN
=
"
$BASEDIR
/bin/mysqladmin"
INSTALL_DB
=
".
./scripts
/install_test_db -bin"
INSTALL_DB
=
"./install_test_db -bin"
fi
fi
SLAVE_MYSQLD
=
$MYSQLD
#this will be changed later if we are doing gcov
SLAVE_MYSQLD
=
$MYSQLD
#this will be changed later if we are doing gcov
MYSQL_TEST
=
"
$MYSQL_TEST
--no-defaults --socket=
$MASTER_MYSOCK
--database=
$DB
--user=
$DBUSER
--password=
$DBPASSWD
--silent -v"
MYSQL_TEST
=
"
$MYSQL_TEST
--no-defaults --socket=
$MASTER_MYSOCK
--database=
$DB
--user=
$DBUSER
--password=
$DBPASSWD
--silent -v"
GDB_MASTER_INIT
=
/tmp
/gdbinit.master
GDB_MASTER_INIT
=
$MYSQL_TMP_DIR
/gdbinit.master
GDB_SLAVE_INIT
=
/tmp
/gdbinit.slave
GDB_SLAVE_INIT
=
$MYSQL_TMP_DIR
/gdbinit.slave
while
test
$#
-gt
0
;
do
while
test
$#
-gt
0
;
do
case
"
$1
"
in
case
"
$1
"
in
...
@@ -151,6 +157,16 @@ while test $# -gt 0; do
...
@@ -151,6 +157,16 @@ while test $# -gt 0; do
fi
fi
DO_GDB
=
1
DO_GDB
=
1
;;
;;
--ddd
)
if
[
x
$BINARY_DIST
=
x1
]
;
then
$ECHO
"Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with -gdb option"
fi
DO_DDD
=
1
;;
--debug
)
EXTRA_MASTER_MYSQLD_OPT
=
--debug
=
d:t:O,
$MYSQL_TMP_DIR
/master.trace
EXTRA_SLAVE_MYSQLD_OPT
=
--debug
=
d:t:O,
$MYSQL_TMP_DIR
/slave.trace
;;
--
)
shift
;
break
;;
--
)
shift
;
break
;;
--
*
)
$ECHO
"Unrecognized option:
$1
"
;
exit
1
;;
--
*
)
$ECHO
"Unrecognized option:
$1
"
;
exit
1
;;
*
)
break
;;
*
)
break
;;
...
@@ -200,7 +216,7 @@ total_inc () {
...
@@ -200,7 +216,7 @@ total_inc () {
report_stats
()
{
report_stats
()
{
if
[
$TOT_FAIL
=
0
]
;
then
if
[
$TOT_FAIL
=
0
]
;
then
$ECHO
"All
tests
successful."
$ECHO
"All
$TOT_TEST
tests were
successful."
else
else
xten
=
`
$EXPR
$TOT_PASS
\*
10000
`
xten
=
`
$EXPR
$TOT_PASS
\*
10000
`
raw
=
`
$EXPR
$xten
/
$TOT_TEST
`
raw
=
`
$EXPR
$xten
/
$TOT_TEST
`
...
@@ -216,7 +232,6 @@ mysql_install_db () {
...
@@ -216,7 +232,6 @@ mysql_install_db () {
$ECHO
"Removing Stale Files"
$ECHO
"Removing Stale Files"
$RM
-rf
$MASTER_MYDDIR
$SLAVE_MYDDIR
$SLAVE_MYLOG
$MASTER_MYLOG
\
$RM
-rf
$MASTER_MYDDIR
$SLAVE_MYDDIR
$SLAVE_MYLOG
$MASTER_MYLOG
\
$SLAVE_MYERR
$MASTER_MYERR
$SLAVE_MYERR
$MASTER_MYERR
[
-d
$MYRUN_DIR
]
||
mkdir
-p
$MYRUN_DIR
$ECHO
"Installing Master Databases"
$ECHO
"Installing Master Databases"
$INSTALL_DB
$INSTALL_DB
if
[
$?
!=
0
]
;
then
if
[
$?
!=
0
]
;
then
...
@@ -256,6 +271,8 @@ start_master()
...
@@ -256,6 +271,8 @@ start_master()
{
{
[
x
$MASTER_RUNNING
=
1
]
&&
return
[
x
$MASTER_RUNNING
=
1
]
&&
return
cd
$BASEDIR
# for gcov
cd
$BASEDIR
# for gcov
# Remove old berkeley db log files that can confuse the server
$RM
-f
$MASTER_MYDDIR
/log.
*
#start master
#start master
master_args
=
"--no-defaults --log-bin=master-bin
\
master_args
=
"--no-defaults --log-bin=master-bin
\
--server-id=1
\
--server-id=1
\
...
@@ -266,8 +283,13 @@ start_master()
...
@@ -266,8 +283,13 @@ start_master()
--pid-file=
$MASTER_MYPID
\
--pid-file=
$MASTER_MYPID
\
--socket=
$MASTER_MYSOCK
\
--socket=
$MASTER_MYSOCK
\
--log=
$MASTER_MYLOG
\
--log=
$MASTER_MYLOG
\
--language=english
$EXTRA_MASTER_OPT
"
--language=english
$EXTRA_MASTER_OPT
$EXTRA_MASTER_MYSQLD_OPT
"
if
[
x
$DO_GDB
=
x1
]
if
[
x
$DO_DDD
=
x1
]
then
$ECHO
"set args
$master_args
"
>
$GDB_MASTER_INIT
ddd
--debugger
"gdb -x
$GDB_MASTER_INIT
"
$MYSQLD
&
prompt_user
"Hit enter to continue after you've started the master"
elif
[
x
$DO_GDB
=
x1
]
then
then
$ECHO
"set args
$master_args
"
>
$GDB_MASTER_INIT
$ECHO
"set args
$master_args
"
>
$GDB_MASTER_INIT
xterm
-title
"Master"
-e
gdb
-x
$GDB_MASTER_INIT
$MYSQLD
&
xterm
-title
"Master"
-e
gdb
-x
$GDB_MASTER_INIT
$MYSQLD
&
...
@@ -292,6 +314,7 @@ start_slave()
...
@@ -292,6 +314,7 @@ start_slave()
master_info
=
$SLAVE_MASTER_INFO
master_info
=
$SLAVE_MASTER_INFO
fi
fi
$RM
-f
$SLAVE_MYDDIR
/log.
*
slave_args
=
"--no-defaults
$master_info
\
slave_args
=
"--no-defaults
$master_info
\
--exit-info=256
\
--exit-info=256
\
--log-bin=slave-bin --log-slave-updates
\
--log-bin=slave-bin --log-slave-updates
\
...
@@ -301,8 +324,13 @@ start_slave()
...
@@ -301,8 +324,13 @@ start_slave()
--port=
$SLAVE_MYPORT
\
--port=
$SLAVE_MYPORT
\
--socket=
$SLAVE_MYSOCK
\
--socket=
$SLAVE_MYSOCK
\
--log=
$SLAVE_MYLOG
\
--log=
$SLAVE_MYLOG
\
--language=english
$EXTRA_SLAVE_OPT
"
--language=english
$EXTRA_SLAVE_OPT
$EXTRA_SLAVE_MYSQLD_OPT
"
if
[
x
$DO_GDB
=
x1
]
if
[
x
$DO_DDD
=
x1
]
then
$ECHO
"set args
$master_args
"
>
$GDB_SLAVE_INIT
ddd
--debugger
"gdb -x
$GDB_SLAVE_INIT
"
$MYSQLD
&
prompt_user
"Hit enter to continue after you've started the master"
elif
[
x
$DO_GDB
=
x1
]
then
then
$ECHO
"set args
$slave_args
"
>
$GDB_SLAVE_INIT
$ECHO
"set args
$slave_args
"
>
$GDB_SLAVE_INIT
xterm
-title
"Slave"
-e
gdb
-x
$GDB_SLAVE_INIT
$SLAVE_MYSQLD
&
xterm
-title
"Slave"
-e
gdb
-x
$GDB_SLAVE_INIT
$SLAVE_MYSQLD
&
...
@@ -447,12 +475,12 @@ run_testcase ()
...
@@ -447,12 +475,12 @@ run_testcase ()
cd
$MYSQL_TEST_DIR
cd
$MYSQL_TEST_DIR
if
[
-f
$tf
]
;
then
if
[
-f
$tf
]
;
then
$RM
-f
r/
$tname
.
*
.
reject
$RM
-f
r/
$tname
.
*
reject
mytime
=
`
$TIME
-p
$MYSQL_TEST
-R
r/
$tname
.result
$extra_flags
\
mytime
=
`
$TIME
-p
$MYSQL_TEST
-R
r/
$tname
.result
$extra_flags
\
<
$tf
2>
$TIMEFILE
`
<
$tf
2>
$TIMEFILE
`
res
=
$?
res
=
$?
if
[
$res
=
=
0
]
;
then
if
[
$res
=
0
]
;
then
mytime
=
`
$CAT
$TIMEFILE
|
$TR
'\n'
'-'
`
mytime
=
`
$CAT
$TIMEFILE
|
$TR
'\n'
'-'
`
USERT
=
`
$ECHO
$mytime
|
$CUT
-d
-
-f
2 |
$CUT
-d
' '
-f
2
`
USERT
=
`
$ECHO
$mytime
|
$CUT
-d
-
-f
2 |
$CUT
-d
' '
-f
2
`
...
@@ -473,12 +501,12 @@ run_testcase ()
...
@@ -473,12 +501,12 @@ run_testcase ()
if
[
$res
=
=
0
]
;
then
if
[
$res
=
0
]
;
then
total_inc
total_inc
pass_inc
pass_inc
$ECHO
"
$RES_SPACE
[ pass ]"
$ECHO
"
$RES_SPACE
[ pass ]"
else
else
if
[
$res
=
=
1
]
;
then
if
[
$res
=
1
]
;
then
total_inc
total_inc
fail_inc
fail_inc
$ECHO
"
$RES_SPACE
[ fail ]"
$ECHO
"
$RES_SPACE
[ fail ]"
...
@@ -504,16 +532,24 @@ run_testcase ()
...
@@ -504,16 +532,24 @@ run_testcase ()
}
}
######################################################################
# Main script starts here
######################################################################
[
"
$DO_GCOV
"
-a
!
-x
"
$GCOV
"
]
&&
error
"No gcov found"
[
"
$DO_GCOV
"
-a
!
-x
"
$GCOV
"
]
&&
error
"No gcov found"
[
"
$DO_GCOV
"
]
&&
gcov_prepare
[
"
$DO_GCOV
"
]
&&
gcov_prepare
# Ensure that no old mysqld test servers are running
$MYSQLADMIN
--no-defaults
--socket
=
$MASTER_MYSOCK
-u
root
-O
connect_timeout
=
5 shutdown
>
/dev/null 2>&1
$MYSQLADMIN
--no-defaults
--socket
=
$SLAVE_MYSOCK
-u
root
-O
connect_timeout
=
5 shutdown
>
/dev/null 2>&1
$ECHO
"Installing Test Databases"
$ECHO
"Installing Test Databases"
mysql_install_db
mysql_install_db
#do not automagically start deamons if we are in gdb or running only one test
#do not automagically start deamons if we are in gdb or running only one test
#case
#case
if
[
-z
"
$DO_GDB
"
]
&&
[
-z
"
$1
"
]
if
[
-z
"
$DO_GDB
"
]
&&
[
-z
"
$1
"
]
&&
[
-z
"
$DO_DDD
"
]
then
then
mysql_start
mysql_start
fi
fi
...
@@ -552,7 +588,7 @@ $ECHO
...
@@ -552,7 +588,7 @@ $ECHO
$RM
-f
$TIMEFILE
$RM
-f
$TIMEFILE
if
[
-z
"
$DO_GDB
"
]
;
if
[
-z
"
$DO_GDB
"
]
&&
[
-z
"
$DO_DDD
"
]
then
then
mysql_stop
mysql_stop
fi
fi
...
...
mysql-test/r/key_diff.result
View file @
a3802f9b
...
@@ -28,12 +28,12 @@ table type possible_keys key key_len ref rows Extra
...
@@ -28,12 +28,12 @@ table type possible_keys key key_len ref rows Extra
t1 ALL a NULL NULL NULL 5
t1 ALL a NULL NULL NULL 5
t2 ALL b NULL NULL NULL 5 where used
t2 ALL b NULL NULL NULL 5 where used
a b a b
a b a b
A B b A
a a b A
A B a a
A B a a
A B b A
C c C c
a a a a
a a a a
a a b A
b A A B
b A A B
C c C c
a b
a b
A B
A B
a a
a a
mysql-test/r/type_blob.result
View file @
a3802f9b
...
@@ -242,11 +242,11 @@ HELLO 1
...
@@ -242,11 +242,11 @@ HELLO 1
HELLO MY 1
HELLO MY 1
a 1
a 1
hello 1
hello 1
_field_140 min(t3._field_131) min(t3._field_135) min(t3._field_139) min(t3._field_137) min(link_alias_142._field_165) min(link_alias_133._field_72) min(t3._field_145) min(link_alias_148._field_156)
min(t3._field_140
) t3_id
_field_140 min(t3._field_131) min(t3._field_135) min(t3._field_139) min(t3._field_137) min(link_alias_142._field_165) min(link_alias_133._field_72) min(t3._field_145) min(link_alias_148._field_156)
replace(min(t3._field_140), "\r","^M"
) t3_id
test
test
job
job
1 test job 1 0000-00-00 00:00:00 1999-02-25 22:43:32 0 High admin 0 tomato test
1 test job 1 0000-00-00 00:00:00 1999-02-25 22:43:32 0 High admin 0 tomato test
^M
job
job
^M
1 1
1 1
stamp
stamp
19990402000000
19990402000000
...
...
mysql-test/t/key_diff.test
View file @
a3802f9b
...
@@ -14,6 +14,6 @@ INSERT INTO t1 VALUES ('A','B'),('b','A'),('C','c'),('D','E'),('a','a');
...
@@ -14,6 +14,6 @@ INSERT INTO t1 VALUES ('A','B'),('b','A'),('C','c'),('D','E'),('a','a');
select
*
from
t1
,
t1
as
t2
;
select
*
from
t1
,
t1
as
t2
;
explain
select
t1
.*
,
t2
.*
from
t1
,
t1
as
t2
where
t1
.
A
=
t2
.
B
;
explain
select
t1
.*
,
t2
.*
from
t1
,
t1
as
t2
where
t1
.
A
=
t2
.
B
;
#select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B;
#select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B;
select
t1
.*
,
t2
.*
from
t1
,
t1
as
t2
where
t1
.
A
=
t2
.
B
order
by
t1
.
a
;
select
t1
.*
,
t2
.*
from
t1
,
t1
as
t2
where
t1
.
A
=
t2
.
B
order
by
binary
t1
.
a
,
t2
.
a
;
select
*
from
t1
where
a
=
'a'
;
select
*
from
t1
where
a
=
'a'
;
drop
table
t1
;
drop
table
t1
;
mysql-test/t/type_blob.test
View file @
a3802f9b
...
@@ -203,7 +203,7 @@ INSERT INTO t7 VALUES (1,0,'High',1);
...
@@ -203,7 +203,7 @@ INSERT INTO t7 VALUES (1,0,'High',1);
INSERT
INTO
t7
VALUES
(
2
,
0
,
'Medium'
,
2
);
INSERT
INTO
t7
VALUES
(
2
,
0
,
'Medium'
,
2
);
INSERT
INTO
t7
VALUES
(
3
,
0
,
'Low'
,
3
);
INSERT
INTO
t7
VALUES
(
3
,
0
,
'Low'
,
3
);
select
t3
.
_field_140
,
min
(
t3
.
_field_131
),
min
(
t3
.
_field_135
),
min
(
t3
.
_field_139
),
min
(
t3
.
_field_137
),
min
(
link_alias_142
.
_field_165
),
min
(
link_alias_133
.
_field_72
),
min
(
t3
.
_field_145
),
min
(
link_alias_148
.
_field_156
),
min
(
t3
.
_field_140
),
t3
.
t3_id
from
t3
left
join
t4
on
t4
.
seq_0_id
=
t3
.
t3_id
left
join
t7
link_alias_142
on
t4
.
seq_1_id
=
link_alias_142
.
t7_id
left
join
t6
on
t6
.
seq_0_id
=
t3
.
t3_id
left
join
t1
link_alias_133
on
t6
.
seq_1_id
=
link_alias_133
.
t1_id
left
join
t2
on
t2
.
seq_0_id
=
t3
.
t3_id
left
join
t5
link_alias_148
on
t2
.
seq_1_id
=
link_alias_148
.
t5_id
where
t3
.
t3_id
in
(
1
)
group
by
t3
.
t3_id
order
by
link_alias_142
.
_field_166
,
_field_139
,
link_alias_133
.
_field_72
,
_field_135
,
link_alias_148
.
_field_156
;
select
t3
.
_field_140
,
min
(
t3
.
_field_131
),
min
(
t3
.
_field_135
),
min
(
t3
.
_field_139
),
min
(
t3
.
_field_137
),
min
(
link_alias_142
.
_field_165
),
min
(
link_alias_133
.
_field_72
),
min
(
t3
.
_field_145
),
min
(
link_alias_148
.
_field_156
),
replace
(
min
(
t3
.
_field_140
),
"
\r
"
,
"^M"
),
t3
.
t3_id
from
t3
left
join
t4
on
t4
.
seq_0_id
=
t3
.
t3_id
left
join
t7
link_alias_142
on
t4
.
seq_1_id
=
link_alias_142
.
t7_id
left
join
t6
on
t6
.
seq_0_id
=
t3
.
t3_id
left
join
t1
link_alias_133
on
t6
.
seq_1_id
=
link_alias_133
.
t1_id
left
join
t2
on
t2
.
seq_0_id
=
t3
.
t3_id
left
join
t5
link_alias_148
on
t2
.
seq_1_id
=
link_alias_148
.
t5_id
where
t3
.
t3_id
in
(
1
)
group
by
t3
.
t3_id
order
by
link_alias_142
.
_field_166
,
_field_139
,
link_alias_133
.
_field_72
,
_field_135
,
link_alias_148
.
_field_156
;
drop
table
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
;
drop
table
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
;
...
...
mysys/hash.c
View file @
a3802f9b
...
@@ -108,6 +108,8 @@ static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
...
@@ -108,6 +108,8 @@ static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
return
hash_mask
((
*
hash
->
calc_hashnr
)(
key
,
length
),
buffmax
,
maxlength
);
return
hash_mask
((
*
hash
->
calc_hashnr
)(
key
,
length
),
buffmax
,
maxlength
);
}
}
#ifndef NEW_HASH_FUNCTION
/* Calc hashvalue for a key */
/* Calc hashvalue for a key */
static
uint
calc_hashnr
(
const
byte
*
key
,
uint
length
)
static
uint
calc_hashnr
(
const
byte
*
key
,
uint
length
)
...
@@ -134,6 +136,49 @@ static uint calc_hashnr_caseup(const byte *key,uint length)
...
@@ -134,6 +136,49 @@ static uint calc_hashnr_caseup(const byte *key,uint length)
return
((
uint
)
nr
);
return
((
uint
)
nr
);
}
}
#else
/*
* Fowler/Noll/Vo hash
*
* The basis of the hash algorithm was taken from an idea sent by email to the
* IEEE Posix P1003.2 mailing list from Phong Vo (kpv@research.att.com) and
* Glenn Fowler (gsf@research.att.com). Landon Curt Noll (chongo@toad.com)
* later improved on their algorithm.
*
* The magic is in the interesting relationship between the special prime
* 16777619 (2^24 + 403) and 2^32 and 2^8.
*
* This hash produces the fewest collisions of any function that we've seen so
* far, and works well on both numbers and strings.
*/
uint
calc_hashnr
(
const
byte
*
key
,
uint
len
)
{
const
byte
*
end
=
key
+
len
;
uint
hash
;
for
(
hash
=
0
;
key
<
end
;
key
++
)
{
hash
*=
16777619
;
hash
^=
(
uint
)
*
(
uchar
*
)
key
;
}
return
(
hash
);
}
uint
calc_hashnr_caseup
(
const
byte
*
key
,
uint
len
)
{
const
byte
*
end
=
key
+
len
;
uint
hash
;
for
(
hash
=
0
;
key
<
end
;
key
++
)
{
hash
*=
16777619
;
hash
^=
(
uint
)
(
uchar
)
toupper
(
*
key
);
}
return
(
hash
);
}
#endif
static
inline
uint
rec_hashnr
(
HASH
*
hash
,
const
byte
*
record
)
static
inline
uint
rec_hashnr
(
HASH
*
hash
,
const
byte
*
record
)
{
{
...
...
scripts/mysqld_multi.sh
View file @
a3802f9b
...
@@ -10,7 +10,7 @@ $opt_config_file = undef();
...
@@ -10,7 +10,7 @@ $opt_config_file = undef();
$opt_example
=
0
;
$opt_example
=
0
;
$opt_help
=
0
;
$opt_help
=
0
;
$opt_log
=
"/tmp/mysqld_multi.log"
;
$opt_log
=
"/tmp/mysqld_multi.log"
;
$opt_mysqladmin
=
"mysqladmin"
;
$opt_mysqladmin
=
"
@bindir@/
mysqladmin"
;
$opt_mysqld
=
"@libexecdir@/mysqld"
;
$opt_mysqld
=
"@libexecdir@/mysqld"
;
$opt_no_log
=
0
;
$opt_no_log
=
0
;
$opt_password
=
undef
()
;
$opt_password
=
undef
()
;
...
...
scripts/safe_mysqld.sh
View file @
a3802f9b
...
@@ -51,6 +51,7 @@ parse_arguments() {
...
@@ -51,6 +51,7 @@ parse_arguments() {
--open-files-limit
=
*
)
open_files
=
`
echo
"
$arg
"
|
sed
-e
"s;--open-files-limit=;;"
`
;;
--open-files-limit
=
*
)
open_files
=
`
echo
"
$arg
"
|
sed
-e
"s;--open-files-limit=;;"
`
;;
--core-file-size
=
*
)
core_file_size
=
`
echo
"
$arg
"
|
sed
-e
"s;--core_file_size=;;"
`
;;
--core-file-size
=
*
)
core_file_size
=
`
echo
"
$arg
"
|
sed
-e
"s;--core_file_size=;;"
`
;;
--timezone
=
*
)
TZ
=
`
echo
"
$arg
"
|
sed
-e
"s;--timezone=;;"
`
;
export
TZ
;
;;
--timezone
=
*
)
TZ
=
`
echo
"
$arg
"
|
sed
-e
"s;--timezone=;;"
`
;
export
TZ
;
;;
--mysqld
=
*
)
MYSQLD
=
`
echo
"
$arg
"
|
sed
-e
"s;--mysqld=;;"
`
;;
*
)
*
)
if
test
-n
"
$pick_args
"
if
test
-n
"
$pick_args
"
then
then
...
@@ -87,6 +88,7 @@ fi
...
@@ -87,6 +88,7 @@ fi
MYSQL_UNIX_PORT
=
${
MYSQL_UNIX_PORT
:-
@MYSQL_UNIX_ADDR@
}
MYSQL_UNIX_PORT
=
${
MYSQL_UNIX_PORT
:-
@MYSQL_UNIX_ADDR@
}
MYSQL_TCP_PORT
=
${
MYSQL_TCP_PORT
:-
@MYSQL_TCP_PORT@
}
MYSQL_TCP_PORT
=
${
MYSQL_TCP_PORT
:-
@MYSQL_TCP_PORT@
}
user
=
@MYSQLD_USER@
user
=
@MYSQLD_USER@
MYSQLD
=
mysqld
# these rely on $DATADIR by default, so we'll set them later on
# these rely on $DATADIR by default, so we'll set them later on
pid_file
=
pid_file
=
...
@@ -111,9 +113,9 @@ args=
...
@@ -111,9 +113,9 @@ args=
parse_arguments
`
$print_defaults
$defaults
mysqld safe_mysqld
`
parse_arguments
`
$print_defaults
$defaults
mysqld safe_mysqld
`
parse_arguments PICK-ARGS-FROM-ARGV
"
$@
"
parse_arguments PICK-ARGS-FROM-ARGV
"
$@
"
if
test
!
-x
$ledir
/
mysqld
if
test
!
-x
$ledir
/
$MYSQLD
then
then
echo
"The file
$ledir
/
mysqld
doesn't exist or is not executable"
echo
"The file
$ledir
/
$MYSQLD
doesn't exist or is not executable"
echo
"Please do a cd to the mysql installation directory and restart"
echo
"Please do a cd to the mysql installation directory and restart"
echo
"this script from there as follows:"
echo
"this script from there as follows:"
echo
"./bin/safe_mysqld"
.
echo
"./bin/safe_mysqld"
.
...
@@ -195,7 +197,7 @@ fi
...
@@ -195,7 +197,7 @@ fi
# $MY_BASEDIR_VERSION/bin/myisamchk --silent --force --fast --medium-check -O key_buffer=64M -O sort_buffer=64M $DATADIR/*/*.MYI
# $MY_BASEDIR_VERSION/bin/myisamchk --silent --force --fast --medium-check -O key_buffer=64M -O sort_buffer=64M $DATADIR/*/*.MYI
# $MY_BASEDIR_VERSION/bin/isamchk --silent --force -O sort_buffer=64M $DATADIR/*/*.ISM
# $MY_BASEDIR_VERSION/bin/isamchk --silent --force -O sort_buffer=64M $DATADIR/*/*.ISM
echo
"Starting
mysqld
daemon with databases from
$DATADIR
"
echo
"Starting
$MYSQLD
daemon with databases from
$DATADIR
"
# Does this work on all systems?
# Does this work on all systems?
#if type ulimit | grep "shell builtin" > /dev/null
#if type ulimit | grep "shell builtin" > /dev/null
...
@@ -209,9 +211,9 @@ do
...
@@ -209,9 +211,9 @@ do
rm
-f
$MYSQL_UNIX_PORT
$pid_file
# Some extra safety
rm
-f
$MYSQL_UNIX_PORT
$pid_file
# Some extra safety
if
test
-z
"
$args
"
if
test
-z
"
$args
"
then
then
$NOHUP_NICENESS
$ledir
/
mysqld
$defaults
--basedir
=
$MY_BASEDIR_VERSION
--datadir
=
$DATADIR
--user
=
$user
--pid-file
=
$pid_file
@MYSQLD_DEFAULT_SWITCHES@
>>
$err_log
2>&1
$NOHUP_NICENESS
$ledir
/
$MYSQLD
$defaults
--basedir
=
$MY_BASEDIR_VERSION
--datadir
=
$DATADIR
--user
=
$user
--pid-file
=
$pid_file
@MYSQLD_DEFAULT_SWITCHES@
>>
$err_log
2>&1
else
else
eval
"
$NOHUP_NICENESS
$ledir
/
mysqld
$defaults
--basedir=
$MY_BASEDIR_VERSION
--datadir=
$DATADIR
--user=
$user
--pid-file=
$pid_file
@MYSQLD_DEFAULT_SWITCHES@
$args
>>
$err_log
2>&1"
eval
"
$NOHUP_NICENESS
$ledir
/
$MYSQLD
$defaults
--basedir=
$MY_BASEDIR_VERSION
--datadir=
$DATADIR
--user=
$user
--pid-file=
$pid_file
@MYSQLD_DEFAULT_SWITCHES@
$args
>>
$err_log
2>&1"
fi
fi
if
test
!
-f
$pid_file
# This is removed if normal shutdown
if
test
!
-f
$pid_file
# This is removed if normal shutdown
then
then
...
@@ -225,12 +227,12 @@ do
...
@@ -225,12 +227,12 @@ do
# but should work for the rest of the servers.
# but should work for the rest of the servers.
# The only thing is ps x => redhat 5 gives warnings when using ps -x.
# The only thing is ps x => redhat 5 gives warnings when using ps -x.
# kill -9 is used or the process won't react on the kill.
# kill -9 is used or the process won't react on the kill.
numofproces
=
`
ps xa |
grep
-v
"grep"
|
grep
-c
$ledir
/
mysqld
`
numofproces
=
`
ps xa |
grep
-v
"grep"
|
grep
-c
$ledir
/
$MYSQLD
`
echo
-e
"
\n
Number of processes running now:
$numofproces
"
|
tee
-a
$err_log
echo
-e
"
\n
Number of processes running now:
$numofproces
"
|
tee
-a
$err_log
I
=
1
I
=
1
while
test
"
$I
"
-le
"
$numofproces
"
while
test
"
$I
"
-le
"
$numofproces
"
do
do
PROC
=
`
ps xa |
grep
$ledir
/
mysqld
|
grep
-v
"grep"
|
tail
-1
`
PROC
=
`
ps xa |
grep
$ledir
/
$MYSQLD
|
grep
-v
"grep"
|
tail
-1
`
for
T
in
$PROC
for
T
in
$PROC
do
do
break
break
...
@@ -238,7 +240,7 @@ do
...
@@ -238,7 +240,7 @@ do
# echo "TEST $I - $T **"
# echo "TEST $I - $T **"
if
kill
-9
$T
if
kill
-9
$T
then
then
echo
"
mysqld
process hanging, pid
$T
- killed"
|
tee
-a
$err_log
echo
"
$MYSQLD
process hanging, pid
$T
- killed"
|
tee
-a
$err_log
else
else
break
break
fi
fi
...
...
sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 17:24:55
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 15:29:27
ATIS table test
ATIS table test
...
@@ -6,14 +6,15 @@ Creating tables
...
@@ -6,14 +6,15 @@ Creating tables
Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
Inserting data
Time to insert (9768):
4 wallclock secs ( 0.64 usr 0.64
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to insert (9768):
3 wallclock secs ( 0.64 usr 0.61
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data
Retrieving data
Time for select_simple_join (500): 1 wallclock secs ( 0.66 usr 0.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_simple_join (500): 2 wallclock secs ( 0.62 usr 0.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (200): 12 wallclock secs ( 4.45 usr 3.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (100): 2 wallclock secs ( 0.47 usr 0.35 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_distinct (800): 11 wallclock secs ( 1.77 usr 0.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix_join (100): 10 wallclock secs ( 3.80 usr 2.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 10 wallclock secs ( 1.59 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_distinct (800): 11 wallclock secs ( 1.63 usr 1.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 10 wallclock secs ( 1.48 usr 0.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables
Removing tables
Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 38 wallclock secs (
9.13 usr 5.79
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 38 wallclock secs (
8.65 usr 5.80
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
This diff is collapsed.
Click to expand it.
sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 17:25:34
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 15:30:07
Testing of ALTER TABLE
Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps
Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table
Insert data into the table
Time for insert (1000) 0 wallclock secs ( 0.06 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for insert (1000) 0 wallclock secs ( 0.06 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_add (992): 213 wallclock secs ( 0.17 usr 0.0
7
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_add (992): 213 wallclock secs ( 0.17 usr 0.0
6
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_drop (496): 17
0 wallclock secs ( 0.07 usr 0.03
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_drop (496): 17
5 wallclock secs ( 0.06 usr 0.04
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 39
1 wallclock secs ( 0.31
usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 39
6 wallclock secs ( 0.30
usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 17:32:05
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 15:36:43
Testing of some unusual tables
Testing of some unusual tables
All tests are done 1000 times with 1000 fields
All tests are done 1000 times with 1000 fields
Testing table with 1000 fields
Testing table with 1000 fields
Testing select * from table with 1 record
Testing select * from table with 1 record
Time to select_many_fields(1000): 10 wallclock secs ( 3.
93 usr 5.07
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_many_fields(1000): 10 wallclock secs ( 3.
89 usr 5.32
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record
Testing select all_fields from table with 1 record
Time to select_many_fields(1000): 16 wallclock secs ( 4.0
6 usr 5.04
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_many_fields(1000): 16 wallclock secs ( 4.0
5 usr 5.28
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES()
Testing insert VALUES()
Time to insert_many_fields(1000): 5 wallclock secs ( 0.3
3
usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to insert_many_fields(1000): 5 wallclock secs ( 0.3
2
usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES()
Testing insert (all_fields) VALUES()
Time to insert_many_fields(1000): 9 wallclock secs ( 0.0
2
usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to insert_many_fields(1000): 9 wallclock secs ( 0.0
3
usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 41 wallclock secs ( 8.3
5 usr 10.24
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 41 wallclock secs ( 8.3
0 usr 10.73
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 17:32:46
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 15:37:25
Testing the speed of connecting to the server and sending of data
Testing the speed of connecting to the server and sending of data
All tests are done 10000 times
All tests are done 10000 times
Testing connection/disconnect
Testing connection/disconnect
Time to connect (10000): 1
4 wallclock secs ( 7.49
usr 2.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to connect (10000): 1
3 wallclock secs ( 7.51
usr 2.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect
Test connect/simple select/disconnect
Time for connect+select_simple (10000): 1
5 wallclock secs ( 7.61 usr 3.24
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for connect+select_simple (10000): 1
6 wallclock secs ( 7.69 usr 3.23
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select
Test simple select
Time for select_simple (10000):
2 wallclock secs ( 0.28 usr 0.77
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_simple (10000):
1 wallclock secs ( 0.31 usr 0.80
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect
Testing connect/select 1 row from table/disconnect
Time to connect+select_1_row (10000): 17 wallclock secs ( 7.
59 usr 3.33
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to connect+select_1_row (10000): 17 wallclock secs ( 7.
95 usr 3.44
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table
Testing select 1 row from table
Time to select_1_row (10000): 2 wallclock secs ( 0.
35 usr 0.95
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_1_row (10000): 2 wallclock secs ( 0.
46 usr 1.12
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table
Testing select 2 rows from table
Time to select_2_rows (10000): 3 wallclock secs ( 0.3
4
usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_2_rows (10000): 3 wallclock secs ( 0.3
6
usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+)
Test select with aritmetic (+)
Time for select_column+column (10000): 3 wallclock secs ( 0.2
6 usr 0.67
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_column+column (10000): 3 wallclock secs ( 0.2
8 usr 0.76
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes)
Testing retrieval of big records (65000 bytes)
Time to select_big (10000):
20 wallclock secs ( 7.74 usr 6.67
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_big (10000):
19 wallclock secs ( 7.75 usr 6.19
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 7
6 wallclock secs (31.66 usr 19.05
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 7
4 wallclock secs (32.31 usr 18.97
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 17:34:02
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 15:38:39
Testing the speed of creating and droping tables
Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count
Testing with 10000 tables and 10000 loop count
Testing create of tables
Testing create of tables
Time for create_MANY_tables (10000):
90 wallclock secs ( 1.79 usr 0.64
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_MANY_tables (10000):
164 wallclock secs ( 1.93 usr 0.57
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Accessing tables
Accessing tables
Time to select_group_when_MANY_tables (10000): 6 wallclock secs ( 0.
96 usr 0.87
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to select_group_when_MANY_tables (10000): 6 wallclock secs ( 0.
84 usr 0.83
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing drop
Testing drop
Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.6
2 usr 0.61
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.6
8 usr 0.64
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing create+drop
Testing create+drop
Time for create+drop (10000): 13 wallclock secs ( 2.
68 usr 1.04
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create+drop (10000): 13 wallclock secs ( 2.
77 usr 1.02
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_key+drop (10000): 17 wallclock secs ( 4.1
8 usr 1.32
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_key+drop (10000): 17 wallclock secs ( 4.1
4 usr 1.36
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time:
133 wallclock secs (10.24 usr 4.48
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time:
207 wallclock secs (10.36 usr 4.42
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
This diff is collapsed.
Click to expand it.
sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 18:06:37
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 16:14:21
Testing the speed of selecting on keys that consist of many parts
Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges.
The test-table has 10000 rows and the test is done with 500 ranges.
Creating table
Creating table
Inserting 10000 rows
Inserting 10000 rows
Time to insert (10000):
4 wallclock secs ( 0.76 usr 0.58
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to insert (10000):
3 wallclock secs ( 0.72 usr 0.71
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table
Testing big selects on the table
Time for select_big (70:17207): 1 wallclock secs ( 0.14 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_big (70:17207): 1 wallclock secs ( 0.14 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range (410:1057904): 22
9 wallclock secs ( 8.56 usr 5.62
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range (410:1057904): 22
7 wallclock secs ( 9.67 usr 5.91
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 1
66 wallclock secs (21.04 usr 6.26
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 1
53 wallclock secs (21.55 usr 6.38
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 3
89 wallclock secs (15.72 usr 4.52
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 3
55 wallclock secs (16.42 usr 4.53
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000):
40 wallclock secs ( 1.00 usr 0.61
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000):
38 wallclock secs ( 1.16 usr 0.66
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table
Testing count(distinct) on the table
Time for count_distinct (2000:2000):
92 wallclock secs ( 0.69
usr 0.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct (2000:2000):
102 wallclock secs ( 0.71
usr 0.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key (1000:6000): 42 wallclock secs ( 0.4
3 usr 0.14
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key (1000:6000): 42 wallclock secs ( 0.4
5 usr 0.16
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 6
3 wallclock secs ( 1.10 usr 0.62
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 6
2 wallclock secs ( 1.20 usr 0.66
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 6
4 wallclock secs ( 1.06 usr 0.66
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 6
3 wallclock secs ( 1.16 usr 0.69
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 8
0 wallclock secs ( 7.23 usr 8.53
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 8
1 wallclock secs ( 8.00 usr 9.24
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 11
70 wallclock secs (57.76 usr 27.85
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 11
27 wallclock secs (61.16 usr 29.24
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha
View file @
a3802f9b
Testing server 'MySQL 3.23.
29 gamma' at 2000-11-28 18:26:07
Testing server 'MySQL 3.23.
30 gamma' at 2000-12-28 16:33:09
Wisconsin benchmark test
Wisconsin benchmark test
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
Inserting data
Time to insert (31000): 14 wallclock secs ( 1.8
2 usr 1.89
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to insert (31000): 14 wallclock secs ( 1.8
7 usr 1.88
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark
Running actual benchmark
Time for wisc_benchmark (114): 4 wallclock secs ( 1.
88 usr 0.93
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for wisc_benchmark (114): 4 wallclock secs ( 1.
71 usr 0.98
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 18 wallclock secs ( 3.
70 usr 2.82
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 18 wallclock secs ( 3.
58 usr 2.86
sys + 0.00 cusr 0.00 csys = 0.00 CPU)
sql/ha_innobase.cc
View file @
a3802f9b
...
@@ -1971,10 +1971,16 @@ ha_innobase::external_lock(
...
@@ -1971,10 +1971,16 @@ ha_innobase::external_lock(
THR_LOCK_DATA
**
ha_innobase
::
store_lock
(
THD
*
thd
,
THR_LOCK_DATA
**
to
,
THR_LOCK_DATA
**
ha_innobase
::
store_lock
(
THD
*
thd
,
THR_LOCK_DATA
**
to
,
enum
thr_lock_type
lock_type
)
enum
thr_lock_type
lock_type
)
{
{
/*??????????????????*/
if
(
lock_type
!=
TL_IGNORE
&&
lock
.
type
==
TL_UNLOCK
)
{
/* If we are not doing a LOCK TABLE, then allow multiple writers */
if
((
lock_type
>=
TL_WRITE_CONCURRENT_INSERT
&&
lock_type
<=
TL_WRITE
)
&&
!
thd
->
in_lock_tables
)
lock_type
=
TL_WRITE_ALLOW_WRITE
;
lock
.
type
=
lock_type
;
}
*
to
++=
&
lock
;
*
to
++=
&
lock
;
return
(
to
);
return
(
to
);
}
}
...
...
sql/mysqld.cc
View file @
a3802f9b
...
@@ -1082,9 +1082,10 @@ inline static __volatile__ void trace_stack()
...
@@ -1082,9 +1082,10 @@ inline static __volatile__ void trace_stack()
uchar
**
stack_bottom
;
uchar
**
stack_bottom
;
uchar
**
ebp
;
uchar
**
ebp
;
LINT_INIT
(
ebp
);
LINT_INIT
(
ebp
);
fprintf
(
stderr
,
"Attemping backtrace, please send the info below to \
fprintf
(
stderr
,
bugs@lists.mysql.com. If you see no messages after this, something \
"Attemping backtrace. You can use the following information to find out
\n
\
went terribly wrong - report this anyway
\n
"
);
where mysqld died. If you see no messages after this, something went
\n
\
terribly wrong
\n
"
);
THD
*
thd
=
current_thd
;
THD
*
thd
=
current_thd
;
uint
frame_count
=
0
;
uint
frame_count
=
0
;
__asm
__volatile__
(
"movl %%ebp,%0"
__asm
__volatile__
(
"movl %%ebp,%0"
...
@@ -1092,7 +1093,7 @@ went terribly wrong - report this anyway\n");
...
@@ -1092,7 +1093,7 @@ went terribly wrong - report this anyway\n");
:
"r"
(
ebp
));
:
"r"
(
ebp
));
if
(
!
ebp
)
if
(
!
ebp
)
{
{
fprintf
(
stderr
,
"frame pointer (ebp) is NULL, did you compile with
\
fprintf
(
stderr
,
"frame pointer (ebp) is NULL, did you compile with
\n
\
-fomit-frame-pointer? Aborting backtrace
\n
"
);
-fomit-frame-pointer? Aborting backtrace
\n
"
);
return
;
return
;
}
}
...
@@ -1143,9 +1144,9 @@ static sig_handler handle_segfault(int sig)
...
@@ -1143,9 +1144,9 @@ static sig_handler handle_segfault(int sig)
segfaulted
=
1
;
segfaulted
=
1
;
fprintf
(
stderr
,
"\
fprintf
(
stderr
,
"\
mysqld got signal %d;
\n
\
mysqld got signal %d;
\n
\
The manual section 'Debugging a MySQL server' tells you how to use a
\n
\
The manual section 'Debugging a MySQL server' tells you how to use a
\n
\
debugger on the core file to produce a backtrace that may help you find out
\n
\
stack trace and/or the core file to produce a readable backtrace that may
\n
\
why mysqld died
\n
"
,
sig
);
help in finding out
why mysqld died
\n
"
,
sig
);
#if defined(HAVE_LINUXTHREADS)
#if defined(HAVE_LINUXTHREADS)
#ifdef __i386__
#ifdef __i386__
trace_stack
();
trace_stack
();
...
@@ -1622,12 +1623,14 @@ int main(int argc, char **argv)
...
@@ -1622,12 +1623,14 @@ int main(int argc, char **argv)
{
{
server_id
=
!
master_host
?
1
:
2
;
server_id
=
!
master_host
?
1
:
2
;
switch
(
server_id
)
{
switch
(
server_id
)
{
#ifdef EXTRA_DEBUG
case
1
:
case
1
:
sql_print_error
(
"\
sql_print_error
(
"\
Warning: one should set server_id to a non-0 value if log-bin is enabled.
\n
\
Warning: one should set server_id to a non-0 value if log-bin is enabled.
\n
\
Will log updates to binary log, but will not accept connections from slaves"
);
Will log updates to binary log, but will not accept connections from slaves"
);
break
;
break
;
default:
#endif
case
2
:
sql_print_error
(
"\
sql_print_error
(
"\
Warning: one should set server_id to a non-0 value if master_host is set.
\n
\
Warning: one should set server_id to a non-0 value if master_host is set.
\n
\
The server will not act as a slave"
);
The server will not act as a slave"
);
...
@@ -2351,7 +2354,8 @@ enum options {
...
@@ -2351,7 +2354,8 @@ enum options {
OPT_INNOBASE_DATA_HOME_DIR
,
OPT_INNOBASE_DATA_FILE_PATH
,
OPT_INNOBASE_DATA_HOME_DIR
,
OPT_INNOBASE_DATA_FILE_PATH
,
OPT_INNOBASE_LOG_GROUP_HOME_DIR
,
OPT_INNOBASE_LOG_GROUP_HOME_DIR
,
OPT_INNOBASE_LOG_ARCH_DIR
,
OPT_INNOBASE_LOG_ARCHIVE
,
OPT_INNOBASE_LOG_ARCH_DIR
,
OPT_INNOBASE_LOG_ARCHIVE
,
OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT
,
OPT_SAFE_SHOW_DB
OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT
,
OPT_SAFE_SHOW_DB
,
OPT_GEMINI_SKIP
,
};
};
static
struct
option
long_options
[]
=
{
static
struct
option
long_options
[]
=
{
...
@@ -2462,6 +2466,9 @@ static struct option long_options[] = {
...
@@ -2462,6 +2466,9 @@ static struct option long_options[] = {
#endif
#endif
#ifdef HAVE_INNOBASE_DB
#ifdef HAVE_INNOBASE_DB
{
"skip-innobase"
,
no_argument
,
0
,
(
int
)
OPT_INNOBASE_SKIP
},
{
"skip-innobase"
,
no_argument
,
0
,
(
int
)
OPT_INNOBASE_SKIP
},
#endif
#ifdef HAVE_GEMINI_DB
{
"skip-gemini"
,
no_argument
,
0
,
(
int
)
OPT_GEMINI_SKIP
},
#endif
#endif
{
"skip-concurrent-insert"
,
no_argument
,
0
,
(
int
)
OPT_SKIP_CONCURRENT_INSERT
},
{
"skip-concurrent-insert"
,
no_argument
,
0
,
(
int
)
OPT_SKIP_CONCURRENT_INSERT
},
{
"skip-delay-key-write"
,
no_argument
,
0
,
(
int
)
OPT_SKIP_DELAY_KEY_WRITE
},
{
"skip-delay-key-write"
,
no_argument
,
0
,
(
int
)
OPT_SKIP_DELAY_KEY_WRITE
},
...
@@ -2544,7 +2551,7 @@ CHANGEABLE_VAR changeable_vars[] = {
...
@@ -2544,7 +2551,7 @@ CHANGEABLE_VAR changeable_vars[] = {
{
"lower_case_table_names"
,
(
long
*
)
&
lower_case_table_names
,
{
"lower_case_table_names"
,
(
long
*
)
&
lower_case_table_names
,
IF_WIN
(
1
,
0
),
0
,
1
,
0
,
1
},
IF_WIN
(
1
,
0
),
0
,
1
,
0
,
1
},
{
"max_allowed_packet"
,
(
long
*
)
&
max_allowed_packet
,
{
"max_allowed_packet"
,
(
long
*
)
&
max_allowed_packet
,
1024
*
1024L
,
80
,
17
*
1024
*
1024L
,
MALLOC_OVERHEAD
,
1024
},
1024
*
1024L
,
80
,
64
*
1024
*
1024L
,
MALLOC_OVERHEAD
,
1024
},
{
"max_binlog_cache_size"
,
(
long
*
)
&
max_binlog_cache_size
,
{
"max_binlog_cache_size"
,
(
long
*
)
&
max_binlog_cache_size
,
~
0L
,
IO_SIZE
,
~
0L
,
0
,
IO_SIZE
},
~
0L
,
IO_SIZE
,
~
0L
,
0
,
IO_SIZE
},
{
"max_connections"
,
(
long
*
)
&
max_connections
,
{
"max_connections"
,
(
long
*
)
&
max_connections
,
...
@@ -3387,6 +3394,12 @@ static void get_options(int argc,char **argv)
...
@@ -3387,6 +3394,12 @@ static void get_options(int argc,char **argv)
have_berkeley_db
=
SHOW_OPTION_DISABLED
;
have_berkeley_db
=
SHOW_OPTION_DISABLED
;
break
;
break
;
#endif
#endif
#ifdef HAVE_GEMINI_DB
case
OPT_GEMINI_SKIP
:
gemini_skip
=
1
;
have_gemini_db
=
SHOW_OPTION_DISABLED
;
break
;
#endif
#ifdef HAVE_INNOBASE_DB
#ifdef HAVE_INNOBASE_DB
case
OPT_INNOBASE_SKIP
:
case
OPT_INNOBASE_SKIP
:
innobase_skip
=
1
;
innobase_skip
=
1
;
...
...
sql/sql_table.cc
View file @
a3802f9b
...
@@ -1426,7 +1426,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
...
@@ -1426,7 +1426,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
{
{
char
path
[
FN_REFLEN
];
char
path
[
FN_REFLEN
];
(
void
)
sprintf
(
path
,
"%s/%s/%s"
,
mysql_data_home
,
new_db
,
tmp_name
);
(
void
)
sprintf
(
path
,
"%s/%s/%s"
,
mysql_data_home
,
new_db
,
tmp_name
);
fn_format
(
path
,
path
,
""
,
""
,
4
+
16
+
32
);
fn_format
(
path
,
path
,
""
,
""
,
4
);
new_table
=
open_temporary_table
(
thd
,
path
,
new_db
,
tmp_name
,
0
);
new_table
=
open_temporary_table
(
thd
,
path
,
new_db
,
tmp_name
,
0
);
}
}
if
(
!
new_table
)
if
(
!
new_table
)
...
...
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