Commit 38e582aa authored by Arun Kuruvila's avatar Arun Kuruvila

Bug #16581605: REPLACE.EXE UTILITY IS BROKEN IN 5.5

Description:- Replace, the string replacement utility fails
on the windows platform.

Analysis:- The utility takes files and multiple string
pairs as input. In the windows platform, the utility maps
the standard input incorrectly (Considers 0 as the fd for
standard input instead of 2048 on windows). Hence when the
input file is supplied to the utility due to the incorrect
mapping, a bad file descriptor error is generated causing
the utility to exit with an error.

Fix:- "my_fileno()" is used for getting the correct file
despscriptor for standard input.
parent a6ed922e
/*
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
......@@ -1020,7 +1020,7 @@ FILE *in,*out;
updated=retain=0;
reset_buffer();
while ((error=fill_buffer_retaining(fileno(in),retain)) > 0)
while ((error=fill_buffer_retaining(my_fileno(in),retain)) > 0)
{
end_of_line=buffer ;
buffer[bufbytes]=0; /* Sentinel */
......
......@@ -2461,6 +2461,14 @@ sub environment_setup {
"$path_client_bindir/perror");
$ENV{'MY_PERROR'}= native_path($exe_perror);
# ----------------------------------------------------
# replace
# ----------------------------------------------------
my $exe_replace= mtr_exe_exists(vs_config_dirs('extra', 'replace'),
"$basedir/extra/replace",
"$path_client_bindir/replace");
$ENV{'REPLACE'}= native_path($exe_replace);
# Create an environment variable to make it possible
# to detect that valgrind is being used from test cases
$ENV{'VALGRIND_TEST'}= $opt_valgrind;
......
......@@ -60,3 +60,8 @@ SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME = 'socket';
VARIABLE_NAME
SOCKET
#
# Bug#16581605: REPLACE.EXE UTILITY IS BROKEN IN 5.5
#
xyz
def
......@@ -98,3 +98,19 @@ deallocate prepare abc;
SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME = 'socket';
--echo #
--echo # Bug#16581605: REPLACE.EXE UTILITY IS BROKEN IN 5.5
--echo #
# Creating a temporary text file.
--write_file $MYSQL_TMP_DIR/bug16581605.txt
abc
def
EOF
#REPLACE.EXE UTILITY will work fine after the fix.
--exec $REPLACE abc xyz < $MYSQL_TMP_DIR/bug16581605.txt
#Cleanup
remove_file $MYSQL_TMP_DIR/bug16581605.txt;
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