Commit 08a2c58e authored by monty@donna.mysql.com's avatar monty@donna.mysql.com

Fixed bug in 'drop table'

Portability fixes
parent af297a21
...@@ -27761,6 +27761,7 @@ How big a @code{VARCHAR} column can be ...@@ -27761,6 +27761,7 @@ How big a @code{VARCHAR} column can be
* mysqldump:: Dumping the structure and data from @strong{MySQL} databases and tables * mysqldump:: Dumping the structure and data from @strong{MySQL} databases and tables
* mysqlimport:: Importing data from text files * mysqlimport:: Importing data from text files
* mysqlshow:: Showing databases, tables and columns * mysqlshow:: Showing databases, tables and columns
* perror:: Displaying error messages
* myisampack:: The @strong{MySQL} compressed read-only table generator * myisampack:: The @strong{MySQL} compressed read-only table generator
@end menu @end menu
...@@ -28559,7 +28560,7 @@ mysqldump --all-databases > all_databases.sql ...@@ -28559,7 +28560,7 @@ mysqldump --all-databases > all_databases.sql
@cindex files, text @cindex files, text
@cindex text files, importing @cindex text files, importing
@cindex @code{mysqlimport} @cindex @code{mysqlimport}
@node mysqlimport, mysqlshow, mysqldump, Tools @node mysqlimport, perror, mysqldump, Tools
@section Importing Data from Text Files @section Importing Data from Text Files
@code{mysqlimport} provides a command-line interface to the @code{LOAD DATA @code{mysqlimport} provides a command-line interface to the @code{LOAD DATA
...@@ -28696,12 +28697,34 @@ $ mysql -e 'SELECT * FROM imptest' test ...@@ -28696,12 +28697,34 @@ $ mysql -e 'SELECT * FROM imptest' test
+------+---------------+ +------+---------------+
@end example @end example
@cindex error messages, displaying
@cindex perror
@node perror, mysqlshow, mysqlimport, Tools
@section Converting an error code to the corresponding error message
@code{perror} can be used to print error message(s). @code{perror} can
be invoked like this:
@example
shell> perror [OPTIONS] [ERRORCODE [ERRORCODE...]]
For example:
shell> perror 64 79
Error code 64: Machine is not on the network
Error code 79: Can not access a needed shared library
@end example
@code{perror} can be used to display a description for a system error
code, or an MyISAM/ISAM table handler error code. The error messages
are mostly system dependent.
@cindex databases, displaying @cindex databases, displaying
@cindex displaying, database information @cindex displaying, database information
@cindex tables, displaying @cindex tables, displaying
@cindex columns, displaying @cindex columns, displaying
@cindex showing, database information @cindex showing, database information
@node mysqlshow, myisampack, mysqlimport, Tools @node mysqlshow, myisampack, perror, Tools
@section Showing Databases, Tables, and Columns @section Showing Databases, Tables, and Columns
@code{mysqlshow} can be used to quickly look at which databases exist, @code{mysqlshow} can be used to quickly look at which databases exist,
...@@ -32091,6 +32114,14 @@ tmpdir=C:/temp ...@@ -32091,6 +32114,14 @@ tmpdir=C:/temp
assuming that the @file{c:\\temp} directory exists. @xref{Option files}. assuming that the @file{c:\\temp} directory exists. @xref{Option files}.
Check also the error code that you get with @code{perror}. One reason
may also be a disk full error;
@example
shell >perror 28
Error code 28: No space left on device
@end example
@cindex commands out of sync @cindex commands out of sync
@node Commands out of sync, Ignoring user, Cannot create, Common errors @node Commands out of sync, Ignoring user, Cannot create, Common errors
@subsection @code{Commands out of sync} error in client @subsection @code{Commands out of sync} error in client
...@@ -38932,10 +38963,12 @@ though, so Version 3.23 is not released as a stable version yet. ...@@ -38932,10 +38963,12 @@ though, so Version 3.23 is not released as a stable version yet.
Automatically remove Berkeley DB transaction logs that are no longer in Automatically remove Berkeley DB transaction logs that are no longer in
use. use.
@item @item
Added a warning if number of rows changes on @code{REPAIR}/@code{OPTIMIZE}.
@item
Applied patches for OS2 by @code{Yuri Dario}. Applied patches for OS2 by @code{Yuri Dario}.
@item @item
@code{FLUSH TABLES table_name} didn't always flush table properly to @code{FLUSH TABLES table_name} didn't always flush the index tree
disk; One some cases the index tree wasn't completely written to disk. properly to disk.
@item @item
@code{--bootstrap} is now run in a separate thread. This fixes the problem @code{--bootstrap} is now run in a separate thread. This fixes the problem
that @code{mysql_install_db} core dumped on some Linux machines. that @code{mysql_install_db} core dumped on some Linux machines.
...@@ -108,7 +108,7 @@ int chk_status(MI_CHECK *param, register MI_INFO *info) ...@@ -108,7 +108,7 @@ int chk_status(MI_CHECK *param, register MI_INFO *info)
else if (mi_is_crashed(info)) else if (mi_is_crashed(info))
mi_check_print_warning(param, mi_check_print_warning(param,
"Table is marked as crashed"); "Table is marked as crashed");
if (share->state.open_count != (info->s->global_changed ? 1 : 0)) if (share->state.open_count != (uint) (info->s->global_changed ? 1 : 0))
{ {
mi_check_print_warning(param, mi_check_print_warning(param,
"%d clients is using or hasn't closed the table properly", "%d clients is using or hasn't closed the table properly",
......
...@@ -36,7 +36,8 @@ WARNING: THIS IS VERY MUCH A FIRST-CUT ALPHA. Comments/patches welcome. ...@@ -36,7 +36,8 @@ WARNING: THIS IS VERY MUCH A FIRST-CUT ALPHA. Comments/patches welcome.
# Documentation continued at end of file # Documentation continued at end of file
my $VERSION = "1.8"; my $VERSION = "1.9";
my $opt_tmpdir= $main::env{TMPDIR};
my $OPTIONS = <<"_OPTIONS"; my $OPTIONS = <<"_OPTIONS";
...@@ -50,7 +51,7 @@ Usage: $0 db_name [new_db_name | directory] ...@@ -50,7 +51,7 @@ Usage: $0 db_name [new_db_name | directory]
--allowold don't abort if target already exists (rename it _old) --allowold don't abort if target already exists (rename it _old)
--keepold don't delete previous (now renamed) target when done --keepold don't delete previous (now renamed) target when done
--indices include index files in copy --noindices don't include full index files in copy
--method=# method for copy (only "cp" currently supported) --method=# method for copy (only "cp" currently supported)
-q, --quiet be silent except for errors -q, --quiet be silent except for errors
...@@ -61,6 +62,7 @@ Usage: $0 db_name [new_db_name | directory] ...@@ -61,6 +62,7 @@ Usage: $0 db_name [new_db_name | directory]
--suffix=# suffix for names of copied databases --suffix=# suffix for names of copied databases
--checkpoint=# insert checkpoint entry into specified db.table --checkpoint=# insert checkpoint entry into specified db.table
--flushlog flush logs once all tables are locked --flushlog flush logs once all tables are locked
--tmpdir=# temporary directory (instead of $opt_tmpdir)
Try 'perldoc $0 for more complete documentation' Try 'perldoc $0 for more complete documentation'
_OPTIONS _OPTIONS
...@@ -71,7 +73,7 @@ sub usage { ...@@ -71,7 +73,7 @@ sub usage {
my %opt = ( my %opt = (
user => getpwuid($>), user => getpwuid($>),
indices => 1, # for safety noindices => 0,
allowold => 0, # for safety allowold => 0, # for safety
keepold => 0, keepold => 0,
method => "cp", method => "cp",
...@@ -86,7 +88,7 @@ GetOptions( \%opt, ...@@ -86,7 +88,7 @@ GetOptions( \%opt,
"socket|S=s", "socket|S=s",
"allowold!", "allowold!",
"keepold!", "keepold!",
"indices!", "noindices!",
"method=s", "method=s",
"debug", "debug",
"quiet|q", "quiet|q",
...@@ -95,6 +97,7 @@ GetOptions( \%opt, ...@@ -95,6 +97,7 @@ GetOptions( \%opt,
"suffix=s", "suffix=s",
"checkpoint=s", "checkpoint=s",
"flushlog", "flushlog",
"tmpdir|t=s",
"dryrun|n", "dryrun|n",
) or usage("Invalid option"); ) or usage("Invalid option");
...@@ -133,6 +136,7 @@ else { ...@@ -133,6 +136,7 @@ else {
my $mysqld_help; my $mysqld_help;
my %mysqld_vars; my %mysqld_vars;
my $start_time = time; my $start_time = time;
my $opt_tmpdir= $opt{tempdir} ? $opt{tmpdir} : $main::env{TMPDIR};
$0 = $1 if $0 =~ m:/([^/]+)$:; $0 = $1 if $0 =~ m:/([^/]+)$:;
$opt{quiet} = 0 if $opt{debug}; $opt{quiet} = 0 if $opt{debug};
$opt{allowold} = 1 if $opt{keepold}; $opt{allowold} = 1 if $opt{keepold};
...@@ -238,13 +242,16 @@ foreach my $rdb ( @db_desc ) { ...@@ -238,13 +242,16 @@ foreach my $rdb ( @db_desc ) {
my @db_files = sort ( $negated my @db_files = sort ( $negated
? grep { $db_files{$_} !~ $t_regex } keys %db_files ? grep { $db_files{$_} !~ $t_regex } keys %db_files
: grep { $db_files{$_} =~ $t_regex } keys %db_files ); : grep { $db_files{$_} =~ $t_regex } keys %db_files );
my @index_files=();
## remove indices unless we're told to keep them ## remove indices unless we're told to keep them
unless ($opt{indices}) { if ($opt{noindices}) {
@index_files= grep { /\.(ISM|MYI)$/ } @db_files;
@db_files = grep { not /\.(ISM|MYI)$/ } @db_files; @db_files = grep { not /\.(ISM|MYI)$/ } @db_files;
} }
$rdb->{files} = [ @db_files ]; $rdb->{files} = [ @db_files ];
$rdb->{index} = [ @index_files ];
my @hc_tables = map { "$db.$_" } @dbh_tables; my @hc_tables = map { "$db.$_" } @dbh_tables;
$rdb->{tables} = [ @hc_tables ]; $rdb->{tables} = [ @hc_tables ];
...@@ -369,14 +376,65 @@ else { ...@@ -369,14 +376,65 @@ else {
my @failed = (); my @failed = ();
foreach my $rdb ( @db_desc ) { foreach my $rdb ( @db_desc )
{
my @files = map { "$datadir/$rdb->{src}/$_" } @{$rdb->{files}}; my @files = map { "$datadir/$rdb->{src}/$_" } @{$rdb->{files}};
next unless @files; next unless @files;
eval { copy_files($opt{method}, \@files, $rdb->{target} ); };
eval { copy_files($opt{method}, \@files, $rdb->{target} ); };
push @failed, "$rdb->{src} -> $rdb->{target} failed: $@" push @failed, "$rdb->{src} -> $rdb->{target} failed: $@"
if ( $@ ); if ( $@ );
@files = map { "$datadir/$rdb->{src}/$_" } @{$rdb->{index}};
if ($rdb->{index})
{
#
# Copy only the header of the index file
#
my $tmpfile="$opt_tmpdir/mysqlhotcopy$$";
foreach my $file ($rdb->{index})
{
my $from="$datadir/$rdb->{src}/$file";
my $to="$rdb->{target}/$file";
my $buff;
open(INPUT, $from) || die "Can't open file $from: $!\n";
my $length=read INPUT, $buff, 2048;
die "Can't read index header from $from\n" if ($length <= 1024);
close INPUT;
if ( $opt{dryrun} )
{
print '$opt{method}-header $from $to\n';
}
elsif ($opt{method} eq 'cp')
{
!open(OUTPUT,$to) || die "Can\'t create file $to: $!\n";
if (write(OUTPUT,$buff) != length($buff))
{
die "Error when writing data to $to: $!\n";
}
close OUTPUT || die "Error on close of $to: $!\n";
}
elsif ($opt{method} eq 'scp')
{
my $tmp=$tmpfile;
open(OUTPUT,"$tmp") || die "Can\'t create file $tmp: $!\n";
if (write(OUTPUT,$buff) != length($buff))
{
die "Error when writing data to $tmp: $!\n";
}
close OUTPUT || die "Error on close of $tmp: $!\n";
safe_system('scp $tmp $to');
}
else
{
die "Can't use unsupported method '$opt{method}'\n";
}
}
unlink "$opt_tmpdir/mysqlhotcopy$$";
}
if ( $opt{checkpoint} ) { if ( $opt{checkpoint} ) {
my $msg = ( $@ ) ? "Failed: $@" : "Succeeded"; my $msg = ( $@ ) ? "Failed: $@" : "Succeeded";
...@@ -469,13 +527,21 @@ sub copy_files { ...@@ -469,13 +527,21 @@ sub copy_files {
# add files to copy and the destination directory # add files to copy and the destination directory
push @cmd, @$files, $target; push @cmd, @$files, $target;
} }
else { else
{
die "Can't use unsupported method '$method'\n"; die "Can't use unsupported method '$method'\n";
} }
safe_system (@cmd);
}
if ( $opt{dryrun} ) { sub safe_system
{
my @cmd=shift;
if ( $opt{dryrun} )
{
print "@cmd\n"; print "@cmd\n";
next; return;
} }
## for some reason system fails but backticks works ok for scp... ## for some reason system fails but backticks works ok for scp...
...@@ -488,6 +554,7 @@ sub copy_files { ...@@ -488,6 +554,7 @@ sub copy_files {
} }
} }
sub retire_directory { sub retire_directory {
my ( @dir ) = @_; my ( @dir ) = @_;
...@@ -611,9 +678,9 @@ port to use when connecting to local server ...@@ -611,9 +678,9 @@ port to use when connecting to local server
UNIX domain socket to use when connecting to local server UNIX domain socket to use when connecting to local server
=item --indices =item --noindices
include index files in copy don't include index files in copy
=item --method=# =item --method=#
...@@ -677,9 +744,6 @@ Add support for other copy methods (eg tar to single file?). ...@@ -677,9 +744,6 @@ Add support for other copy methods (eg tar to single file?).
Add support for forthcoming MySQL ``RAID'' table subdirectory layouts. Add support for forthcoming MySQL ``RAID'' table subdirectory layouts.
Add option to only copy the first 65KB of index files. That simplifies
recovery (recovery with no index file at all is complicated).
=head1 AUTHOR =head1 AUTHOR
Tim Bunce Tim Bunce
...@@ -689,3 +753,5 @@ Martin Waite - added checkpoint, flushlog, regexp and dryrun options ...@@ -689,3 +753,5 @@ Martin Waite - added checkpoint, flushlog, regexp and dryrun options
Ralph Corderoy - added synonyms for commands Ralph Corderoy - added synonyms for commands
Scott Wiersdorf - added table regex and scp support Scott Wiersdorf - added table regex and scp support
Monty - working --noindex (copy only first 2048 bytes of index file)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:05:04 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:24:55
ATIS table test ATIS table test
...@@ -6,14 +6,14 @@ Creating tables ...@@ -6,14 +6,14 @@ 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): 3 wallclock secs ( 0.68 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (9768): 4 wallclock secs ( 0.64 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data Retrieving data
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_simple_join (500): 1 wallclock secs ( 0.66 usr 0.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (200): 12 wallclock secs ( 4.31 usr 3.11 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_distinct (800): 11 wallclock secs ( 1.72 usr 0.95 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_group (2800): 10 wallclock secs ( 1.58 usr 0.66 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)
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 ( 8.93 usr 5.72 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)
Benchmark DBD suite: 2.9 Benchmark DBD suite: 2.10
Date of test: 2000-11-18 18:20:34 Date of test: 2000-11-28 17:24:55
Running tests on: Linux 2.2.13-SMP alpha Running tests on: Linux 2.2.13-SMP alpha
Arguments: Arguments:
Comments: Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; gcc 2.95.2 + ccc Comments: Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; gcc 2.95.2 + ccc
Limits from: Limits from:
Server version: MySQL 3.23.28 gamma Server version: MySQL 3.23.29 gamma
ATIS: Total time: 38 wallclock secs ( 8.93 usr 5.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU) ATIS: Total time: 38 wallclock secs ( 9.13 usr 5.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
alter-table: Total time: 375 wallclock secs ( 0.30 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) alter-table: Total time: 391 wallclock secs ( 0.31 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
big-tables: Total time: 42 wallclock secs ( 9.09 usr 11.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) big-tables: Total time: 41 wallclock secs ( 8.35 usr 10.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
connect: Total time: 77 wallclock secs (34.21 usr 17.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU) connect: Total time: 76 wallclock secs (31.66 usr 19.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
create: Total time: 134 wallclock secs (10.66 usr 4.31 sys + 0.00 cusr 0.00 csys = 0.00 CPU) create: Total time: 133 wallclock secs (10.24 usr 4.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
insert: Total time: 1851 wallclock secs (450.58 usr 224.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) insert: Total time: 1821 wallclock secs (430.65 usr 226.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
select: Total time: 1215 wallclock secs (57.43 usr 28.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) select: Total time: 1170 wallclock secs (57.76 usr 27.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
wisconsin: Total time: 19 wallclock secs ( 3.77 usr 2.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU) wisconsin: Total time: 18 wallclock secs ( 3.70 usr 2.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
All 8 test executed successfully All 8 test executed successfully
Totals per operation: Totals per operation:
Operation seconds usr sys cpu tests Operation seconds usr sys cpu tests
alter_table_add 205.00 0.17 0.07 0.00 992 alter_table_add 213.00 0.17 0.07 0.00 992
alter_table_drop 161.00 0.07 0.03 0.00 496 alter_table_drop 170.00 0.07 0.03 0.00 496
connect 14.00 8.15 2.36 0.00 10000 connect 14.00 7.49 2.43 0.00 10000
connect+select_1_row 17.00 8.55 3.39 0.00 10000 connect+select_1_row 17.00 7.59 3.33 0.00 10000
connect+select_simple 16.00 8.31 3.17 0.00 10000 connect+select_simple 15.00 7.61 3.24 0.00 10000
count 49.00 0.03 0.01 0.00 100 count 48.00 0.03 0.01 0.00 100
count_distinct 86.00 0.71 0.21 0.00 2000 count_distinct 92.00 0.69 0.21 0.00 2000
count_distinct_big 140.00 7.24 8.69 0.00 120 count_distinct_big 135.00 7.24 8.53 0.00 120
count_distinct_group 72.00 1.07 0.63 0.00 1000 count_distinct_group 64.00 1.06 0.66 0.00 1000
count_distinct_group_on_key 42.00 0.45 0.15 0.00 1000 count_distinct_group_on_key 42.00 0.43 0.14 0.00 1000
count_distinct_group_on_key_parts 72.00 1.08 0.62 0.00 1000 count_distinct_group_on_key_parts 63.00 1.10 0.62 0.00 1000
count_group_on_key_parts 39.00 0.99 0.61 0.00 1000 count_group_on_key_parts 40.00 1.00 0.61 0.00 1000
count_on_key 454.00 15.83 4.45 0.00 50100 count_on_key 428.00 15.76 4.53 0.00 50100
create+drop 13.00 2.86 0.85 0.00 10000 create+drop 13.00 2.68 1.04 0.00 10000
create_MANY_tables 91.00 1.85 0.61 0.00 10000 create_MANY_tables 90.00 1.79 0.64 0.00 10000
create_index 4.00 0.00 0.00 0.00 8 create_index 4.00 0.00 0.00 0.00 8
create_key+drop 17.00 4.39 1.33 0.00 10000 create_key+drop 17.00 4.18 1.32 0.00 10000
create_table 0.00 0.00 0.00 0.00 31 create_table 0.00 0.00 0.00 0.00 31
delete_all 11.00 0.00 0.00 0.00 12 delete_all 11.00 0.00 0.00 0.00 12
delete_all_many_keys 49.00 0.01 0.01 0.00 1 delete_all_many_keys 49.00 0.02 0.01 0.00 1
delete_big 0.00 0.00 0.00 0.00 1 delete_big 0.00 0.00 0.00 0.00 1
delete_big_many_keys 49.00 0.01 0.01 0.00 128 delete_big_many_keys 49.00 0.02 0.01 0.00 128
delete_key 4.00 0.65 0.54 0.00 10000 delete_key 4.00 0.66 0.53 0.00 10000
drop_index 4.00 0.00 0.00 0.00 8 drop_index 4.00 0.00 0.00 0.00 8
drop_table 0.00 0.00 0.00 0.00 28 drop_table 0.00 0.00 0.00 0.00 28
drop_table_when_MANY_tables 7.00 0.63 0.62 0.00 10000 drop_table_when_MANY_tables 7.00 0.62 0.61 0.00 10000
insert 137.00 26.71 20.07 0.00 350768 insert 137.00 24.96 21.11 0.00 350768
insert_duplicates 39.00 5.58 6.03 0.00 100000 insert_duplicates 38.00 5.63 6.17 0.00 100000
insert_key 93.00 8.08 5.73 0.00 100000 insert_key 94.00 7.67 5.66 0.00 100000
insert_many_fields 14.00 0.34 0.16 0.00 2000 insert_many_fields 14.00 0.35 0.12 0.00 2000
insert_select_1_key 4.00 0.00 0.00 0.00 1 insert_select_1_key 5.00 0.00 0.00 0.00 1
insert_select_2_keys 7.00 0.00 0.00 0.00 1 insert_select_2_keys 6.00 0.00 0.00 0.00 1
min_max 21.00 0.02 0.00 0.00 60 min_max 20.00 0.02 0.00 0.00 60
min_max_on_key 186.00 25.42 7.61 0.00 85000 min_max_on_key 175.00 25.68 7.59 0.00 85000
multiple_value_insert 7.00 2.19 0.05 0.00 100000 multiple_value_insert 7.00 2.15 0.05 0.00 100000
order_by_big 54.00 22.86 21.67 0.00 10 order_by_big 54.00 22.33 21.66 0.00 10
order_by_big_key 37.00 22.01 14.79 0.00 10 order_by_big_key 36.00 21.23 14.75 0.00 10
order_by_big_key2 37.00 22.02 14.86 0.00 10 order_by_big_key2 37.00 21.94 15.04 0.00 10
order_by_big_key_desc 37.00 22.03 14.87 0.00 10 order_by_big_key_desc 37.00 21.53 14.74 0.00 10
order_by_big_key_diff 52.00 23.11 21.71 0.00 10 order_by_big_key_diff 51.00 22.21 21.67 0.00 10
order_by_key 3.00 1.17 0.64 0.00 500 order_by_key 2.00 1.14 0.63 0.00 500
order_by_key2_diff 5.00 2.05 1.25 0.00 500 order_by_key2_diff 5.00 1.99 1.23 0.00 500
order_by_range 5.00 1.17 0.65 0.00 500 order_by_range 5.00 1.14 0.64 0.00 500
outer_join 61.00 0.01 0.00 0.00 10 outer_join 57.00 0.00 0.00 0.00 10
outer_join_found 55.00 0.00 0.00 0.00 10 outer_join_found 52.00 0.00 0.00 0.00 10
outer_join_not_found 35.00 0.01 0.00 0.00 500 outer_join_not_found 34.00 0.00 0.00 0.00 500
outer_join_on_key 40.00 0.00 0.00 0.00 10 outer_join_on_key 38.00 0.01 0.00 0.00 10
select_1_row 3.00 0.41 1.01 0.00 10000 select_1_row 2.00 0.35 0.95 0.00 10000
select_2_rows 3.00 0.38 0.89 0.00 10000 select_2_rows 3.00 0.34 1.00 0.00 10000
select_big 57.00 30.30 20.70 0.00 10080 select_big 56.00 28.86 21.57 0.00 10080
select_column+column 3.00 0.27 0.75 0.00 10000 select_column+column 3.00 0.26 0.67 0.00 10000
select_diff_key 154.00 0.23 0.06 0.00 500 select_diff_key 148.00 0.21 0.05 0.00 500
select_distinct 11.00 1.72 0.95 0.00 800 select_distinct 11.00 1.77 0.97 0.00 800
select_group 52.00 1.62 0.67 0.00 2911 select_group 49.00 1.63 0.66 0.00 2911
select_group_when_MANY_tables 6.00 0.92 0.90 0.00 10000 select_group_when_MANY_tables 6.00 0.96 0.87 0.00 10000
select_join 12.00 4.31 3.11 0.00 200 select_join 12.00 4.45 3.14 0.00 200
select_key 137.00 75.62 20.87 0.00 200000 select_key 137.00 73.10 21.05 0.00 200000
select_key2 144.00 76.78 20.52 0.00 200000 select_key2 142.00 72.16 21.15 0.00 200000
select_key_prefix 144.00 76.89 20.33 0.00 200000 select_key_prefix 143.00 72.60 21.07 0.00 200000
select_many_fields 28.00 8.73 10.85 0.00 2000 select_many_fields 26.00 7.99 10.11 0.00 2000
select_range 228.00 8.51 5.59 0.00 410 select_range 229.00 8.56 5.62 0.00 410
select_range_key2 20.00 6.50 2.29 0.00 25010 select_range_key2 19.00 6.47 2.33 0.00 25010
select_range_prefix 18.00 6.46 2.33 0.00 25010 select_range_prefix 20.00 6.51 2.25 0.00 25010
select_simple 2.00 0.29 0.75 0.00 10000 select_simple 2.00 0.28 0.77 0.00 10000
select_simple_join 2.00 0.62 0.39 0.00 500 select_simple_join 1.00 0.66 0.38 0.00 500
update_big 25.00 0.00 0.00 0.00 10 update_big 27.00 0.00 0.00 0.00 10
update_of_key 47.00 3.41 2.97 0.00 50256 update_of_key 48.00 3.45 3.04 0.00 50256
update_of_key_big 18.00 0.04 0.04 0.00 501 update_of_key_big 18.00 0.04 0.03 0.00 501
update_with_key 134.00 21.08 18.70 0.00 300000 update_with_key 134.00 18.92 18.69 0.00 300000
wisc_benchmark 4.00 1.92 0.94 0.00 114 wisc_benchmark 4.00 1.88 0.93 0.00 114
TOTALS 3797.00 574.84 294.06 0.00 1946237 TOTALS 3733.00 551.64 296.93 0.00 1946237
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:05:42 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:25:34
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) 1 wallclock secs ( 0.06 usr 0.04 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): 205 wallclock secs ( 0.17 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_add (992): 213 wallclock secs ( 0.17 usr 0.07 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): 161 wallclock secs ( 0.07 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_drop (496): 170 wallclock secs ( 0.07 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 375 wallclock secs ( 0.30 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 391 wallclock secs ( 0.31 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:11:57 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:32:05
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): 12 wallclock secs ( 4.18 usr 5.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 10 wallclock secs ( 3.93 usr 5.07 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.55 usr 5.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 16 wallclock secs ( 4.06 usr 5.04 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.30 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 5 wallclock secs ( 0.33 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.04 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 9 wallclock secs ( 0.02 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 42 wallclock secs ( 9.09 usr 11.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 41 wallclock secs ( 8.35 usr 10.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:12:39 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:32:46
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): 14 wallclock secs ( 8.15 usr 2.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect (10000): 14 wallclock secs ( 7.49 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): 16 wallclock secs ( 8.31 usr 3.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for connect+select_simple (10000): 15 wallclock secs ( 7.61 usr 3.24 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.29 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple (10000): 2 wallclock secs ( 0.28 usr 0.77 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 ( 8.55 usr 3.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 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)
Testing select 1 row from table Testing select 1 row from table
Time to select_1_row (10000): 3 wallclock secs ( 0.41 usr 1.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_1_row (10000): 2 wallclock secs ( 0.35 usr 0.95 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.38 usr 0.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_2_rows (10000): 3 wallclock secs ( 0.34 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.27 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_column+column (10000): 3 wallclock secs ( 0.26 usr 0.67 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): 19 wallclock secs ( 7.84 usr 5.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_big (10000): 20 wallclock secs ( 7.74 usr 6.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 77 wallclock secs (34.21 usr 17.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 76 wallclock secs (31.66 usr 19.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:13:56 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:34:02
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): 91 wallclock secs ( 1.85 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_MANY_tables (10000): 90 wallclock secs ( 1.79 usr 0.64 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.92 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 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)
Testing drop Testing drop
Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.63 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.62 usr 0.61 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.86 usr 0.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 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_key+drop (10000): 17 wallclock secs ( 4.39 usr 1.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_key+drop (10000): 17 wallclock secs ( 4.18 usr 1.32 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 134 wallclock secs (10.66 usr 4.31 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)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 15:16:11 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 17:36:15
Testing the speed of inserting data into 1 table and do some selects on it. Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows. The tests are done with a table that has 100000 rows.
...@@ -8,78 +8,78 @@ Creating tables ...@@ -8,78 +8,78 @@ Creating tables
Inserting 100000 rows in order Inserting 100000 rows in order
Inserting 100000 rows in reverse order Inserting 100000 rows in reverse order
Inserting 100000 rows in random order Inserting 100000 rows in random order
Time for insert (300000): 116 wallclock secs (23.42 usr 16.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (300000): 115 wallclock secs (21.74 usr 18.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert of duplicates Testing insert of duplicates
Time for insert_duplicates (100000): 39 wallclock secs ( 5.58 usr 6.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_duplicates (100000): 38 wallclock secs ( 5.63 usr 6.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data from the table Retrieving data from the table
Time for select_big (10:3000000): 37 wallclock secs (22.33 usr 14.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (10:3000000): 35 wallclock secs (20.98 usr 14.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key (10:3000000): 37 wallclock secs (22.01 usr 14.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key (10:3000000): 36 wallclock secs (21.23 usr 14.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_desc (10:3000000): 37 wallclock secs (22.03 usr 14.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_desc (10:3000000): 37 wallclock secs (21.53 usr 14.74 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key2 (10:3000000): 37 wallclock secs (22.02 usr 14.86 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key2 (10:3000000): 37 wallclock secs (21.94 usr 15.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_diff (10:3000000): 52 wallclock secs (23.11 usr 21.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_diff (10:3000000): 51 wallclock secs (22.21 usr 21.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big (10:3000000): 54 wallclock secs (22.86 usr 21.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big (10:3000000): 54 wallclock secs (22.33 usr 21.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_range (500:125750): 5 wallclock secs ( 1.17 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_range (500:125750): 5 wallclock secs ( 1.14 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key (500:125750): 3 wallclock secs ( 1.17 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key (500:125750): 2 wallclock secs ( 1.14 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 2.05 usr 1.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.99 usr 1.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_diff_key (500:1000): 154 wallclock secs ( 0.23 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_diff_key (500:1000): 148 wallclock secs ( 0.21 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_prefix (5010:42084): 10 wallclock secs ( 2.79 usr 0.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (5010:42084): 11 wallclock secs ( 2.83 usr 0.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (5010:42084): 11 wallclock secs ( 2.80 usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (5010:42084): 10 wallclock secs ( 2.80 usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix (200000): 144 wallclock secs (76.89 usr 20.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix (200000): 143 wallclock secs (72.60 usr 21.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key (200000): 137 wallclock secs (75.62 usr 20.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key (200000): 137 wallclock secs (73.10 usr 21.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2 (200000): 144 wallclock secs (76.78 usr 20.52 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key2 (200000): 142 wallclock secs (72.16 usr 21.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test of compares with simple ranges Test of compares with simple ranges
Time for select_range_prefix (20000:43500): 8 wallclock secs ( 3.67 usr 1.34 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.68 usr 1.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (20000:43500): 9 wallclock secs ( 3.70 usr 1.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (20000:43500): 9 wallclock secs ( 3.67 usr 1.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (111): 42 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_group (111): 39 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (15000): 9 wallclock secs ( 4.71 usr 1.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (15000): 9 wallclock secs ( 4.64 usr 1.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max (60): 21 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max (60): 20 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (100): 41 wallclock secs ( 0.04 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (100): 39 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count (100): 49 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count (100): 48 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (20): 58 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (20): 55 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys with functions Testing update of keys with functions
Time for update_of_key (50000): 26 wallclock secs ( 3.38 usr 2.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key (50000): 27 wallclock secs ( 3.43 usr 3.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for update_of_key_big (501): 18 wallclock secs ( 0.04 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key_big (501): 18 wallclock secs ( 0.04 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update with key Testing update with key
Time for update_with_key (300000): 134 wallclock secs (21.08 usr 18.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_with_key (300000): 134 wallclock secs (18.92 usr 18.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of all rows Testing update of all rows
Time for update_big (10): 25 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_big (10): 27 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing left outer join Testing left outer join
Time for outer_join_on_key (10:10): 40 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_on_key (10:10): 38 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join (10:10): 61 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join (10:10): 57 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join_found (10:10): 55 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_found (10:10): 52 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join_not_found (500:10): 35 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_not_found (500:10): 34 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing INSERT INTO ... SELECT Testing INSERT INTO ... SELECT
Time for insert_select_1_key (1): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_select_1_key (1): 5 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for insert_select_2_keys (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_select_2_keys (1): 6 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop table(2): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop table(2): 1 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing delete Testing delete
Time for delete_key (10000): 4 wallclock secs ( 0.65 usr 0.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_key (10000): 4 wallclock secs ( 0.66 usr 0.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for delete_all (12): 11 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all (12): 11 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Insert into table with 16 keys and with a primary key with 16 parts Insert into table with 16 keys and with a primary key with 16 parts
Time for insert_key (100000): 93 wallclock secs ( 8.08 usr 5.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_key (100000): 94 wallclock secs ( 7.67 usr 5.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys Testing update of keys
Time for update_of_key (256): 21 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key (256): 21 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting rows from the table Deleting rows from the table
Time for delete_big_many_keys (128): 49 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_big_many_keys (128): 49 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting everything from table Deleting everything from table
Time for delete_all_many_keys (1): 49 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all_many_keys (1): 49 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting 100000 rows with multiple values Inserting 100000 rows with multiple values
Time for multiple_value_insert (100000): 7 wallclock secs ( 2.19 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for multiple_value_insert (100000): 7 wallclock secs ( 2.15 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop table(1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop table(1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 1851 wallclock secs (450.58 usr 224.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 1821 wallclock secs (430.65 usr 226.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 17:02:47 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 18:06:37
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): 3 wallclock secs ( 0.76 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (10000): 4 wallclock secs ( 0.76 usr 0.58 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.13 usr 0.10 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): 228 wallclock secs ( 8.51 usr 5.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range (410:1057904): 229 wallclock secs ( 8.56 usr 5.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 177 wallclock secs (20.71 usr 6.35 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (70000): 166 wallclock secs (21.04 usr 6.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 413 wallclock secs (15.79 usr 4.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (50000): 389 wallclock secs (15.72 usr 4.52 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000): 39 wallclock secs ( 0.99 usr 0.61 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)
Testing count(distinct) on the table Testing count(distinct) on the table
Time for count_distinct (2000:2000): 86 wallclock secs ( 0.71 usr 0.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 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_group_on_key (1000:6000): 42 wallclock secs ( 0.45 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key (1000:6000): 42 wallclock secs ( 0.43 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 72 wallclock secs ( 1.08 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key_parts (1000:100000): 63 wallclock secs ( 1.10 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 72 wallclock secs ( 1.07 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group (1000:100000): 64 wallclock secs ( 1.06 usr 0.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 82 wallclock secs ( 7.24 usr 8.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (100:1000000): 80 wallclock secs ( 7.23 usr 8.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 1215 wallclock secs (57.43 usr 28.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 1170 wallclock secs (57.76 usr 27.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.28 gamma' at 2000-11-18 16:16:05 Testing server 'MySQL 3.23.29 gamma' at 2000-11-28 18:26:07
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): 15 wallclock secs ( 1.85 usr 1.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (31000): 14 wallclock secs ( 1.82 usr 1.89 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.92 usr 0.94 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for wisc_benchmark (114): 4 wallclock secs ( 1.88 usr 0.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 19 wallclock secs ( 3.77 usr 2.78 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)
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
...@@ -127,7 +127,7 @@ foreach $table (@ARGV) ...@@ -127,7 +127,7 @@ foreach $table (@ARGV)
$columns=$sth->{NUM_OF_FIELDS}; $columns=$sth->{NUM_OF_FIELDS};
$columns_to_quote=get_columns_to_quote($sth); $columns_to_quote=get_columns_to_quote($sth);
$multi_value_insert=$sth->{'multi_value_insert'}; $insert_multi_value=$sth->{'insert_multi_value'};
$query="insert into $table values"; $result=""; $query="insert into $table values"; $result="";
print "- copying $table\n" if ($opt_verbose); print "- copying $table\n" if ($opt_verbose);
...@@ -146,7 +146,7 @@ foreach $table (@ARGV) ...@@ -146,7 +146,7 @@ foreach $table (@ARGV)
} }
} }
substr($tmp,-1)=")"; # Remove last ',' substr($tmp,-1)=")"; # Remove last ','
if ($multi_value_insert) if ($insert_multi_value)
{ {
$to_dbh->do($query . $tmp) || die "Can't insert row: $DBI::errstr"; $to_dbh->do($query . $tmp) || die "Can't insert row: $DBI::errstr";
} }
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
# as such, and clarify ones such as "mediumint" with comments such as # as such, and clarify ones such as "mediumint" with comments such as
# "3-byte int" or "same as xxx". # "3-byte int" or "same as xxx".
$version="1.53"; $version="1.54";
use DBI; use DBI;
use Getopt::Long; use Getopt::Long;
...@@ -275,7 +275,7 @@ check_and_report("Order by DESC is remembered",'order_by_remember_desc', ...@@ -275,7 +275,7 @@ check_and_report("Order by DESC is remembered",'order_by_remember_desc',
["drop table crash_q $drop_attr"],[3,2,1],7,undef(),3); ["drop table crash_q $drop_attr"],[3,2,1],7,undef(),3);
report("Compute",'compute', report("Compute",'compute',
"select a from crash_me order by a compute sum(a) by a"); "select a from crash_me order by a compute sum(a) by a");
report("Value lists in INSERT",'multi_value_insert', report("INSERT with Value lists",'insert_multi_value',
"create table crash_q (s char(10))", "create table crash_q (s char(10))",
"insert into crash_q values ('a'),('b')", "insert into crash_q values ('a'),('b')",
"drop table crash_q $drop_attr"); "drop table crash_q $drop_attr");
...@@ -372,11 +372,11 @@ if ($dbh->do("create table crash_q (a integer, b integer,c1 CHAR(10))") && ...@@ -372,11 +372,11 @@ if ($dbh->do("create table crash_q (a integer, b integer,c1 CHAR(10))") &&
$dbh->do("drop table crash_q $drop_attr"); $dbh->do("drop table crash_q $drop_attr");
$dbh->do("drop table crash_q1 $drop_attr"); $dbh->do("drop table crash_q1 $drop_attr");
check_and_report("case insensitive compare","case_insensitive_strings", check_and_report("Case insensitive compare","case_insensitive_strings",
[],"select b from crash_me where b = 'A'",[],'a',1); [],"select b from crash_me where b = 'A'",[],'a',1);
check_and_report("ignore end space in compare","ignore_end_space", check_and_report("Ignore end space in compare","ignore_end_space",
[],"select b from crash_me where b = 'a '",[],'a',1); [],"select b from crash_me where b = 'a '",[],'a',1);
check_and_report("group on column with null values",'group_by_null', check_and_report("Group on column with null values",'group_by_null',
["create table crash_q (s char(10))", ["create table crash_q (s char(10))",
"insert into crash_q values(null)", "insert into crash_q values(null)",
"insert into crash_q values(null)"], "insert into crash_q values(null)"],
...@@ -733,7 +733,7 @@ try_and_report("Type for row id", "rowid", ...@@ -733,7 +733,7 @@ try_and_report("Type for row id", "rowid",
["serial", ["serial",
"create table crash_q (a serial, primary key(a))","drop table crash_q $drop_attr"]); "create table crash_q (a serial, primary key(a))","drop table crash_q $drop_attr"]);
try_and_report("Automatic rowid", "automatic_rowid", try_and_report("Automatic row id", "automatic_rowid",
["_rowid", ["_rowid",
"create table crash_q (a int not null, primary key(a))", "create table crash_q (a int not null, primary key(a))",
"insert into crash_q values (1)", "insert into crash_q values (1)",
...@@ -1318,7 +1318,7 @@ report("default value function for column",'create_default_func', ...@@ -1318,7 +1318,7 @@ report("default value function for column",'create_default_func',
"create table crash_q (q integer not null,q1 integer default (1+1)", "create table crash_q (q integer not null,q1 integer default (1+1)",
"drop table crash_q $drop_attr"); "drop table crash_q $drop_attr");
report("temporary tables",'tempoary_table', report("temporary tables",'temporary_table',
"create temporary table crash_q (q integer not null)", "create temporary table crash_q (q integer not null)",
"drop table crash_q $drop_attr"); "drop table crash_q $drop_attr");
...@@ -1399,7 +1399,7 @@ if ($limits{'unique_in_create'} eq 'yes') ...@@ -1399,7 +1399,7 @@ if ($limits{'unique_in_create'} eq 'yes')
"insert into crash_q (q) values(NULL)", "insert into crash_q (q) values(NULL)",
"drop table crash_q $drop_attr"); "drop table crash_q $drop_attr");
report("null combination in unique index",'nulls_in_unique', report("null combination in unique index",'nulls_in_unique',
create_table("crash_q",["q integer,q1 integer"],["unique(q)"]), create_table("crash_q",["q integer,q1 integer"],["unique(q,q1)"]),
"insert into crash_q (q,q1) values(1,NULL)", "insert into crash_q (q,q1) values(1,NULL)",
"insert into crash_q (q,q1) values(1,NULL)", "insert into crash_q (q,q1) values(1,NULL)",
"drop table crash_q $drop_attr"); "drop table crash_q $drop_attr");
......
...@@ -302,7 +302,7 @@ multi_drop=no # many tables to drop table ...@@ -302,7 +302,7 @@ multi_drop=no # many tables to drop table
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
...@@ -343,7 +343,7 @@ multi_null_in_unique=yes # null in unique index ...@@ -343,7 +343,7 @@ multi_null_in_unique=yes # null in unique index
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=yes # DELETE FROM table1,table2... multi_table_delete=yes # DELETE FROM table1,table2...
multi_table_update=yes # Update with many tables multi_table_update=yes # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_join_incompat=no # natural join (incompatible lists) natural_join_incompat=no # natural join (incompatible lists)
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
......
...@@ -309,7 +309,7 @@ multi_drop=yes # many tables to drop table ...@@ -309,7 +309,7 @@ multi_drop=yes # many tables to drop table
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=yes # DELETE FROM table1,table2... multi_table_delete=yes # DELETE FROM table1,table2...
multi_table_update=yes # Update with many tables multi_table_update=yes # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
...@@ -349,7 +349,7 @@ multi_drop=no # many tables to drop table ...@@ -349,7 +349,7 @@ multi_drop=no # many tables to drop table
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=yes # Value lists in INSERT insert_multi_value=yes # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_join_incompat=no # natural join (incompatible lists) natural_join_incompat=no # natural join (incompatible lists)
natural_left_outer_join=yes # natural left outer join natural_left_outer_join=yes # natural left outer join
...@@ -388,14 +388,14 @@ select_limit2=no # SELECT with LIMIT #,# ...@@ -388,14 +388,14 @@ select_limit2=no # SELECT with LIMIT #,#
select_string_size=4199664 # constant string size in SELECT select_string_size=4199664 # constant string size in SELECT
select_table_update=yes # Update with sub select select_table_update=yes # Update with sub select
select_without_from=no # SELECT without FROM select_without_from=no # SELECT without FROM
server_version=2.1 # server version server_version=FrontBase 2.1 # server version
simple_joins=yes # ANSI SQL simple joins simple_joins=yes # ANSI SQL simple joins
storage_of_float=round # Storage of float values storage_of_float=round # Storage of float values
subqueries=yes # subqueries subqueries=yes # subqueries
table_alias=yes # Table alias table_alias=yes # Table alias
table_name_case=yes # case independent table names table_name_case=yes # case independent table names
table_wildcard=yes # Select table_name.* table_wildcard=yes # Select table_name.*
tempoary_table=no # temporary tables temporary_table=no # temporary tables
transactions=error # transactions transactions=error # transactions
truncate_table=no # truncate truncate_table=no # truncate
type_extra_abstime=no # Type abstime type_extra_abstime=no # Type abstime
......
...@@ -315,7 +315,7 @@ multi_drop=no # many tables to drop table ...@@ -315,7 +315,7 @@ multi_drop=no # many tables to drop table
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
...@@ -334,7 +334,7 @@ multi_drop=no # many tables to drop table ...@@ -334,7 +334,7 @@ multi_drop=no # many tables to drop table
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=yes # natural join natural_join=yes # natural join
natural_left_outer_join=yes # natural left outer join natural_left_outer_join=yes # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
...@@ -345,7 +345,7 @@ multi_drop=no # many tables to drop table ...@@ -345,7 +345,7 @@ multi_drop=no # many tables to drop table
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_join_incompat=no # natural join (incompatible lists) natural_join_incompat=no # natural join (incompatible lists)
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
......
...@@ -97,7 +97,7 @@ multi_drop=no # many tables to drop table ...@@ -97,7 +97,7 @@ multi_drop=no # many tables to drop table
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
...@@ -310,7 +310,7 @@ multi_drop=yes # many tables to drop table ...@@ -310,7 +310,7 @@ multi_drop=yes # many tables to drop table
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=yes # Value lists in INSERT insert_multi_value=yes # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_left_outer_join=yes # natural left outer join natural_left_outer_join=yes # natural left outer join
no_primary_key=yes # Tables without primary key no_primary_key=yes # Tables without primary key
......
#This file is automaticly generated by crash-me 1.51 #This file is automaticly generated by crash-me 1.54
NEG=yes # update of column= -column NEG=yes # update of column= -column
Need_cast_for_null=no # Need to cast NULL for arithmetic Need_cast_for_null=no # Need to cast NULL for arithmetic
...@@ -18,10 +18,10 @@ alter_drop_unique=with drop key # Alter table drop unique ...@@ -18,10 +18,10 @@ alter_drop_unique=with drop key # Alter table drop unique
alter_modify_col=yes # Alter table modify column alter_modify_col=yes # Alter table modify column
alter_rename_table=yes # Alter table rename table alter_rename_table=yes # Alter table rename table
atomic_updates=no # atomic updates atomic_updates=no # atomic updates
automatic_rowid=_rowid # Automatic rowid automatic_rowid=_rowid # Automatic row id
binary_numbers=no # binary numbers (0b1001) binary_numbers=no # binary numbers (0b1001)
binary_strings=no # binary strings (b'0110') binary_strings=no # binary strings (b'0110')
case_insensitive_strings=yes # case insensitive compare case_insensitive_strings=yes # Case insensitive compare
char_is_space_filled=no # char are space filled char_is_space_filled=no # char are space filled
column_alias=yes # Column alias column_alias=yes # Column alias
columns_in_group_by=+64 # number of columns in group by columns_in_group_by=+64 # number of columns in group by
...@@ -36,7 +36,7 @@ constraint_check=no # Column constraints ...@@ -36,7 +36,7 @@ constraint_check=no # Column constraints
constraint_check_table=no # Table constraints constraint_check_table=no # Table constraints
constraint_null=yes # NULL constraint (SyBase style) constraint_null=yes # NULL constraint (SyBase style)
crash_me_safe=yes # crash me safe crash_me_safe=yes # crash me safe
crash_me_version=1.51 # crash me version crash_me_version=1.54 # crash me version
create_default=yes # default value for column create_default=yes # default value for column
create_default_func=no # default value function for column create_default_func=no # default value function for column
create_if_not_exists=yes # create table if not exists create_if_not_exists=yes # create table if not exists
...@@ -55,6 +55,8 @@ dont_require_cast_to_float=yes # No need to cast from integer to float ...@@ -55,6 +55,8 @@ dont_require_cast_to_float=yes # No need to cast from integer to float
double_quotes=yes # Double '' as ' in strings double_quotes=yes # Double '' as ' in strings
drop_if_exists=yes # drop table if exists drop_if_exists=yes # drop table if exists
drop_index=with 'ON' # drop index drop_index=with 'ON' # drop index
drop_requires_cascade=no # drop table require cascade/restrict
drop_restrict=yes # drop table with cascade/restrict
end_colon=yes # allows end ';' end_colon=yes # allows end ';'
except=no # except except=no # except
except_all=no # except all except_all=no # except all
...@@ -275,7 +277,7 @@ func_where_unique=no # Function UNIQUE ...@@ -275,7 +277,7 @@ func_where_unique=no # Function UNIQUE
functions=yes # Functions functions=yes # Functions
group_by=yes # Group by group_by=yes # Group by
group_by_alias=yes # Group by alias group_by_alias=yes # Group by alias
group_by_null=yes # group on column with null values group_by_null=yes # Group on column with null values
group_by_position=yes # Group by position group_by_position=yes # Group by position
group_distinct_functions=yes # Group functions with distinct group_distinct_functions=yes # Group functions with distinct
group_func_extra_bit_and=yes # Group function BIT_AND group_func_extra_bit_and=yes # Group function BIT_AND
...@@ -297,18 +299,20 @@ group_func_sql_min_str=yes # Group function MIN on strings ...@@ -297,18 +299,20 @@ group_func_sql_min_str=yes # Group function MIN on strings
group_func_sql_some=no # Group function SOME group_func_sql_some=no # Group function SOME
group_func_sql_sum=yes # Group function SUM group_func_sql_sum=yes # Group function SUM
group_functions=yes # Group functions group_functions=yes # Group functions
group_on_unused=yes # Group on unused column
has_true_false=no # TRUE and FALSE has_true_false=no # TRUE and FALSE
having=yes # Having having=yes # Having
having_with_alias=yes # Having on alias having_with_alias=yes # Having on alias
having_with_group=yes # Having with group function having_with_group=yes # Having with group function
hex_numbers=yes # hex numbers (0x41) hex_numbers=yes # hex numbers (0x41)
hex_strings=no # hex strings (x'1ace') hex_strings=no # hex strings (x'1ace')
ignore_end_space=yes # ignore end space in compare ignore_end_space=yes # Ignore end space in compare
index_in_create=yes # index in create table index_in_create=yes # index in create table
index_namespace=yes # different namespace for index index_namespace=yes # different namespace for index
index_parts=yes # index on column part (extension) index_parts=yes # index on column part (extension)
inner_join=yes # inner join inner_join=yes # inner join
insert_empty_string=yes # insert empty string insert_empty_string=yes # insert empty string
insert_multi_value=yes # INSERT with Value lists
insert_select=yes # insert INTO ... SELECT ... insert_select=yes # insert INTO ... SELECT ...
insert_with_set=yes # INSERT with set syntax insert_with_set=yes # INSERT with set syntax
intersect=no # intersect intersect=no # intersect
...@@ -351,7 +355,6 @@ multi_null_in_unique=yes # null in unique index ...@@ -351,7 +355,6 @@ multi_null_in_unique=yes # null in unique index
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=yes # Value lists in INSERT
natural_join=yes # natural join natural_join=yes # natural join
natural_join_incompat=yes # natural join (incompatible lists) natural_join_incompat=yes # natural join (incompatible lists)
natural_left_outer_join=yes # natural left outer join natural_left_outer_join=yes # natural left outer join
...@@ -360,6 +363,7 @@ null_concat_expr=yes # Is concat('a',NULL) = NULL ...@@ -360,6 +363,7 @@ null_concat_expr=yes # Is concat('a',NULL) = NULL
null_in_index=yes # null in index null_in_index=yes # null in index
null_in_unique=yes # null in unique index null_in_unique=yes # null in unique index
null_num_expr=yes # Is 1+NULL = NULL null_num_expr=yes # Is 1+NULL = NULL
nulls_in_unique=yes # null combination in unique index
odbc_left_outer_join=yes # left outer join odbc style odbc_left_outer_join=yes # left outer join odbc style
operating_system=Linux 2.2.13-SMP alpha # crash-me tested on operating_system=Linux 2.2.13-SMP alpha # crash-me tested on
order_by=yes # Order by order_by=yes # Order by
...@@ -367,6 +371,7 @@ order_by_alias=yes # Order by alias ...@@ -367,6 +371,7 @@ order_by_alias=yes # Order by alias
order_by_function=yes # Order by function order_by_function=yes # Order by function
order_by_position=yes # Order by position order_by_position=yes # Order by position
order_by_remember_desc=no # Order by DESC is remembered order_by_remember_desc=no # Order by DESC is remembered
order_on_unused=yes # Order by on unused column
primary_key_in_create=yes # primary key in create table primary_key_in_create=yes # primary key in create table
psm_functions=no # PSM functions (ANSI SQL) psm_functions=no # PSM functions (ANSI SQL)
psm_modules=no # PSM modules (ANSI SQL) psm_modules=no # PSM modules (ANSI SQL)
...@@ -389,14 +394,14 @@ select_limit2=yes # SELECT with LIMIT #,# ...@@ -389,14 +394,14 @@ select_limit2=yes # SELECT with LIMIT #,#
select_string_size=1048565 # constant string size in SELECT select_string_size=1048565 # constant string size in SELECT
select_table_update=no # Update with sub select select_table_update=no # Update with sub select
select_without_from=yes # SELECT without FROM select_without_from=yes # SELECT without FROM
server_version=MySQL 3.23.28 gamma # server version server_version=MySQL 3.23.29 gamma # server version
simple_joins=yes # ANSI SQL simple joins simple_joins=yes # ANSI SQL simple joins
storage_of_float=round # Storage of float values storage_of_float=round # Storage of float values
subqueries=no # subqueries subqueries=no # subqueries
table_alias=yes # Table alias table_alias=yes # Table alias
table_name_case=no # case independent table names table_name_case=no # case independent table names
table_wildcard=yes # Select table_name.* table_wildcard=yes # Select table_name.*
tempoary_table=yes # temporary tables temporary_table=yes # temporary tables
transactions=no # transactions transactions=no # transactions
truncate_table=yes # truncate truncate_table=yes # truncate
type_extra_abstime=no # Type abstime type_extra_abstime=no # Type abstime
...@@ -515,4 +520,4 @@ unique_in_create=yes # unique in create table ...@@ -515,4 +520,4 @@ unique_in_create=yes # unique in create table
unique_null_in_create=yes # unique null in create unique_null_in_create=yes # unique null in create
user_comment=Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; ccc + cxx # comment user_comment=Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; ccc + cxx # comment
views=no # views views=no # views
where_string_size=1048540 # constant string size in where where_string_size=1048539 # constant string size in where
#This file is automaticly generated by crash-me 1.51 #This file is automaticly generated by crash-me 1.54
NEG=yes # update of column= -column NEG=yes # update of column= -column
Need_cast_for_null=no # Need to cast NULL for arithmetic Need_cast_for_null=no # Need to cast NULL for arithmetic
...@@ -18,10 +18,10 @@ alter_drop_unique=with drop key # Alter table drop unique ...@@ -18,10 +18,10 @@ alter_drop_unique=with drop key # Alter table drop unique
alter_modify_col=yes # Alter table modify column alter_modify_col=yes # Alter table modify column
alter_rename_table=yes # Alter table rename table alter_rename_table=yes # Alter table rename table
atomic_updates=no # atomic updates atomic_updates=no # atomic updates
automatic_rowid=_rowid # Automatic rowid automatic_rowid=_rowid # Automatic row id
binary_numbers=no # binary numbers (0b1001) binary_numbers=no # binary numbers (0b1001)
binary_strings=no # binary strings (b'0110') binary_strings=no # binary strings (b'0110')
case_insensitive_strings=yes # case insensitive compare case_insensitive_strings=yes # Case insensitive compare
char_is_space_filled=no # char are space filled char_is_space_filled=no # char are space filled
column_alias=yes # Column alias column_alias=yes # Column alias
columns_in_group_by=+64 # number of columns in group by columns_in_group_by=+64 # number of columns in group by
...@@ -36,7 +36,7 @@ constraint_check=no # Column constraints ...@@ -36,7 +36,7 @@ constraint_check=no # Column constraints
constraint_check_table=no # Table constraints constraint_check_table=no # Table constraints
constraint_null=yes # NULL constraint (SyBase style) constraint_null=yes # NULL constraint (SyBase style)
crash_me_safe=yes # crash me safe crash_me_safe=yes # crash me safe
crash_me_version=1.51 # crash me version crash_me_version=1.54 # crash me version
create_default=yes # default value for column create_default=yes # default value for column
create_default_func=no # default value function for column create_default_func=no # default value function for column
create_if_not_exists=yes # create table if not exists create_if_not_exists=yes # create table if not exists
...@@ -55,6 +55,8 @@ dont_require_cast_to_float=yes # No need to cast from integer to float ...@@ -55,6 +55,8 @@ dont_require_cast_to_float=yes # No need to cast from integer to float
double_quotes=yes # Double '' as ' in strings double_quotes=yes # Double '' as ' in strings
drop_if_exists=yes # drop table if exists drop_if_exists=yes # drop table if exists
drop_index=with 'ON' # drop index drop_index=with 'ON' # drop index
drop_requires_cascade=no # drop table require cascade/restrict
drop_restrict=yes # drop table with cascade/restrict
end_colon=yes # allows end ';' end_colon=yes # allows end ';'
except=no # except except=no # except
except_all=no # except all except_all=no # except all
...@@ -275,7 +277,7 @@ func_where_unique=no # Function UNIQUE ...@@ -275,7 +277,7 @@ func_where_unique=no # Function UNIQUE
functions=yes # Functions functions=yes # Functions
group_by=yes # Group by group_by=yes # Group by
group_by_alias=yes # Group by alias group_by_alias=yes # Group by alias
group_by_null=yes # group on column with null values group_by_null=yes # Group on column with null values
group_by_position=yes # Group by position group_by_position=yes # Group by position
group_distinct_functions=yes # Group functions with distinct group_distinct_functions=yes # Group functions with distinct
group_func_extra_bit_and=yes # Group function BIT_AND group_func_extra_bit_and=yes # Group function BIT_AND
...@@ -297,18 +299,20 @@ group_func_sql_min_str=yes # Group function MIN on strings ...@@ -297,18 +299,20 @@ group_func_sql_min_str=yes # Group function MIN on strings
group_func_sql_some=no # Group function SOME group_func_sql_some=no # Group function SOME
group_func_sql_sum=yes # Group function SUM group_func_sql_sum=yes # Group function SUM
group_functions=yes # Group functions group_functions=yes # Group functions
group_on_unused=yes # Group on unused column
has_true_false=no # TRUE and FALSE has_true_false=no # TRUE and FALSE
having=yes # Having having=yes # Having
having_with_alias=yes # Having on alias having_with_alias=yes # Having on alias
having_with_group=yes # Having with group function having_with_group=yes # Having with group function
hex_numbers=yes # hex numbers (0x41) hex_numbers=yes # hex numbers (0x41)
hex_strings=no # hex strings (x'1ace') hex_strings=no # hex strings (x'1ace')
ignore_end_space=yes # ignore end space in compare ignore_end_space=yes # Ignore end space in compare
index_in_create=yes # index in create table index_in_create=yes # index in create table
index_namespace=yes # different namespace for index index_namespace=yes # different namespace for index
index_parts=yes # index on column part (extension) index_parts=yes # index on column part (extension)
inner_join=yes # inner join inner_join=yes # inner join
insert_empty_string=yes # insert empty string insert_empty_string=yes # insert empty string
insert_multi_value=yes # INSERT with Value lists
insert_select=yes # insert INTO ... SELECT ... insert_select=yes # insert INTO ... SELECT ...
insert_with_set=yes # INSERT with set syntax insert_with_set=yes # INSERT with set syntax
intersect=no # intersect intersect=no # intersect
...@@ -351,7 +355,6 @@ multi_null_in_unique=yes # null in unique index ...@@ -351,7 +355,6 @@ multi_null_in_unique=yes # null in unique index
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=yes # Value lists in INSERT
natural_join=yes # natural join natural_join=yes # natural join
natural_join_incompat=yes # natural join (incompatible lists) natural_join_incompat=yes # natural join (incompatible lists)
natural_left_outer_join=yes # natural left outer join natural_left_outer_join=yes # natural left outer join
...@@ -360,6 +363,7 @@ null_concat_expr=yes # Is concat('a',NULL) = NULL ...@@ -360,6 +363,7 @@ null_concat_expr=yes # Is concat('a',NULL) = NULL
null_in_index=yes # null in index null_in_index=yes # null in index
null_in_unique=yes # null in unique index null_in_unique=yes # null in unique index
null_num_expr=yes # Is 1+NULL = NULL null_num_expr=yes # Is 1+NULL = NULL
nulls_in_unique=yes # null combination in unique index
odbc_left_outer_join=yes # left outer join odbc style odbc_left_outer_join=yes # left outer join odbc style
operating_system=Linux 2.2.13-SMP alpha # crash-me tested on operating_system=Linux 2.2.13-SMP alpha # crash-me tested on
order_by=yes # Order by order_by=yes # Order by
...@@ -367,6 +371,7 @@ order_by_alias=yes # Order by alias ...@@ -367,6 +371,7 @@ order_by_alias=yes # Order by alias
order_by_function=yes # Order by function order_by_function=yes # Order by function
order_by_position=yes # Order by position order_by_position=yes # Order by position
order_by_remember_desc=no # Order by DESC is remembered order_by_remember_desc=no # Order by DESC is remembered
order_on_unused=yes # Order by on unused column
primary_key_in_create=yes # primary key in create table primary_key_in_create=yes # primary key in create table
psm_functions=no # PSM functions (ANSI SQL) psm_functions=no # PSM functions (ANSI SQL)
psm_modules=no # PSM modules (ANSI SQL) psm_modules=no # PSM modules (ANSI SQL)
...@@ -389,14 +394,14 @@ select_limit2=yes # SELECT with LIMIT #,# ...@@ -389,14 +394,14 @@ select_limit2=yes # SELECT with LIMIT #,#
select_string_size=1048565 # constant string size in SELECT select_string_size=1048565 # constant string size in SELECT
select_table_update=no # Update with sub select select_table_update=no # Update with sub select
select_without_from=yes # SELECT without FROM select_without_from=yes # SELECT without FROM
server_version=MySQL 3.23.28 gamma # server version server_version=MySQL 3.23.29 gamma # server version
simple_joins=yes # ANSI SQL simple joins simple_joins=yes # ANSI SQL simple joins
storage_of_float=round # Storage of float values storage_of_float=round # Storage of float values
subqueries=no # subqueries subqueries=no # subqueries
table_alias=yes # Table alias table_alias=yes # Table alias
table_name_case=no # case independent table names table_name_case=no # case independent table names
table_wildcard=yes # Select table_name.* table_wildcard=yes # Select table_name.*
tempoary_table=yes # temporary tables temporary_table=yes # temporary tables
transactions=no # transactions transactions=no # transactions
truncate_table=yes # truncate truncate_table=yes # truncate
type_extra_abstime=no # Type abstime type_extra_abstime=no # Type abstime
...@@ -515,4 +520,4 @@ unique_in_create=yes # unique in create table ...@@ -515,4 +520,4 @@ unique_in_create=yes # unique in create table
unique_null_in_create=yes # unique null in create unique_null_in_create=yes # unique null in create
user_comment=Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; ccc + cxx # comment user_comment=Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; ccc + cxx # comment
views=no # views views=no # views
where_string_size=1048540 # constant string size in where where_string_size=1048539 # constant string size in where
...@@ -345,7 +345,7 @@ multi_null_in_unique=yes # null in unique index ...@@ -345,7 +345,7 @@ multi_null_in_unique=yes # null in unique index
multi_strings=no # Multiple line strings multi_strings=no # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=no # natural join natural_join=no # natural join
natural_join_incompat=no # natural join (incompatible lists) natural_join_incompat=no # natural join (incompatible lists)
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
......
...@@ -343,7 +343,7 @@ multi_null_in_unique=yes # null in unique index ...@@ -343,7 +343,7 @@ multi_null_in_unique=yes # null in unique index
multi_strings=yes # Multiple line strings multi_strings=yes # Multiple line strings
multi_table_delete=no # DELETE FROM table1,table2... multi_table_delete=no # DELETE FROM table1,table2...
multi_table_update=no # Update with many tables multi_table_update=no # Update with many tables
multi_value_insert=no # Value lists in INSERT insert_multi_value=no # Value lists in INSERT
natural_join=yes # natural join natural_join=yes # natural join
natural_join_incompat=yes # natural join (incompatible lists) natural_join_incompat=yes # natural join (incompatible lists)
natural_left_outer_join=no # natural left outer join natural_left_outer_join=no # natural left outer join
......
...@@ -163,10 +163,14 @@ print_match("String handling","string|select_constant|quote_with|double_quotes|e ...@@ -163,10 +163,14 @@ print_match("String handling","string|select_constant|quote_with|double_quotes|e
print_match("Quoting","quote"); print_match("Quoting","quote");
print_match("Name limits","name","alter"); print_match("Name limits","name","alter");
print_match("Index limits",'index|primary|unique'); print_match("Index limits",'index|primary|unique');
print_match("Type limits",'char|float|binary|text_size|date|end_space'); print_match("Type limits",'char|float|text_size|date|end_space','atomic');
print_match("Expression limits",'expression|conditions|select_limit'); print_match("Expressions",'expression|conditions|select_limit|binary|hex|cast|logical|true_false');
print_match("Comments",'comment'); print_match("Comments",'comment');
print_match("ALTER TABLE",'alter'); print_match("ALTER TABLE",'alter');
print_match("CREATE and DROP",'create|drop|rowid|temporary|domains|truncate');
print_match("SELECT",'alias|compute|select|table_wildcard');
print_match("Sets",'intersect|minus|union|except');
print_match("INSERT",'insert');
print_options("Other features"); print_options("Other features");
print_match("Other limits",'\S'); print_match("Other limits",'\S');
......
File mode changed from 100755 to 100644
...@@ -151,7 +151,7 @@ sub new ...@@ -151,7 +151,7 @@ sub new
$limits{'alter_table'} = 1; # Have ALTER TABLE $limits{'alter_table'} = 1; # Have ALTER TABLE
$limits{'alter_add_multi_col'}= 1; #Have ALTER TABLE t add a int,add b int; $limits{'alter_add_multi_col'}= 1; #Have ALTER TABLE t add a int,add b int;
$limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
$limits{'multi_value_insert'} = 1; # Have INSERT ... values (1,2),(3,4) $limits{'insert_multi_value'} = 1; # Have INSERT ... values (1,2),(3,4)
$limits{'group_func_extra_std'} = 1; # Have group function std(). $limits{'group_func_extra_std'} = 1; # Have group function std().
...@@ -2775,7 +2775,7 @@ sub new ...@@ -2775,7 +2775,7 @@ sub new
$limits{'alter_table'} = 1; # Have ALTER TABLE $limits{'alter_table'} = 1; # Have ALTER TABLE
$limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int; $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
$limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
$limits{'multi_value_insert'} = 0; # Does not have INSERT ... values (1,2),(3,4) $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
$limits{'group_func_extra_std'} = 0; # Does not have group function std(). $limits{'group_func_extra_std'} = 0; # Does not have group function std().
...@@ -2975,7 +2975,7 @@ sub new ...@@ -2975,7 +2975,7 @@ sub new
$limits{'alter_table'} = 1; # Have ALTER TABLE $limits{'alter_table'} = 1; # Have ALTER TABLE
$limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int; $limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int;
$limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
$limits{'multi_value_insert'} = 0; # Does not have INSERT ... values (1,2),(3,4) $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
$limits{'group_func_extra_std'} = 0; # Does not have group function std(). $limits{'group_func_extra_std'} = 0; # Does not have group function std().
...@@ -3186,7 +3186,7 @@ sub new ...@@ -3186,7 +3186,7 @@ sub new
$limits{'alter_table'} = 1; # Have ALTER TABLE $limits{'alter_table'} = 1; # Have ALTER TABLE
$limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int; $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
$limits{'alter_table_dropcol'}= 0; # Have ALTER TABLE DROP column $limits{'alter_table_dropcol'}= 0; # Have ALTER TABLE DROP column
$limits{'multi_value_insert'} = 1; $limits{'insert_multi_value'} = 1;
$limits{'group_func_extra_std'} = 0; # Does not have group function std(). $limits{'group_func_extra_std'} = 0; # Does not have group function std().
...@@ -3227,7 +3227,7 @@ sub version ...@@ -3227,7 +3227,7 @@ sub version
# Pick up SQLGetInfo option SQL_DBMS_VER (18) # Pick up SQLGetInfo option SQL_DBMS_VER (18)
# #
#$version = $dbh->func(18, GetInfo); #$version = $dbh->func(18, GetInfo);
$version="2.1"; $version="FrontBase 2.1";
$dbh->disconnect; $dbh->disconnect;
return $version; return $version;
} }
......
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
...@@ -130,7 +130,7 @@ else ...@@ -130,7 +130,7 @@ else
$query="insert into bench1 (id,id2,id3,dummy1) values "; $query="insert into bench1 (id,id2,id3,dummy1) values ";
} }
if (($opt_fast || $opt_fast_insert) && $limits->{'multi_value_insert'}) if (($opt_fast || $opt_fast_insert) && $limits->{'insert_multi_value'})
{ {
$query_size=$server->{'limits'}->{'query_size'}; $query_size=$server->{'limits'}->{'query_size'};
...@@ -1177,7 +1177,7 @@ if ($server->small_rollback_segment()) ...@@ -1177,7 +1177,7 @@ if ($server->small_rollback_segment())
$loop_time=new Benchmark; $loop_time=new Benchmark;
$fields=$#fields; $fields=$#fields;
if (($opt_fast || $opt_fast_insert) && $limits->{'multi_value_insert'}) if (($opt_fast || $opt_fast_insert) && $limits->{'insert_multi_value'})
{ {
$query_size=$server->{'limits'}->{'query_size'}; $query_size=$server->{'limits'}->{'query_size'};
$query="insert into bench1 values "; $query="insert into bench1 values ";
...@@ -1331,7 +1331,7 @@ if ($opt_fast && defined($server->{vacuum})) ...@@ -1331,7 +1331,7 @@ if ($opt_fast && defined($server->{vacuum}))
# Test multi value inserts if the server supports it # Test multi value inserts if the server supports it
# #
if ($limits->{'multi_value_insert'}) if ($limits->{'insert_multi_value'})
{ {
$query_size=$limits->{'query_size'}; # Same limit for all databases $query_size=$limits->{'query_size'}; # Same limit for all databases
......
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
...@@ -483,6 +483,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -483,6 +483,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
char fixed_name[FN_REFLEN]; char fixed_name[FN_REFLEN];
const char *old_proc_info=thd->proc_info; const char *old_proc_info=thd->proc_info;
MYISAM_SHARE* share = file->s; MYISAM_SHARE* share = file->s;
ha_rows rows= file->state->records;
DBUG_ENTER("ha_myisam::repair"); DBUG_ENTER("ha_myisam::repair");
param.table_name = table->table_name; param.table_name = table->table_name;
...@@ -559,6 +560,13 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -559,6 +560,13 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
T_STATISTICS ? UPDATE_STAT : 0)); T_STATISTICS ? UPDATE_STAT : 0));
info(HA_STATUS_NO_LOCK | HA_STATUS_TIME | HA_STATUS_VARIABLE | info(HA_STATUS_NO_LOCK | HA_STATUS_TIME | HA_STATUS_VARIABLE |
HA_STATUS_CONST); HA_STATUS_CONST);
if (rows != file->state->records)
{
char llbuff[22],llbuff2[22];
mi_check_print_warning(&param,"Number of rows changed from %s to %s",
llstr(rows,llbuff),
llstr(file->state->records,llbuff2));
}
} }
else else
{ {
......
...@@ -388,7 +388,9 @@ int main(int argc, char** argv) ...@@ -388,7 +388,9 @@ int main(int argc, char** argv)
if(use_remote) if(use_remote)
{ {
#ifndef __WIN__
init_thr_alarm(10); // need to do this manually init_thr_alarm(10); // need to do this manually
#endif
mysql = safe_connect(); mysql = safe_connect();
} }
......
...@@ -170,6 +170,7 @@ static struct rand_struct sql_rand; ...@@ -170,6 +170,7 @@ static struct rand_struct sql_rand;
static int cleanup_done; static int cleanup_done;
static char **defaults_argv,time_zone[30]; static char **defaults_argv,time_zone[30];
static const char *default_table_type_name; static const char *default_table_type_name;
static char glob_hostname[FN_REFLEN];
#ifdef HAVE_OPENSSL #ifdef HAVE_OPENSSL
static bool opt_use_ssl = FALSE; static bool opt_use_ssl = FALSE;
...@@ -356,6 +357,7 @@ static void close_connections(void) ...@@ -356,6 +357,7 @@ static void close_connections(void)
#if defined(AIX_3_2) || defined(HAVE_DEC_3_2_THREADS) #if defined(AIX_3_2) || defined(HAVE_DEC_3_2_THREADS)
if (ip_sock != INVALID_SOCKET) if (ip_sock != INVALID_SOCKET)
{ {
DBUG_PRINT("error",("closing TCP/IP and socket files"));
VOID(shutdown(ip_sock,2)); VOID(shutdown(ip_sock,2));
VOID(closesocket(ip_sock)); VOID(closesocket(ip_sock));
VOID(shutdown(unix_sock,2)); VOID(shutdown(unix_sock,2));
...@@ -607,12 +609,15 @@ void clean_up(void) ...@@ -607,12 +609,15 @@ void clean_up(void)
free_defaults(defaults_argv); free_defaults(defaults_argv);
my_free(mysql_tmpdir,MYF(0)); my_free(mysql_tmpdir,MYF(0));
x_free(opt_bin_logname); x_free(opt_bin_logname);
#ifndef __WIN__
(void) my_delete(pidfile_name,MYF(0)); // This may not always exist (void) my_delete(pidfile_name,MYF(0)); // This may not always exist
my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0); #endif
my_thread_end();
/* Tell main we are ready */ /* Tell main we are ready */
(void) pthread_mutex_lock(&LOCK_thread_count); (void) pthread_mutex_lock(&LOCK_thread_count);
ready_to_exit=1; ready_to_exit=1;
/* do the broadcast inside the lock to ensure that my_end() is not called */
(void) pthread_cond_broadcast(&COND_thread_count); (void) pthread_cond_broadcast(&COND_thread_count);
(void) pthread_mutex_unlock(&LOCK_thread_count); (void) pthread_mutex_unlock(&LOCK_thread_count);
} /* clean_up */ } /* clean_up */
...@@ -926,8 +931,8 @@ void end_thread(THD *thd, bool put_in_cache) ...@@ -926,8 +931,8 @@ void end_thread(THD *thd, bool put_in_cache)
DBUG_PRINT("info", ("sending a broadcast")) DBUG_PRINT("info", ("sending a broadcast"))
/* Tell main we are ready */ /* Tell main we are ready */
(void) pthread_cond_broadcast(&COND_thread_count);
(void) pthread_mutex_unlock(&LOCK_thread_count); (void) pthread_mutex_unlock(&LOCK_thread_count);
(void) pthread_cond_broadcast(&COND_thread_count);
DBUG_PRINT("info", ("unlocked thread_count mutex")) DBUG_PRINT("info", ("unlocked thread_count mutex"))
#ifdef ONE_THREAD #ifdef ONE_THREAD
if (!(test_flags & TEST_NO_THREADS)) // For debugging under Linux if (!(test_flags & TEST_NO_THREADS)) // For debugging under Linux
...@@ -1308,7 +1313,6 @@ int main(int argc, char **argv) ...@@ -1308,7 +1313,6 @@ int main(int argc, char **argv)
#endif #endif
{ {
DEBUGGER_OFF; DEBUGGER_OFF;
char hostname[FN_REFLEN];
my_umask=0660; // Default umask for new files my_umask=0660; // Default umask for new files
my_umask_dir=0700; // Default umask for new directories my_umask_dir=0700; // Default umask for new directories
...@@ -1332,9 +1336,9 @@ int main(int argc, char **argv) ...@@ -1332,9 +1336,9 @@ int main(int argc, char **argv)
#endif #endif
#endif #endif
if (gethostname(hostname,sizeof(hostname)-4) < 0) if (gethostname(glob_hostname,sizeof(glob_hostname)-4) < 0)
strmov(hostname,"mysql"); strmov(glob_hostname,"mysql");
strmov(pidfile_name,hostname); strmov(pidfile_name,glob_hostname);
strmov(strcend(pidfile_name,'.'),".pid"); // Add extension strmov(strcend(pidfile_name,'.'),".pid"); // Add extension
#ifdef DEMO_VERSION #ifdef DEMO_VERSION
strcat(server_version,"-demo"); strcat(server_version,"-demo");
...@@ -1488,9 +1492,9 @@ int main(int argc, char **argv) ...@@ -1488,9 +1492,9 @@ int main(int argc, char **argv)
/* Setup log files */ /* Setup log files */
if (opt_log) if (opt_log)
open_log(&mysql_log, hostname, opt_logname, ".log", LOG_NORMAL); open_log(&mysql_log, glob_hostname, opt_logname, ".log", LOG_NORMAL);
if (opt_update_log) if (opt_update_log)
open_log(&mysql_update_log, hostname, opt_update_logname, "", open_log(&mysql_update_log, glob_hostname, opt_update_logname, "",
LOG_NEW); LOG_NEW);
if (opt_bin_log) if (opt_bin_log)
{ {
...@@ -1499,12 +1503,12 @@ int main(int argc, char **argv) ...@@ -1499,12 +1503,12 @@ int main(int argc, char **argv)
if (!opt_bin_logname) if (!opt_bin_logname)
{ {
char tmp[FN_REFLEN]; char tmp[FN_REFLEN];
strnmov(tmp,hostname,FN_REFLEN-5); strnmov(tmp,glob_hostname,FN_REFLEN-5);
strmov(strcend(tmp,'.'),"-bin"); strmov(strcend(tmp,'.'),"-bin");
opt_bin_logname=my_strdup(tmp,MYF(MY_WME)); opt_bin_logname=my_strdup(tmp,MYF(MY_WME));
} }
mysql_bin_log.set_index_file_name(opt_binlog_index_name); mysql_bin_log.set_index_file_name(opt_binlog_index_name);
open_log(&mysql_bin_log, hostname, opt_bin_logname, "-bin", open_log(&mysql_bin_log, glob_hostname, opt_bin_logname, "-bin",
LOG_BIN); LOG_BIN);
} }
else else
...@@ -1512,7 +1516,7 @@ int main(int argc, char **argv) ...@@ -1512,7 +1516,7 @@ int main(int argc, char **argv)
} }
if (opt_slow_log) if (opt_slow_log)
open_log(&mysql_slow_log, hostname, opt_slow_logname, "-slow.log", open_log(&mysql_slow_log, glob_hostname, opt_slow_logname, "-slow.log",
LOG_NORMAL); LOG_NORMAL);
if (ha_init()) if (ha_init())
{ {
...@@ -1711,10 +1715,7 @@ int main(int argc, char **argv) ...@@ -1711,10 +1715,7 @@ int main(int argc, char **argv)
pthread_cond_wait(&COND_thread_count,&LOCK_thread_count); pthread_cond_wait(&COND_thread_count,&LOCK_thread_count);
} }
(void) pthread_mutex_unlock(&LOCK_thread_count); (void) pthread_mutex_unlock(&LOCK_thread_count);
#ifndef __WIN__ my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
(void) my_delete(pidfile_name,MYF(0)); // Not neaded anymore
#endif
my_thread_end();
exit(0); exit(0);
return(0); /* purecov: deadcode */ return(0); /* purecov: deadcode */
} }
...@@ -2089,8 +2090,8 @@ pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused))) ...@@ -2089,8 +2090,8 @@ pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused)))
#ifdef __NT__ #ifdef __NT__
pthread_mutex_lock(&LOCK_thread_count); pthread_mutex_lock(&LOCK_thread_count);
handler_count--; handler_count--;
pthread_cond_signal(&COND_handler_count);
pthread_mutex_unlock(&LOCK_thread_count); pthread_mutex_unlock(&LOCK_thread_count);
pthread_cond_signal(&COND_handler_count);
#endif #endif
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
...@@ -197,5 +197,4 @@ ...@@ -197,5 +197,4 @@
"Okänd system variabel '%-.64'", "Okänd system variabel '%-.64'",
"Tabell '%-.64s' är crashad och bör repareras med REPAIR TABLE", "Tabell '%-.64s' är crashad och bör repareras med REPAIR TABLE",
"Tabell '%-.64s' är crashad och senast (automatiska?) reparation misslyckades", "Tabell '%-.64s' är crashad och senast (automatiska?) reparation misslyckades",
#ER_WARNING_NOT_COMPLETE_ROLLBACK
"Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK", "Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK",
...@@ -669,12 +669,11 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, ...@@ -669,12 +669,11 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name,
DBUG_RETURN(0); DBUG_RETURN(0);
key_length= (uint) (strmov(strmov(key,db)+1,table_name)-key)+1; key_length= (uint) (strmov(strmov(key,db)+1,table_name)-key)+1;
int4store(key + key_length, thd->slave_proxy_id); int4store(key + key_length, thd->slave_proxy_id);
key_length += 4;
for (table=thd->temporary_tables; table ; table=table->next) for (table=thd->temporary_tables; table ; table=table->next)
{ {
if (table->key_length == key_length && if (table->key_length == key_length+4 &&
!memcmp(table->table_cache_key,key,key_length)) !memcmp(table->table_cache_key,key,key_length+4))
{ {
if (table->query_id == thd->query_id) if (table->query_id == thd->query_id)
{ {
......
...@@ -1404,8 +1404,11 @@ mysql_execute_command(void) ...@@ -1404,8 +1404,11 @@ mysql_execute_command(void)
#endif #endif
break; break;
} }
case SQLCOM_DELETE:
case SQLCOM_TRUNCATE: case SQLCOM_TRUNCATE:
lex->where=0;
lex->select_limit=HA_POS_ERROR;
/* Fall through */
case SQLCOM_DELETE:
{ {
if (check_access(thd,DELETE_ACL,tables->db,&tables->grant.privilege)) if (check_access(thd,DELETE_ACL,tables->db,&tables->grant.privilege))
goto error; /* purecov: inspected */ goto error; /* purecov: inspected */
...@@ -1589,8 +1592,11 @@ mysql_execute_command(void) ...@@ -1589,8 +1592,11 @@ mysql_execute_command(void)
} }
} }
else else
{
thd->options&= ~(ulong) (OPTION_STATUS_NO_TRANS_UPDATE);
thd->server_status&= ~SERVER_STATUS_AUTOCOMMIT; thd->server_status&= ~SERVER_STATUS_AUTOCOMMIT;
} }
}
send_ok(&thd->net); send_ok(&thd->net);
break; break;
} }
...@@ -1755,9 +1761,17 @@ mysql_execute_command(void) ...@@ -1755,9 +1761,17 @@ mysql_execute_command(void)
} }
break; break;
case SQLCOM_BEGIN: case SQLCOM_BEGIN:
thd->options|= OPTION_BEGIN; if (end_active_trans(thd))
{
res= -1;
}
else
{
thd->options= ((thd->options & (ulong) (OPTION_STATUS_NO_TRANS_UPDATE)) |
OPTION_BEGIN);
thd->server_status|= SERVER_STATUS_IN_TRANS; thd->server_status|= SERVER_STATUS_IN_TRANS;
send_ok(&thd->net); send_ok(&thd->net);
}
break; break;
case SQLCOM_COMMIT: case SQLCOM_COMMIT:
/* /*
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
#include "sql_select.h" // For select_describe #include "sql_select.h" // For select_describe
#include "sql_acl.h" #include "sql_acl.h"
#include <my_dir.h> #include <my_dir.h>
extern "C" pthread_mutex_t THR_LOCK_keycache;
/* extern "C" pthread_mutex_t THR_LOCK_keycache; */
static const char *grant_names[]={ static const char *grant_names[]={
"select","insert","update","delete","create","drop","reload","shutdown", "select","insert","update","delete","create","drop","reload","shutdown",
...@@ -988,7 +989,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) ...@@ -988,7 +989,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables)
if (send_fields(thd,field_list,1)) if (send_fields(thd,field_list,1))
DBUG_RETURN(1); /* purecov: inspected */ DBUG_RETURN(1); /* purecov: inspected */
pthread_mutex_lock(&THR_LOCK_keycache); /* pthread_mutex_lock(&THR_LOCK_keycache); */
pthread_mutex_lock(&LOCK_status); pthread_mutex_lock(&LOCK_status);
for (i=0; variables[i].name; i++) for (i=0; variables[i].name; i++)
{ {
...@@ -1037,13 +1038,13 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) ...@@ -1037,13 +1038,13 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables)
} }
} }
pthread_mutex_unlock(&LOCK_status); pthread_mutex_unlock(&LOCK_status);
pthread_mutex_unlock(&THR_LOCK_keycache); /* pthread_mutex_unlock(&THR_LOCK_keycache); */
send_eof(&thd->net); send_eof(&thd->net);
DBUG_RETURN(0); DBUG_RETURN(0);
err: err:
pthread_mutex_unlock(&LOCK_status); pthread_mutex_unlock(&LOCK_status);
pthread_mutex_unlock(&THR_LOCK_keycache); /* pthread_mutex_unlock(&THR_LOCK_keycache); */
DBUG_RETURN(1); DBUG_RETURN(1);
} }
......
/******************************************************************************
* *
* N O T I C E *
* *
* Copyright Abandoned, 1987, Fred Fish *
* *
* *
* This previously copyrighted work has been placed into the public *
* domain by the author and may be freely used for any purpose, *
* private or commercial. *
* *
* Because of the number of inquiries I was receiving about the use *
* of this product in commercially developed works I have decided to *
* simply make it public domain to further its unrestricted use. I *
* specifically would be most happy to see this material become a *
* part of the standard Unix distributions by AT&T and the Berkeley *
* Computer Science Research Group, and a standard part of the GNU *
* system from the Free Software Foundation. *
* *
* I would appreciate it, as a courtesy, if this notice is left in *
* all copies and derivative works. Thank you. *
* *
* The author makes no warranty of any kind with respect to this *
* product and explicitly disclaims any implied warranties of mer- *
* chantability or fitness for any particular purpose. *
* *
******************************************************************************
*/
The *MySQL* server license for non Microsoft operating systems
**************************************************************
*MySQL FREE PUBLIC LICENSE*
(Version 4, March 5, 1995)
Copyright (C) 1995, 1996 TcX AB & Monty Program KB & Detron HB
Stockholm SWEDEN, Helsingfors FINLAND and Uppsala SWEDEN
All rights reserved.
NOTE: This license is not the same as any of the GNU Licenses published
by the Free Software Foundation. Its terms are substantially different
from those of the GNU Licenses. If you are familiar with the GNU
Licenses, please read this license with extra care.
This License applies to the computer program known as "MySQL". The
"Program", below, refers to such program, and a "work based on the
Program" means either the Program or any derivative work of the Program,
as defined in the United States Copyright Act of 1976, such as a
translation or a modification. The Program is a copyrighted work whose
copyright is held by TcX Datakonsult AB and Monty Program KB and Detron
HB.
This License does not apply when running "MySQL" on any Microsoft
operating system. Microsoft operating systems include all versions of
Microsoft Windows NT and Microsoft Windows.
BY MODIFYING OR DISTRIBUTING THE PROGRAM (OR ANY WORK BASED ON THE
PROGRAM), YOU INDICATE YOUR ACCEPTANCE OF THIS LICENSE TO DO SO, AND ALL
ITS TERMS AND CONDITIONS FOR COPYING, DISTRIBUTING OR MODIFYING THE
PROGRAM OR WORKS BASED ON IT. NOTHING OTHER THAN THIS LICENSE GRANTS
YOU PERMISSION TO MODIFY OR DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE
WORKS. THESE ACTIONS ARE PROHIBITED BY LAW. IF YOU DO NOT ACCEPT THESE
TERMS AND CONDITIONS, DO NOT MODIFY OR DISTRIBUTE THE PROGRAM.
1. Licenses.
Licensor hereby grants you the following rights, provided that you
comply with all of the restrictions set forth in this License and
provided, further, that you distribute an unmodified copy of this
License with the Program:
a. You may copy and distribute literal (i.e., verbatim) copies
of the Program's source code as you receive it throughout the
world, in any medium.
b. You may modify the Program, create works based on the Program
and distribute copies of such throughout the world, in any
medium.
2. Restrictions.
This license is subject to the following restrictions:
a. Distribution of the Program or any work based on the Program
by a commercial organization to any third party is prohibited
if any payment is made in connection with such distribution,
whether directly (as in payment for a copy of the Program) or
indirectly (as in payment for some service related to the
Program, or payment for some product or service that includes
a copy of the Program "without charge"; these are only
examples, and not an exhaustive enumeration of prohibited
activities). However, the following methods of distribution
involving payment shall not in and of themselves be a
violation of this restriction:
A. Posting the Program on a public access information
storage and retrieval service for which a fee is
received for retrieving information (such as an on-line
service), provided that the fee is not content-dependent
(i.e., the fee would be the same for retrieving the same
volume of information consisting of random data).
B. Distributing the Program on a CD-ROM, provided that the
files containing the Program are reproduced entirely and
verbatim on such CD-ROM, and provided further that all
information on such CD-ROM be redistributable for
non-commercial purposes without charge.
b. Activities other than copying, distribution and modification
of the Program are not subject to this License and they are
outside its scope. Functional use (running) of the Program
is not restricted, and any output produced through the use of
the Program is subject to this license only if its contents
constitute a work based on the Program (independent of having
been made by running the Program).
c. You must meet all of the following conditions with respect to
the distribution of any work based on the Program:
A. If you have modified the Program, you must cause your
work to carry prominent notices stating that you have
modified the Program's files and the date of any change;
B. You must cause any work that you distribute or publish,
that in whole or in part contains or is derived from the
Program or any part thereof, to be licensed as a whole
and at no charge to all third parties under the terms of
this License;
C. If the modified program normally reads commands
interactively when run, you must cause it, at each time
the modified program commences operation, to print or
display an announcement including an appropriate
copyright notice and a notice that there is no warranty
(or else, saying that you provide a warranty). Such
notice must also state that users may redistribute the
Program only under the conditions of this License and
tell the user how to view the copy of this License
included with the Program. (Exception: if the Program
itself is interactive but does not normally print such
an announcement, your work based on the Program is not
required to print an announcement.);
D. You must accompany any such work based on the Program
with the complete corresponding machine-readable source
code, delivered on a medium customarily used for
software interchange. The source code for a work means
the preferred form of the work for making modifications
to it. For an executable work, complete source code
means all the source code for all modules it contains,
plus any associated interface definition files, plus the
scripts used to control compilation and installation of
the executable code. However, the source code
distributed need not include anything that is normally
distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless
that component itself accompanies the executable code;
E. If you distribute any written or printed material at all
with the Program or any work based on the Program, such
material must include either a written copy of this
License, or a prominent written indication that the
Program or the work based on the Program is covered by
this License and written instructions for printing
and/or displaying the copy of the License on the
distribution medium;
F. You may not impose any further restrictions on the
recipient's exercise of the rights granted herein.
If distribution of executable or object code is made by
offering the equivalent ability to copy from a
designated place, then offering equivalent ability to
copy the source code from the same place counts as
distribution of the source code, even though third
parties are not compelled to copy the source code along
with the object code.
3. Reservation of Rights.
No rights are granted to the Program except as expressly set forth
herein. You may not copy, modify, sublicense, or distribute the
Program except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense or distribute the
Program is void, and will automatically terminate your rights
under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
4. Other Restrictions.
If the distribution and/or use of the Program is restricted in
certain countries for any reason, Licensor may add an explicit
geographical distribution limitation excluding those countries, so
that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation
as if written in the body of this License.
5. Limitations.
THE PROGRAM IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THERE IS
NO WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL LICENSOR, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.
LICENSE ISSUES
==============
The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
the OpenSSL License and the original SSLeay license apply to the toolkit.
See below for the actual license texts. Actually both licenses are BSD-style
Open Source licenses. In case of any license issues related to OpenSSL
please contact openssl-core@openssl.org.
OpenSSL License
---------------
/* ====================================================================
* Copyright (c) 1998-1999 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
Original SSLeay License
-----------------------
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
As the Vio is currently used only as part of MySQL, separate
installation isn't currently supported.
Virtual IO library.
IO wrappers for sockets, fd-s, SSL.
Languages:C++
This library is based on work of many others.
They have different policies and I haven't thought up
about resulting licence - GPL, L(essen)GPL, BSD-style, whatever.
The licences are here for reference:
COPYING.mysql: MySQL licence. Some socket functions.
COPYING.dbug: Fred Fish's dbug library. I use it extensively ;=)
COPYING.openssl:OpenSSL licence. SSL wrappers.
At the moment there is no real 'Makefile', just config.mk/targets.mk
and Makefile.am to build it as a module in MySQL. Therefore, there
is currently no possibility to build it as a separate library, but
with MySQL-s root Makefile it should just a matter of leaving
everything else out.
* Consistent error handling. May be the initialization should
be taken out of constructors and be put into virtual method open().
* The open() method is named very misleadingly().
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment