Fix for IO_CACHE.
Portability fixes.
This commit is contained in:
parent
3c057478c2
commit
5fedd2dda7
@ -1,7 +1,8 @@
|
|||||||
|
/bin/rm -f */.deps/*.P */*.o
|
||||||
make -k clean
|
make -k clean
|
||||||
/bin/rm -f */.deps/*.P
|
/bin/rm -f */.deps/*.P */*.o
|
||||||
/bin/rm -f config.cache
|
/bin/rm -f */.deps/*.P config.cache innobase/config.cache bdb/build_unix/config.cache mysql-*.tar.gz
|
||||||
aclocal; autoheader; aclocal; automake; autoconf
|
aclocal; autoheader; aclocal; automake; autoconf
|
||||||
|
|
||||||
CFLAGS=-O6 CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-debug --with-extra-charsets=complex
|
CFLAGS=-O1 CC=gcc CXX=gcc CXXFLAGS="-O1 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-debug --with-extra-charsets=complex --without-extra-tools
|
||||||
make
|
make
|
||||||
|
@ -110,7 +110,7 @@ int vio_read(Vio * vio, gptr buf, int size)
|
|||||||
vio->reading = 1;
|
vio->reading = 1;
|
||||||
if (vio->where_in_packet >= vio->end_of_packet)
|
if (vio->where_in_packet >= vio->end_of_packet)
|
||||||
{
|
{
|
||||||
dbug_assert(vio->packets);
|
DBUG_ASSERT(vio->packets);
|
||||||
vio->where_in_packet = vio->packets + sizeof(char *) + 4;
|
vio->where_in_packet = vio->packets + sizeof(char *) + 4;
|
||||||
vio->end_of_packet = vio->where_in_packet +
|
vio->end_of_packet = vio->where_in_packet +
|
||||||
uint4korr(vio->packets + sizeof(char *));
|
uint4korr(vio->packets + sizeof(char *));
|
||||||
|
@ -21,7 +21,6 @@ insert into t1 (b) select b from t2;
|
|||||||
insert into t2 (b) select b from t1;
|
insert into t2 (b) select b from t1;
|
||||||
insert into t1 (b) select b from t2;
|
insert into t1 (b) select b from t2;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="/home/sasha/bk/mysql-4.0/mysql-test/var/tmp" index directory="/home/sasha/bk/mysql-4.0/mysql-test/var/run";
|
|
||||||
insert into t9 select * from t1;
|
insert into t9 select * from t1;
|
||||||
check table t9;
|
check table t9;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
@ -45,18 +44,11 @@ alter table t9 rename t8, add column d int not null;
|
|||||||
alter table t8 rename t7;
|
alter table t8 rename t7;
|
||||||
rename table t7 to t9;
|
rename table t7 to t9;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="tmp";
|
Got one of the listed errors
|
||||||
Incorrect table name 'tmp'
|
Got one of the listed errors
|
||||||
drop database if exists test_mysqltest;
|
Got one of the listed errors
|
||||||
create database test_mysqltest;
|
Got one of the listed errors
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="/this-dir-does-not-exist";
|
Got one of the listed errors
|
||||||
Can't create/write to file '/this-dir-does-not-exist/t9.MYI' (Errcode: 2)
|
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="not-hard-path";
|
|
||||||
Incorrect table name 'not-hard-path'
|
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="/home/sasha/bk/mysql-4.0/mysql-test/var/run";
|
|
||||||
Can't create/write to file '/home/sasha/bk/mysql-4.0/mysql-test/var/run/t9.MYI' (Errcode: 17)
|
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="/home/sasha/bk/mysql-4.0/mysql-test/var/tmp";
|
|
||||||
Can't create/write to file '/home/sasha/bk/mysql-4.0/mysql-test/var/tmp/t9.MYD' (Errcode: 17)
|
|
||||||
alter table t9 rename test_mysqltest.t9;
|
alter table t9 rename test_mysqltest.t9;
|
||||||
select count(*) from test_mysqltest.t9;
|
select count(*) from test_mysqltest.t9;
|
||||||
count(*)
|
count(*)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
-- require r/have_symlink.require
|
-- require r/have_symlink.require
|
||||||
|
disable_query_log;
|
||||||
show variables like "have_symlink";
|
show variables like "have_symlink";
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
#
|
#
|
||||||
# First create little data to play with
|
# First create little data to play with
|
||||||
@ -33,7 +35,10 @@ drop table t2;
|
|||||||
# We use t9 here to not crash with tables generated by the backup test
|
# We use t9 here to not crash with tables generated by the backup test
|
||||||
#
|
#
|
||||||
|
|
||||||
|
disable_query_log;
|
||||||
eval create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="$MYSQL_TEST_DIR/var/tmp" index directory="$MYSQL_TEST_DIR/var/run";
|
eval create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="$MYSQL_TEST_DIR/var/tmp" index directory="$MYSQL_TEST_DIR/var/run";
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
insert into t9 select * from t1;
|
insert into t9 select * from t1;
|
||||||
check table t9;
|
check table t9;
|
||||||
optimize table t9;
|
optimize table t9;
|
||||||
@ -53,7 +58,8 @@ drop table t1;
|
|||||||
# Note that we are using the above table t9 here!
|
# Note that we are using the above table t9 here!
|
||||||
#
|
#
|
||||||
|
|
||||||
--error 1103
|
disable_query_log;
|
||||||
|
--error 1103,1103
|
||||||
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="tmp";
|
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="tmp";
|
||||||
|
|
||||||
# Check that we cannot link over a table from another database.
|
# Check that we cannot link over a table from another database.
|
||||||
@ -61,17 +67,18 @@ create table t1 (a int not null auto_increment, b char(16) not null, primary key
|
|||||||
drop database if exists test_mysqltest;
|
drop database if exists test_mysqltest;
|
||||||
create database test_mysqltest;
|
create database test_mysqltest;
|
||||||
|
|
||||||
--error 1
|
--error 1,1
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="/this-dir-does-not-exist";
|
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="/this-dir-does-not-exist";
|
||||||
|
|
||||||
--error 1103
|
--error 1103,1103
|
||||||
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="not-hard-path";
|
create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="not-hard-path";
|
||||||
|
|
||||||
--error 1
|
--error 1,1
|
||||||
eval create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="$MYSQL_TEST_DIR/var/run";
|
eval create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam index directory="$MYSQL_TEST_DIR/var/run";
|
||||||
|
|
||||||
--error 1
|
--error 1,1
|
||||||
eval create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="$MYSQL_TEST_DIR/var/tmp";
|
eval create table test_mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) type=myisam data directory="$MYSQL_TEST_DIR/var/tmp";
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
# Check moving table t9 from default database to test_mysqltest;
|
# Check moving table t9 from default database to test_mysqltest;
|
||||||
# In this case the symlinks should be removed.
|
# In this case the symlinks should be removed.
|
||||||
|
@ -32,17 +32,16 @@
|
|||||||
|
|
||||||
void my_b_seek(IO_CACHE *info,my_off_t pos)
|
void my_b_seek(IO_CACHE *info,my_off_t pos)
|
||||||
{
|
{
|
||||||
|
my_off_t offset = (pos - info->pos_in_file);
|
||||||
DBUG_ENTER("my_b_seek");
|
DBUG_ENTER("my_b_seek");
|
||||||
DBUG_PRINT("enter",("pos: %lu", (ulong) pos));
|
DBUG_PRINT("enter",("pos: %lu", (ulong) pos));
|
||||||
|
|
||||||
if (info->type == READ_CACHE)
|
if (info->type == READ_CACHE)
|
||||||
{
|
{
|
||||||
byte* try_pos=info->read_pos + (pos - info->pos_in_file);
|
if ((ulonglong) offset < (ulonglong) (info->read_end - info->buffer))
|
||||||
if (try_pos >= info->buffer &&
|
|
||||||
try_pos <= info->read_end)
|
|
||||||
{
|
{
|
||||||
/* The position is in the current buffer; Reuse it */
|
/* The read is in the current buffer; Reuse it */
|
||||||
info->read_pos = try_pos;
|
info->read_pos = info->buffer + offset;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -53,17 +52,14 @@ void my_b_seek(IO_CACHE *info,my_off_t pos)
|
|||||||
}
|
}
|
||||||
else if (info->type == WRITE_CACHE)
|
else if (info->type == WRITE_CACHE)
|
||||||
{
|
{
|
||||||
byte* try_pos;
|
|
||||||
/* If write is in current buffer, reuse it */
|
/* If write is in current buffer, reuse it */
|
||||||
try_pos = info->write_pos + (pos - info->pos_in_file);
|
if ((ulonglong) offset <
|
||||||
if (try_pos >= info->write_buffer &&
|
(ulonglong) (info->write_end - info->write_buffer))
|
||||||
try_pos <= info->write_end)
|
|
||||||
{
|
{
|
||||||
info->write_pos = try_pos;
|
info->write_pos = info->write_buffer + offset;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
else
|
flush_io_cache(info);
|
||||||
flush_io_cache(info);
|
|
||||||
}
|
}
|
||||||
info->pos_in_file=pos;
|
info->pos_in_file=pos;
|
||||||
info->seek_not_done=1;
|
info->seek_not_done=1;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#!@PERL@
|
#!@PERL@
|
||||||
#
|
|
||||||
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||||
#
|
#
|
||||||
# This library is free software; you can redistribute it and/or
|
# This library is free software; you can redistribute it and/or
|
||||||
@ -28,7 +27,7 @@ use warnings;
|
|||||||
|
|
||||||
$opt_groups=27; # Characters are 'A' -> Z
|
$opt_groups=27; # Characters are 'A' -> Z
|
||||||
|
|
||||||
$opt_loop_count=100000; # Change this to make test harder/easier
|
$opt_loop_count=10000; # Change this to make test harder/easier
|
||||||
$opt_medium_loop_count=100; # Change this to make test harder/easier
|
$opt_medium_loop_count=100; # Change this to make test harder/easier
|
||||||
|
|
||||||
chomp($pwd = `pwd`); $pwd = "." if ($pwd eq '');
|
chomp($pwd = `pwd`); $pwd = "." if ($pwd eq '');
|
||||||
@ -113,6 +112,128 @@ sub test_insert
|
|||||||
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
### Test rollback performance
|
||||||
|
###
|
||||||
|
|
||||||
|
print "Test transactions rollback performance\n" if($opt_debug);
|
||||||
|
|
||||||
|
##
|
||||||
|
## Insert rollback test
|
||||||
|
##
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test is done by inserting 100 rows in a table with lots of rows and
|
||||||
|
# then doing a rollback on these
|
||||||
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
my ($id,$rev_id,$grp,$region,$end,$loop_time,$end_time,$commit_loop,$count);
|
||||||
|
|
||||||
|
$dbh->{AutoCommit} = 0;
|
||||||
|
$loop_time=new Benchmark;
|
||||||
|
$end=$opt_loop_count*2;
|
||||||
|
$count=0;
|
||||||
|
|
||||||
|
for ($commit_loop=1, $id=$opt_loop_count ; $id < $end ;
|
||||||
|
$id++, $commit_loop++)
|
||||||
|
{
|
||||||
|
$rev_id=$end-$id;
|
||||||
|
$grp=$id/$opt_groups;
|
||||||
|
$region=chr(65+$id%$opt_groups);
|
||||||
|
do_query($dbh,"insert into bench1 values ($id,$rev_id,'$region',$grp,0)");
|
||||||
|
if ($commit_loop >= $opt_medium_loop_count)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$commit_loop=0;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($commit_loop > 1)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
$end_time=new Benchmark;
|
||||||
|
print "Time for insert_rollback ($count:$opt_loop_count): " .
|
||||||
|
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Update rollback test
|
||||||
|
##
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test is done by updating 100 rows in a table with lots of rows and
|
||||||
|
# then doing a rollback on these
|
||||||
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
my ($id,$loop_time,$end_time,$commit_loop,$count);
|
||||||
|
|
||||||
|
$dbh->{AutoCommit} = 0;
|
||||||
|
$loop_time=new Benchmark;
|
||||||
|
$end=$opt_loop_count*2;
|
||||||
|
$count=0;
|
||||||
|
|
||||||
|
for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++)
|
||||||
|
{
|
||||||
|
do_query($dbh,"update bench1 set updated=2 where idn=$id");
|
||||||
|
if ($commit_loop >= $opt_medium_loop_count)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$commit_loop=0;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($commit_loop > 1)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
$end_time=new Benchmark;
|
||||||
|
print "Time for update_rollback ($count:$opt_loop_count): " .
|
||||||
|
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Delete rollback test
|
||||||
|
##
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test is done by deleting 100 rows in a table with lots of rows and
|
||||||
|
# then doing a rollback on these
|
||||||
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
my ($id,$loop_time,$end_time,$commit_loop,$count);
|
||||||
|
|
||||||
|
$dbh->{AutoCommit} = 0;
|
||||||
|
$loop_time=new Benchmark;
|
||||||
|
$end=$opt_loop_count*2;
|
||||||
|
$count=0;
|
||||||
|
|
||||||
|
for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++)
|
||||||
|
{
|
||||||
|
do_query($dbh,"delete from bench1 where idn=$id");
|
||||||
|
if ($commit_loop >= $opt_medium_loop_count)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$commit_loop=0;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($commit_loop > 1)
|
||||||
|
{
|
||||||
|
$dbh->rollback;
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
$end_time=new Benchmark;
|
||||||
|
print "Time for delete_rollback ($count:$opt_loop_count): " .
|
||||||
|
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Test update perfomance
|
### Test update perfomance
|
||||||
###
|
###
|
||||||
@ -164,99 +285,6 @@ sub test_delete
|
|||||||
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
###
|
|
||||||
### Test rollback performance
|
|
||||||
###
|
|
||||||
|
|
||||||
print "Test transactions rollback performance\n" if($opt_debug);
|
|
||||||
|
|
||||||
##
|
|
||||||
## Insert rollback test
|
|
||||||
##
|
|
||||||
|
|
||||||
#
|
|
||||||
# Test is done by inserting 10 rows in a table with lots of rows and
|
|
||||||
# then doing a rollback on these
|
|
||||||
#
|
|
||||||
|
|
||||||
{
|
|
||||||
my ($id,$rev_id,$grp,$region,$end,$loop_time,$end_time,$commit_loop,$count);
|
|
||||||
|
|
||||||
$dbh->{AutoCommit} = 0;
|
|
||||||
$loop_time=new Benchmark;
|
|
||||||
$end=$opt_loop_count*2;
|
|
||||||
$count=0;
|
|
||||||
|
|
||||||
for ($commit_loop=1, $id=$opt_loop_count ; $id < $end ;
|
|
||||||
$id++, $commit_loop++)
|
|
||||||
{
|
|
||||||
$rev_id=$end-$id;
|
|
||||||
$grp=$id/$opt_groups;
|
|
||||||
$region=chr(65+$id%$opt_groups);
|
|
||||||
do_query($dbh,"insert into bench1 values ($id,$rev_id,'$region',$grp,0)");
|
|
||||||
if ($commit_loop >= $opt_medium_loop_count)
|
|
||||||
{
|
|
||||||
$dbh->rollback;
|
|
||||||
$commit_loop=0;
|
|
||||||
$count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($commit_loop > 1)
|
|
||||||
{
|
|
||||||
$dbh->rollback;
|
|
||||||
$count++;
|
|
||||||
}
|
|
||||||
$end_time=new Benchmark;
|
|
||||||
print "Time for insert_rollback ($count:$opt_loop_count): " .
|
|
||||||
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
###
|
|
||||||
### Update rollback test
|
|
||||||
###
|
|
||||||
|
|
||||||
if (0)
|
|
||||||
{
|
|
||||||
|
|
||||||
$dbh->{AutoCommit} = 0;
|
|
||||||
|
|
||||||
$loop_time=new Benchmark;
|
|
||||||
|
|
||||||
for ($id=0,$rev_id=$opt_medium_loop_count ; $id < $opt_medium_loop_count; $id++,$rev_id--)
|
|
||||||
{
|
|
||||||
$grp=$id/$opt_groups;
|
|
||||||
$region=chr(65+$id%$opt_groups);
|
|
||||||
do_query($dbh,"update bench1 set region='$region',grp=$grp where idn=$id");
|
|
||||||
}
|
|
||||||
|
|
||||||
$dbh->rollback;
|
|
||||||
|
|
||||||
$end_time=new Benchmark;
|
|
||||||
print "Time for update rollback (" . ($opt_medium_loop_count) . "): " .
|
|
||||||
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
|
||||||
|
|
||||||
### Delete rollback test
|
|
||||||
$dbh->{AutoCommit} = 0;
|
|
||||||
|
|
||||||
$loop_time=new Benchmark;
|
|
||||||
|
|
||||||
for ($id=0,$rev_id=$opt_medium_loop_count; $id < $opt_medium_loop_count; $id++,$rev_id--)
|
|
||||||
{
|
|
||||||
$grp=$id/$opt_groups;
|
|
||||||
$region=chr(65+$id%$opt_groups);
|
|
||||||
do_query($dbh,"delete from bench1 where idn=$id");
|
|
||||||
}
|
|
||||||
|
|
||||||
$dbh->rollback;
|
|
||||||
|
|
||||||
$end_time=new Benchmark;
|
|
||||||
print "Time for delete rollback (" . ($opt_medium_loop_count) . "): " .
|
|
||||||
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
|
|
||||||
|
|
||||||
$dbh->{AutoCommit} = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
####
|
####
|
||||||
#### End of benchmark
|
#### End of benchmark
|
||||||
####
|
####
|
||||||
|
@ -686,6 +686,11 @@ pthread_handler_decl(kill_server_thread,arg __attribute__((unused)))
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__amiga__)
|
||||||
|
#undef sigset
|
||||||
|
#define sigset signal
|
||||||
|
#endif
|
||||||
|
|
||||||
static sig_handler print_signal_warning(int sig)
|
static sig_handler print_signal_warning(int sig)
|
||||||
{
|
{
|
||||||
sql_print_error("Warning: Got signal %d from thread %d",
|
sql_print_error("Warning: Got signal %d from thread %d",
|
||||||
@ -1310,7 +1315,11 @@ static void init_signals(void)
|
|||||||
sigprocmask(SIG_SETMASK,&sa.sa_mask,NULL);
|
sigprocmask(SIG_SETMASK,&sa.sa_mask,NULL);
|
||||||
|
|
||||||
init_stacktrace();
|
init_stacktrace();
|
||||||
|
#if defined(__amiga__)
|
||||||
|
sa.sa_handler=(void(*)())handle_segfault;
|
||||||
|
#else
|
||||||
sa.sa_handler=handle_segfault;
|
sa.sa_handler=handle_segfault;
|
||||||
|
#endif
|
||||||
sigaction(SIGSEGV, &sa, NULL);
|
sigaction(SIGSEGV, &sa, NULL);
|
||||||
#ifdef SIGBUS
|
#ifdef SIGBUS
|
||||||
sigaction(SIGBUS, &sa, NULL);
|
sigaction(SIGBUS, &sa, NULL);
|
||||||
|
@ -779,10 +779,10 @@ int wild_compare(const char *str,const char *str_end,
|
|||||||
{
|
{
|
||||||
while (str != str_end && *str != cmp)
|
while (str != str_end && *str != cmp)
|
||||||
str++;
|
str++;
|
||||||
if (str++ == str_end)
|
if (str++ == str_end)
|
||||||
{
|
{
|
||||||
DBUG_RETURN(-1)
|
DBUG_RETURN(-1);
|
||||||
};
|
}
|
||||||
{
|
{
|
||||||
int tmp=wild_compare(str,str_end,wildstr,wildend,escape);
|
int tmp=wild_compare(str,str_end,wildstr,wildend,escape);
|
||||||
if (tmp <= 0)
|
if (tmp <= 0)
|
||||||
|
@ -218,7 +218,7 @@ void write_core(int sig)
|
|||||||
{
|
{
|
||||||
signal(sig, SIG_DFL);
|
signal(sig, SIG_DFL);
|
||||||
pthread_kill(pthread_self(), sig);
|
pthread_kill(pthread_self(), sig);
|
||||||
#if defined(P_MYID)
|
#if defined(P_MYID) && !defined(SCO)
|
||||||
/* On Solaris, the above kill is not enough */
|
/* On Solaris, the above kill is not enough */
|
||||||
sigsend(P_PID,P_MYID,sig);
|
sigsend(P_PID,P_MYID,sig);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user