Skip to content

Commit

Permalink
Merge branch '10.0' into 10.1
Browse files Browse the repository at this point in the history
  • Loading branch information
vuvova committed Sep 29, 2016
2 parents ad20769 + a3f11f7 commit 2ede40e
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 12 deletions.
49 changes: 48 additions & 1 deletion mysql-test/lib/My/Platform.pm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use File::Path;
use base qw(Exporter);
our @EXPORT= qw(IS_CYGWIN IS_WINDOWS IS_WIN32PERL
native_path posix_path mixed_path
check_socket_path_length process_alive);
check_socket_path_length process_alive open_for_append);

BEGIN {
if ($^O eq "cygwin") {
Expand Down Expand Up @@ -161,4 +161,51 @@ sub process_alive {
}



use Symbol qw( gensym );

use if $^O eq 'MSWin32', 'Win32API::File', qw( CloseHandle CreateFile GetOsFHandle OsFHandleOpen OPEN_ALWAYS FILE_APPEND_DATA
FILE_SHARE_READ FILE_SHARE_WRITE FILE_SHARE_DELETE );
use if $^O eq 'MSWin32', 'Win32::API';

use constant WIN32API_FILE_NULL => [];

# Open a file for append
# On Windows we use CreateFile with FILE_APPEND_DATA
# to insure that writes are atomic, not interleaved
# with writes by another processes.
sub open_for_append
{
my ($file) = @_;
my $fh = gensym();

if (IS_WIN32PERL)
{
my $handle;
if (!($handle = CreateFile(
$file,
FILE_APPEND_DATA(),
FILE_SHARE_READ()|FILE_SHARE_WRITE()|FILE_SHARE_DELETE(),
WIN32API_FILE_NULL,
OPEN_ALWAYS(),# Create if doesn't exist.
0,
WIN32API_FILE_NULL,
)))
{
return undef;
}

if (!OsFHandleOpen($fh, $handle, 'wat'))
{
CloseHandle($handle);
return undef;
}
return $fh;
}

open($fh,">>",$file) or return undef;
return $fh;
}


1;
9 changes: 5 additions & 4 deletions mysql-test/lib/mtr_io.pl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

use strict;
use Carp;
use My::Platform;

sub mtr_fromfile ($);
sub mtr_tofile ($@);
Expand All @@ -45,10 +46,10 @@ ($)

sub mtr_tofile ($@) {
my $file= shift;

open(FILE,">>",$file) or mtr_error("can't open file \"$file\": $!");
print FILE join("", @_);
close FILE;
my $fh= open_for_append $file;
mtr_error("can't open file \"$file\": $!") unless defined($fh);
print $fh join("", @_);
close $fh;
}


Expand Down
6 changes: 3 additions & 3 deletions mysys/my_fopen.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ static FILE *my_win_freopen(const char *path, const char *mode, FILE *stream)
HANDLE osfh;

DBUG_ASSERT(path && stream);
DBUG_ASSERT(strchr(mode, 'a')); /* We use FILE_APPEND_DATA below */

/* Services don't have stdout/stderr on Windows, so _fileno returns -1. */
if (fd < 0)
Expand All @@ -111,15 +112,14 @@ static FILE *my_win_freopen(const char *path, const char *mode, FILE *stream)
fd= _fileno(stream);
}

if ((osfh= CreateFile(path, GENERIC_READ | GENERIC_WRITE,
if ((osfh= CreateFile(path, GENERIC_READ | FILE_APPEND_DATA,
FILE_SHARE_READ | FILE_SHARE_WRITE |
FILE_SHARE_DELETE, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
NULL)) == INVALID_HANDLE_VALUE)
return NULL;

if ((handle_fd= _open_osfhandle((intptr_t)osfh,
_O_APPEND | _O_TEXT)) == -1)
if ((handle_fd= _open_osfhandle((intptr_t)osfh, _O_TEXT)) == -1)
{
CloseHandle(osfh);
return NULL;
Expand Down
13 changes: 11 additions & 2 deletions plugin/feedback/utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ static const char *get_os_version_name(OSVERSIONINFOEX *ver)
{
DWORD major = ver->dwMajorVersion;
DWORD minor = ver->dwMinorVersion;

if (major == 10 && minor == 0)
{
return (ver->wProductType == VER_NT_WORKSTATION) ?
"Windows 10" : "Windows Server 2016";
}
if (major == 6 && minor == 3)
{
return (ver->wProductType == VER_NT_WORKSTATION)?
Expand Down Expand Up @@ -102,7 +106,12 @@ static int uname(struct utsname *buf)
if(version_str && version_str[0])
sprintf(buf->version, "%s %s",version_str, ver.szCSDVersion);
else
sprintf(buf->version, "%s", ver.szCSDVersion);
{
/* Fallback for unknown versions, e.g "Windows <major_ver>.<minor_ver>" */
sprintf(buf->version, "Windows %d.%d%s",
ver.dwMajorVersion, ver.dwMinorVersion,
(ver.wProductType == VER_NT_WORKSTATION ? "" : " Server"));
}

#ifdef _WIN64
strcpy(buf->machine, "x64");
Expand Down
6 changes: 5 additions & 1 deletion scripts/mysqld_safe.sh
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,10 @@ else
logging=syslog
fi

# close stdout and stderr, everything goes to $logging now
exec 1>&-
exec 2>&-

USER_OPTION=""
if test -w / -o "$USER" = "root"
then
Expand Down Expand Up @@ -768,7 +772,7 @@ if [ ! -d $mysql_unix_port_dir ]
then
if ! `mkdir -p $mysql_unix_port_dir`
then
echo "Fatal error Can't create database directory '$mysql_unix_port'"
log_error "Fatal error Can't create database directory '$mysql_unix_port'"
exit 1
fi
chown $user $mysql_unix_port_dir
Expand Down
2 changes: 1 addition & 1 deletion support-files/mysql.server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ case "$mode" in
then
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" >/dev/null &
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
wait_for_ready; return_value=$?

# Make lock for RedHat / SuSE
Expand Down

0 comments on commit 2ede40e

Please sign in to comment.