mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Portability fixes for 4.0.3 build.
Don't update MyISAM index file on UPDATE if index is not changed Build-tools/Do-compile: Remove log files as early as possible Docs/manual.texi: Changelog BitKeeper/etc/ignore: Added myisam/test2.MYD myisam/test2.MYI to the ignore list include/my_semaphore.h: Portability fix for SCO and BSDI innobase/configure.in: Don't use inline with openbsd as this cases linker problems. myisam/mi_update.c: Don't update index file on UPDATE if index is not changed mysys/my_pthread.c: Portability fix for hpux sql/item_cmpfunc.cc: Don't convert bigint to bigint
This commit is contained in:
parent
c9bda5bc7e
commit
36827564d3
8 changed files with 56 additions and 24 deletions
|
@ -491,3 +491,5 @@ sql-bench/innotest1b
|
|||
sql-bench/innotest2
|
||||
sql-bench/innotest2a
|
||||
sql-bench/innotest2b
|
||||
myisam/test2.MYD
|
||||
myisam/test2.MYI
|
||||
|
|
|
@ -75,6 +75,19 @@ $ENV{"PERL5LIB"}="$pwd/$host/perl5:$pwd/$host/perl5/site_perl";
|
|||
$slave_port=$mysql_tcp_port+16;
|
||||
$manager_port=$mysql_tcp_port+1;
|
||||
|
||||
if ($opt_stage == 0)
|
||||
{
|
||||
system("mkdir Logs") if (! -d "Logs");
|
||||
system("mv $log ${log}-old") if (-f $log);
|
||||
unlink($log);
|
||||
}
|
||||
|
||||
open(LOG,">>$log") || abort("Can't open log file, error $?");
|
||||
select LOG;
|
||||
$|=1;
|
||||
select STDOUT;
|
||||
$|=1;
|
||||
|
||||
if (-x "$host/bin/mysqladmin")
|
||||
{
|
||||
log_system("$host/bin/mysqladmin --no-defaults -u root -S $mysql_unix_port -s shutdown");
|
||||
|
@ -97,17 +110,8 @@ if ($opt_stage == 0)
|
|||
}
|
||||
rm_all("$host/test");
|
||||
system("mkdir $host/test") if (! -d "$host/test");
|
||||
system("mkdir Logs") if (! -d "Logs");
|
||||
system("mv $log ${log}-old") if (-f $log);
|
||||
unlink($log);
|
||||
}
|
||||
|
||||
open(LOG,">>$log") || abort("Can't open log file, error $?");
|
||||
select LOG;
|
||||
$|=1;
|
||||
select STDOUT;
|
||||
$|=1;
|
||||
|
||||
safe_cd($host);
|
||||
if ($opt_stage == 0 && ! $opt_use_old_distribution)
|
||||
{
|
||||
|
@ -553,13 +557,17 @@ sub rm_all
|
|||
sub kill_all
|
||||
{
|
||||
my ($pattern) = @_;
|
||||
my ($USER,$BSD,$LINUX,$pscmd, $user, $pid);
|
||||
my ($USER,$BSD,$LINUX, $pscmd, $user, $pid);
|
||||
$user=$ENV{'USER'};
|
||||
$BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4";
|
||||
$BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4" || $^O eq 'darwin';
|
||||
$LINUX = $^O eq 'linux';
|
||||
$pscmd = $BSD ? "/bin/ps -auxww" : $LINUX ? "/bin/ps axuw" : "/bin/ps -ef";
|
||||
|
||||
open(PS, "$pscmd|") || die "can't run $pscmd: $!";
|
||||
if (!open(PS, "$pscmd|"))
|
||||
{
|
||||
print "Warning: Can't run $pscmd: $!\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Catch any errors with eval. A bad pattern, for instance.
|
||||
process:
|
||||
|
|
|
@ -8828,7 +8828,7 @@ To get a core dump on Linux if @code{mysqld} dies with a @code{SIGSEGV} signal,
|
|||
you can start @code{mysqld} with the @code{--core-file} option. Note
|
||||
that you also probably need to raise the @code{core file size} by adding
|
||||
@code{ulimit -c 1000000} to @code{safe_mysqld} or starting
|
||||
@code{safe_mysqld} with @code{--core-file-sizes=1000000}.
|
||||
@code{safe_mysqld} with @code{--core-file-size=1000000}.
|
||||
@xref{safe_mysqld, , @code{safe_mysqld}}.
|
||||
|
||||
If you are linking your own MySQL client and get the error:
|
||||
|
@ -50261,6 +50261,8 @@ each individual 4.0.x release.
|
|||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Don't update MyISAM index file on update if not strictly necessary.
|
||||
@item
|
||||
Fixed bug in @code{SELECT DISTINCT ... FROM many_tables ORDER BY
|
||||
not-used-column}.
|
||||
@item
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
C_MODE_START
|
||||
#ifdef HAVE_SEMAPHORE_H
|
||||
#include <semaphore.h>
|
||||
#elif defined(__bsdi__)
|
||||
#elif !defined(__bsdi__)
|
||||
#ifdef __WIN__
|
||||
typedef HANDLE sem_t;
|
||||
#else
|
||||
|
|
|
@ -97,6 +97,8 @@ case "$target_os" in
|
|||
sysv5uw7*)
|
||||
# Problem when linking on SCO
|
||||
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
|
||||
*-openbsd*)
|
||||
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
|
||||
esac
|
||||
|
||||
case "$target" in
|
||||
|
|
|
@ -83,8 +83,6 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
|
|||
/* Check which keys changed from the original row */
|
||||
|
||||
new_key=info->lastkey2;
|
||||
key_changed=HA_STATE_KEY_CHANGED; /* We changed current database */
|
||||
/* Remove key that didn't change */
|
||||
changed=0;
|
||||
for (i=0 ; i < share->base.keys ; i++)
|
||||
{
|
||||
|
@ -93,7 +91,7 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
|
|||
/* The following code block is for text searching by SerG */
|
||||
if (share->keyinfo[i].flag & HA_FULLTEXT )
|
||||
{
|
||||
if(_mi_ft_cmp(info,i,oldrec, newrec))
|
||||
if (_mi_ft_cmp(info,i,oldrec, newrec))
|
||||
{
|
||||
if ((int) i == info->lastinx)
|
||||
key_changed|=HA_STATE_WRITTEN;
|
||||
|
@ -121,11 +119,24 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (changed)
|
||||
key_changed|= HA_STATE_KEY_CHANGED;
|
||||
|
||||
if (share->calc_checksum)
|
||||
{
|
||||
info->checksum=(*share->calc_checksum)(info,newrec);
|
||||
if ((*share->update_record)(info,pos,newrec))
|
||||
goto err;
|
||||
key_changed|= HA_STATE_KEY_CHANGED; /* Must update index file */
|
||||
}
|
||||
{
|
||||
/* Don't update index file if data file is not extended */
|
||||
MI_STATUS_INFO state;
|
||||
memcpy((char*) &state, (char*) info->state, sizeof(state));
|
||||
if ((*share->update_record)(info,pos,newrec))
|
||||
goto err;
|
||||
if (!key_changed &&
|
||||
memcmp((char*) &state, (char*) info->state, sizeof(state)))
|
||||
key_changed|= HA_STATE_KEY_CHANGED; /* Must update index file */
|
||||
}
|
||||
if (auto_key_changed)
|
||||
update_auto_increment(info,newrec);
|
||||
if (share->calc_checksum)
|
||||
|
@ -147,6 +158,8 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
|
|||
err:
|
||||
DBUG_PRINT("error",("key: %d errno: %d",i,my_errno));
|
||||
save_errno=my_errno;
|
||||
if (changed)
|
||||
key_changed|= HA_STATE_KEY_CHANGED;
|
||||
if (my_errno == HA_ERR_FOUND_DUPP_KEY || my_errno == HA_ERR_RECORD_FILE_FULL)
|
||||
{
|
||||
info->errkey= (int) i;
|
||||
|
|
|
@ -387,14 +387,13 @@ int pthread_signal(int sig, void (*func)())
|
|||
#undef pthread_mutex_destroy
|
||||
#undef pthread_mutex_wait
|
||||
#undef pthread_mutex_timedwait
|
||||
#undef pthread_mutex_t
|
||||
#undef pthread_cond_wait
|
||||
#undef pthread_cond_timedwait
|
||||
#undef pthread_mutex_trylock
|
||||
#undef pthread_mutex_t
|
||||
#undef pthread_cond_init
|
||||
#undef pthread_cond_wait
|
||||
#undef pthread_cond_timedwait
|
||||
#undef pthread_cond_t
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** Patches for AIX and DEC OSF/1 3.2
|
||||
*****************************************************************************/
|
||||
|
|
|
@ -37,10 +37,16 @@ longlong Item_func_not::val_int()
|
|||
return !null_value && value == 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Convert a constant expression or string to an integer.
|
||||
This is done when comparing DATE's of different formats and
|
||||
also when comparing bigint to strings (in which case the string
|
||||
is converted once to a bigint).
|
||||
*/
|
||||
|
||||
static bool convert_constant_item(Field *field, Item **item)
|
||||
{
|
||||
if ((*item)->const_item())
|
||||
if ((*item)->const_item() && (*item)->type() != Item::INT_ITEM)
|
||||
{
|
||||
if (!(*item)->save_in_field(field) &&
|
||||
!((*item)->null_value))
|
||||
|
|
Loading…
Reference in a new issue