mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for the bug #3089: SUBSTRING bug when mixed with CONCAT and ORDER BY
This commit is contained in:
@ -624,3 +624,13 @@ Note 1003 select high_priority md5(_latin1'hello') AS `md5('hello')`,sha(_latin1
|
|||||||
SELECT lpad(12345, 5, "#");
|
SELECT lpad(12345, 5, "#");
|
||||||
lpad(12345, 5, "#")
|
lpad(12345, 5, "#")
|
||||||
12345
|
12345
|
||||||
|
create table t1 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
|
||||||
|
insert into t1 values (1,'aaaaaaaaaa'), (2,'bbbbbbbbbb');
|
||||||
|
create table t2 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
|
||||||
|
insert into t2 values (1,'cccccccccc'), (2,'dddddddddd');
|
||||||
|
select substring(concat(t1.str, t2.str), 1, 15) "name" from t1, t2
|
||||||
|
where t2.id=t1.id order by name;
|
||||||
|
name
|
||||||
|
aaaaaaaaaaccccc
|
||||||
|
bbbbbbbbbbddddd
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -360,3 +360,16 @@ explain extended select md5('hello'), sha('abc'), sha1('abc'), soundex(''), 'moo
|
|||||||
#
|
#
|
||||||
|
|
||||||
SELECT lpad(12345, 5, "#");
|
SELECT lpad(12345, 5, "#");
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #3089
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
|
||||||
|
insert into t1 values (1,'aaaaaaaaaa'), (2,'bbbbbbbbbb');
|
||||||
|
create table t2 (id int(1), str varchar(10)) DEFAULT CHARSET=utf8;
|
||||||
|
insert into t2 values (1,'cccccccccc'), (2,'dddddddddd');
|
||||||
|
select substring(concat(t1.str, t2.str), 1, 15) "name" from t1, t2
|
||||||
|
where t2.id=t1.id order by name;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -1033,7 +1033,7 @@ void Item_func_substr::fix_length_and_dec()
|
|||||||
}
|
}
|
||||||
if (arg_count == 3 && args[2]->const_item())
|
if (arg_count == 3 && args[2]->const_item())
|
||||||
{
|
{
|
||||||
int32 length= (int32) args[2]->val_int() * default_charset_info->mbmaxlen;
|
int32 length= (int32) args[2]->val_int() * collation.collation->mbmaxlen;
|
||||||
if (length <= 0)
|
if (length <= 0)
|
||||||
max_length=0; /* purecov: inspected */
|
max_length=0; /* purecov: inspected */
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user