mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 01:34:17 +01:00
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.
This commit is contained in:
parent
a6ed922e8c
commit
38e582aa19
4 changed files with 31 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
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;
|
||||
|
|
Loading…
Add table
Reference in a new issue