Commit 3ffea7a1 authored by Georgi Kodinov's avatar Georgi Kodinov

merge 5.1->5.1-security

parents 64184770 7856500b
...@@ -33,10 +33,12 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file) ...@@ -33,10 +33,12 @@ LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
LINE_BUFFER *line_buff; LINE_BUFFER *line_buff;
MY_STAT input_file_stat; MY_STAT input_file_stat;
#ifndef __WIN__
if (my_fstat(fileno(file), &input_file_stat, MYF(MY_WME)) || if (my_fstat(fileno(file), &input_file_stat, MYF(MY_WME)) ||
MY_S_ISDIR(input_file_stat.st_mode) || MY_S_ISDIR(input_file_stat.st_mode) ||
MY_S_ISBLK(input_file_stat.st_mode)) MY_S_ISBLK(input_file_stat.st_mode))
return 0; return 0;
#endif
if (!(line_buff=(LINE_BUFFER*) if (!(line_buff=(LINE_BUFFER*)
my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL)))) my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
......
# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
...@@ -610,7 +610,25 @@ touch $RBR%{_sysconfdir}/mysqlmanager.passwd ...@@ -610,7 +610,25 @@ touch $RBR%{_sysconfdir}/mysqlmanager.passwd
############################################################################## ##############################################################################
%pre server %pre server
mysql_datadir=%{mysqldatadir} # This is the code running at the beginning of a RPM upgrade action,
# before replacing the old files with the new ones.
# There are users who deviate from the default file system layout.
# Check local settings to support them.
if [ -x %{_bindir}/my_print_defaults ]
then
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p'`
PID_FILE_PATT=`%{_bindir}/my_print_defaults server mysqld | grep '^--pid-file=' | sed -n 's/--pid-file=//p'`
fi
if [ -z "$mysql_datadir" ]
then
mysql_datadir=%{mysqldatadir}
fi
if [ -z "$PID_FILE_PATT" ]
then
PID_FILE_PATT="$mysql_datadir/*.pid"
fi
# Check if we can safely upgrade. An upgrade is only safe if it's from one # Check if we can safely upgrade. An upgrade is only safe if it's from one
# of our RPMs in the same version family. # of our RPMs in the same version family.
...@@ -681,7 +699,7 @@ fi ...@@ -681,7 +699,7 @@ fi
# We assume that if there is exactly one ".pid" file, # We assume that if there is exactly one ".pid" file,
# it contains the valid PID of a running MySQL server. # it contains the valid PID of a running MySQL server.
NR_PID_FILES=`ls $mysql_datadir/*.pid 2>/dev/null | wc -l` NR_PID_FILES=`ls $PID_FILE_PATT 2>/dev/null | wc -l`
case $NR_PID_FILES in case $NR_PID_FILES in
0 ) SERVER_TO_START='' ;; # No "*.pid" file == no running server 0 ) SERVER_TO_START='' ;; # No "*.pid" file == no running server
1 ) SERVER_TO_START='true' ;; 1 ) SERVER_TO_START='true' ;;
...@@ -703,8 +721,8 @@ if [ -f $STATUS_FILE ]; then ...@@ -703,8 +721,8 @@ if [ -f $STATUS_FILE ]; then
echo "before repeating the MySQL upgrade." echo "before repeating the MySQL upgrade."
exit 1 exit 1
elif [ -n "$SEVERAL_PID_FILES" ] ; then elif [ -n "$SEVERAL_PID_FILES" ] ; then
echo "Your MySQL directory '$mysql_datadir' has more than one PID file:" echo "You have more than one PID file:"
ls -ld $mysql_datadir/*.pid ls -ld $PID_FILE_PATT
echo "Please check which one (if any) corresponds to a running server" echo "Please check which one (if any) corresponds to a running server"
echo "and delete all others before repeating the MySQL upgrade." echo "and delete all others before repeating the MySQL upgrade."
exit 1 exit 1
...@@ -729,17 +747,17 @@ if [ -d $mysql_datadir ] ; then ...@@ -729,17 +747,17 @@ if [ -d $mysql_datadir ] ; then
if [ -n "$SERVER_TO_START" ] ; then if [ -n "$SERVER_TO_START" ] ; then
# There is only one PID file, race possibility ignored # There is only one PID file, race possibility ignored
echo "PID file:" >> $STATUS_FILE echo "PID file:" >> $STATUS_FILE
ls -l $mysql_datadir/*.pid >> $STATUS_FILE ls -l $PID_FILE_PATT >> $STATUS_FILE
cat $mysql_datadir/*.pid >> $STATUS_FILE cat $PID_FILE_PATT >> $STATUS_FILE
echo >> $STATUS_FILE echo >> $STATUS_FILE
echo "Server process:" >> $STATUS_FILE echo "Server process:" >> $STATUS_FILE
ps -fp `cat $mysql_datadir/*.pid` >> $STATUS_FILE ps -fp `cat $PID_FILE_PATT` >> $STATUS_FILE
echo >> $STATUS_FILE echo >> $STATUS_FILE
echo "SERVER_TO_START=$SERVER_TO_START" >> $STATUS_FILE echo "SERVER_TO_START=$SERVER_TO_START" >> $STATUS_FILE
else else
# Take a note we checked it ... # Take a note we checked it ...
echo "PID file:" >> $STATUS_FILE echo "PID file:" >> $STATUS_FILE
ls -l $mysql_datadir/*.pid >> $STATUS_FILE 2>&1 ls -l $PID_FILE_PATT >> $STATUS_FILE 2>&1
fi fi
fi fi
...@@ -754,7 +772,20 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then ...@@ -754,7 +772,20 @@ if [ -x %{_sysconfdir}/init.d/mysql ] ; then
fi fi
%post server %post server
mysql_datadir=%{mysqldatadir} # This is the code running at the end of a RPM install or upgrade action,
# after the (new) files have been written.
# There are users who deviate from the default file system layout.
# Check local settings to support them.
if [ -x %{_bindir}/my_print_defaults ]
then
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p'`
fi
if [ -z "$mysql_datadir" ]
then
mysql_datadir=%{mysqldatadir}
fi
NEW_VERSION=%{mysql_version}-%{release} NEW_VERSION=%{mysql_version}-%{release}
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
...@@ -1133,6 +1164,13 @@ fi ...@@ -1133,6 +1164,13 @@ fi
############################################################################## ##############################################################################
%changelog %changelog
* Thu Feb 03 2011 Joerg Bruehe <joerg.bruehe@oracle.com>
- Fix bug#56581: If an installation deviates from the default file locations
("datadir" and "pid-file"), the mechanism to detect a running server (on upgrade)
should still work, and use these locations.
The problem was that the fix for bug#27072 did not check for local settings.
* Wed Nov 24 2010 Alexander Nozdrin <alexander.nozdrin@oracle.com> * Wed Nov 24 2010 Alexander Nozdrin <alexander.nozdrin@oracle.com>
- EXCEPTIONS-CLIENT has been deleted, remove it from here too. - EXCEPTIONS-CLIENT has been deleted, remove it from here too.
......
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