mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #36041: mysql-test-run doesn't seem to string match
100% effectively on Windows The mysqltest docs state that the 'replace_result' command doesn't perform any escape processing. However the current implementation was processing backslash escapes in the from/to strings. This prevents replacing e.g. patch on windows (where backslash is used as a path separator). Fixed by removing the backslash escape processing from 'replace_result'. client/mysqltest.c: Bug #36041: remove the escape processing from --replace_result mysql-test/r/mysqltest.result: Bug #36041: test case mysql-test/t/mysqltest.test: Bug #36041: test case
This commit is contained in:
@ -8094,8 +8094,6 @@ uint replace_len(char * str)
|
|||||||
uint len=0;
|
uint len=0;
|
||||||
while (*str)
|
while (*str)
|
||||||
{
|
{
|
||||||
if (str[0] == '\\' && str[1])
|
|
||||||
str++;
|
|
||||||
str++;
|
str++;
|
||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
@ -8194,35 +8192,7 @@ REPLACE *init_replace(char * *from, char * *to,uint count,
|
|||||||
}
|
}
|
||||||
for (pos=from[i], len=0; *pos ; pos++)
|
for (pos=from[i], len=0; *pos ; pos++)
|
||||||
{
|
{
|
||||||
if (*pos == '\\' && *(pos+1))
|
follow_ptr->chr= (uchar) *pos;
|
||||||
{
|
|
||||||
pos++;
|
|
||||||
switch (*pos) {
|
|
||||||
case 'b':
|
|
||||||
follow_ptr->chr = SPACE_CHAR;
|
|
||||||
break;
|
|
||||||
case '^':
|
|
||||||
follow_ptr->chr = START_OF_LINE;
|
|
||||||
break;
|
|
||||||
case '$':
|
|
||||||
follow_ptr->chr = END_OF_LINE;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
follow_ptr->chr = '\r';
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
follow_ptr->chr = '\t';
|
|
||||||
break;
|
|
||||||
case 'v':
|
|
||||||
follow_ptr->chr = '\v';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
follow_ptr->chr = (uchar) *pos;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
follow_ptr->chr= (uchar) *pos;
|
|
||||||
follow_ptr->table_offset=i;
|
follow_ptr->table_offset=i;
|
||||||
follow_ptr->len= ++len;
|
follow_ptr->len= ++len;
|
||||||
follow_ptr++;
|
follow_ptr++;
|
||||||
|
@ -725,4 +725,7 @@ drop table t1;
|
|||||||
mysqltest: At line 1: change user failed: Unknown database 'inexistent'
|
mysqltest: At line 1: change user failed: Unknown database 'inexistent'
|
||||||
mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO)
|
mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO)
|
||||||
mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES)
|
mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES)
|
||||||
|
SELECT 'c:\\a.txt' AS col;
|
||||||
|
col
|
||||||
|
z
|
||||||
End of tests
|
End of tests
|
||||||
|
@ -2123,6 +2123,13 @@ rmdir $MYSQLTEST_VARDIR/tmp/testdir;
|
|||||||
remove_file $MYSQLTEST_VARDIR/tmp/testdir/file1.txt;
|
remove_file $MYSQLTEST_VARDIR/tmp/testdir/file1.txt;
|
||||||
rmdir $MYSQLTEST_VARDIR/tmp/testdir;
|
rmdir $MYSQLTEST_VARDIR/tmp/testdir;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #36041: mysql-test-run doesn't seem to string match 100% effectively
|
||||||
|
# on Windows
|
||||||
|
#
|
||||||
|
|
||||||
|
--replace_result c:\\a.txt z
|
||||||
|
SELECT 'c:\\a.txt' AS col;
|
||||||
|
|
||||||
--echo End of tests
|
--echo End of tests
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user