MDEV-6045 MySQL Bug#11829861 - SUBSTRING_INDEX() RESULTS "OMIT" CHARACTER WHEN USED INSIDE LOWER()
This commit is contained in:
parent
5fc5195fc5
commit
213f10363e
@ -119,7 +119,7 @@ substring_index('aaaaaaaaa1','aaa',-3)
|
||||
aaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aaa',-4);
|
||||
substring_index('aaaaaaaaa1','aaa',-4)
|
||||
|
||||
aaaaaaaaa1
|
||||
select substring_index('the king of thethe hill','the',-2);
|
||||
substring_index('the king of thethe hill','the',-2)
|
||||
the hill
|
||||
@ -2657,3 +2657,32 @@ NULL NULL
|
||||
8
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Start of 5.3 tests
|
||||
#
|
||||
#
|
||||
# Bug#11829861: SUBSTRING_INDEX() RESULTS IN MISSING CHARACTERS WHEN USED
|
||||
# INSIDE LOWER()
|
||||
#
|
||||
SET @user_at_host = 'root@mytinyhost-PC.local';
|
||||
SELECT LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1));
|
||||
LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1))
|
||||
mytinyhost-pc.local
|
||||
# End of test BUG#11829861
|
||||
#
|
||||
# Bug#42404: SUBSTRING_INDEX() RESULTS ARE INCONSISTENT
|
||||
#
|
||||
CREATE TABLE t (i INT NOT NULL, c CHAR(255) NOT NULL);
|
||||
INSERT INTO t VALUES (0,'.www.mysql.com'),(1,'.wwwmysqlcom');
|
||||
SELECT i, SUBSTRING_INDEX(c, '.', -2) FROM t WHERE i = 1;
|
||||
i SUBSTRING_INDEX(c, '.', -2)
|
||||
1 .wwwmysqlcom
|
||||
SELECT i, SUBSTRING_INDEX(c, '.', -2) FROM t;
|
||||
i SUBSTRING_INDEX(c, '.', -2)
|
||||
0 mysql.com
|
||||
1 .wwwmysqlcom
|
||||
DROP TABLE t;
|
||||
# End of test BUG#42404
|
||||
#
|
||||
# End of 5.3 tests
|
||||
#
|
||||
|
@ -1405,3 +1405,30 @@ select group_concat( i ), make_set( i, 'a', 'b' ) field from t1 group by field;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Start of 5.3 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11829861: SUBSTRING_INDEX() RESULTS IN MISSING CHARACTERS WHEN USED
|
||||
--echo # INSIDE LOWER()
|
||||
--echo #
|
||||
SET @user_at_host = 'root@mytinyhost-PC.local';
|
||||
SELECT LOWER(SUBSTRING_INDEX(@user_at_host, '@', -1));
|
||||
--echo # End of test BUG#11829861
|
||||
|
||||
--echo #
|
||||
--echo # Bug#42404: SUBSTRING_INDEX() RESULTS ARE INCONSISTENT
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t (i INT NOT NULL, c CHAR(255) NOT NULL);
|
||||
INSERT INTO t VALUES (0,'.www.mysql.com'),(1,'.wwwmysqlcom');
|
||||
SELECT i, SUBSTRING_INDEX(c, '.', -2) FROM t WHERE i = 1;
|
||||
SELECT i, SUBSTRING_INDEX(c, '.', -2) FROM t;
|
||||
DROP TABLE t;
|
||||
--echo # End of test BUG#42404
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.3 tests
|
||||
--echo #
|
||||
|
@ -1095,7 +1095,7 @@ String *Item_str_conv::val_str(String *str)
|
||||
if (multiply == 1)
|
||||
{
|
||||
uint len;
|
||||
res= copy_if_not_alloced(str,res,res->length());
|
||||
res= copy_if_not_alloced(&tmp_value, res, res->length());
|
||||
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
||||
(char*) res->ptr(), res->length());
|
||||
DBUG_ASSERT(len <= res->length());
|
||||
@ -1296,8 +1296,10 @@ void Item_func_substr_index::fix_length_and_dec()
|
||||
String *Item_func_substr_index::val_str(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
char buff[MAX_FIELD_WIDTH];
|
||||
String tmp(buff,sizeof(buff),system_charset_info);
|
||||
String *res= args[0]->val_str(str);
|
||||
String *delimiter= args[1]->val_str(&tmp_value);
|
||||
String *delimiter= args[1]->val_str(&tmp);
|
||||
int32 count= (int32) args[2]->val_int();
|
||||
uint offset;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user