mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for bug#1944 'Function RPad() sometimes produce unexpected result'
This commit is contained in:
@ -119,12 +119,12 @@ montymontymontymontymonty * *
|
|||||||
select reverse('abc'),reverse('abcd');
|
select reverse('abc'),reverse('abcd');
|
||||||
reverse('abc') reverse('abcd')
|
reverse('abc') reverse('abcd')
|
||||||
cba dcba
|
cba dcba
|
||||||
select rpad('a',4,'1'),rpad('a',4,'12'),rpad('abcd',3,'12');
|
select rpad('a',4,'1'),rpad('a',4,'12'),rpad('abcd',3,'12'), rpad(11, 10 , 22), rpad("ab", 10, 22);
|
||||||
rpad('a',4,'1') rpad('a',4,'12') rpad('abcd',3,'12')
|
rpad('a',4,'1') rpad('a',4,'12') rpad('abcd',3,'12') rpad(11, 10 , 22) rpad("ab", 10, 22)
|
||||||
a111 a121 abc
|
a111 a121 abc 1122222222 ab22222222
|
||||||
select lpad('a',4,'1'),lpad('a',4,'12'),lpad('abcd',3,'12');
|
select lpad('a',4,'1'),lpad('a',4,'12'),lpad('abcd',3,'12'), lpad(11, 10 , 22);
|
||||||
lpad('a',4,'1') lpad('a',4,'12') lpad('abcd',3,'12')
|
lpad('a',4,'1') lpad('a',4,'12') lpad('abcd',3,'12') lpad(11, 10 , 22)
|
||||||
111a 121a abc
|
111a 121a abc 2222222211
|
||||||
select rpad(741653838,17,'0'),lpad(741653838,17,'0');
|
select rpad(741653838,17,'0'),lpad(741653838,17,'0');
|
||||||
rpad(741653838,17,'0') lpad(741653838,17,'0')
|
rpad(741653838,17,'0') lpad(741653838,17,'0')
|
||||||
74165383800000000 00000000741653838
|
74165383800000000 00000000741653838
|
||||||
@ -134,6 +134,12 @@ abcdaba abaabcd
|
|||||||
select rpad('abcd',1,'ab'),lpad('abcd',1,'ab');
|
select rpad('abcd',1,'ab'),lpad('abcd',1,'ab');
|
||||||
rpad('abcd',1,'ab') lpad('abcd',1,'ab')
|
rpad('abcd',1,'ab') lpad('abcd',1,'ab')
|
||||||
a a
|
a a
|
||||||
|
select rpad('STRING', 20, CONCAT('p','a','d') );
|
||||||
|
rpad('STRING', 20, CONCAT('p','a','d') )
|
||||||
|
STRINGpadpadpadpadpa
|
||||||
|
select lpad('STRING', 20, CONCAT('p','a','d') );
|
||||||
|
lpad('STRING', 20, CONCAT('p','a','d') )
|
||||||
|
padpadpadpadpaSTRING
|
||||||
select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
|
select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
|
||||||
LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD')
|
LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD') GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD')
|
||||||
HAROLD HARRY
|
HAROLD HARRY
|
||||||
|
@ -49,11 +49,13 @@ select aes_decrypt("a","a");
|
|||||||
select aes_decrypt(aes_encrypt("","a"),"a");
|
select aes_decrypt(aes_encrypt("","a"),"a");
|
||||||
select repeat('monty',5),concat('*',space(5),'*');
|
select repeat('monty',5),concat('*',space(5),'*');
|
||||||
select reverse('abc'),reverse('abcd');
|
select reverse('abc'),reverse('abcd');
|
||||||
select rpad('a',4,'1'),rpad('a',4,'12'),rpad('abcd',3,'12');
|
select rpad('a',4,'1'),rpad('a',4,'12'),rpad('abcd',3,'12'), rpad(11, 10 , 22), rpad("ab", 10, 22);
|
||||||
select lpad('a',4,'1'),lpad('a',4,'12'),lpad('abcd',3,'12');
|
select lpad('a',4,'1'),lpad('a',4,'12'),lpad('abcd',3,'12'), lpad(11, 10 , 22);
|
||||||
select rpad(741653838,17,'0'),lpad(741653838,17,'0');
|
select rpad(741653838,17,'0'),lpad(741653838,17,'0');
|
||||||
select rpad('abcd',7,'ab'),lpad('abcd',7,'ab');
|
select rpad('abcd',7,'ab'),lpad('abcd',7,'ab');
|
||||||
select rpad('abcd',1,'ab'),lpad('abcd',1,'ab');
|
select rpad('abcd',1,'ab'),lpad('abcd',1,'ab');
|
||||||
|
select rpad('STRING', 20, CONCAT('p','a','d') );
|
||||||
|
select lpad('STRING', 20, CONCAT('p','a','d') );
|
||||||
|
|
||||||
select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
|
select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD');
|
||||||
select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0");
|
select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0");
|
||||||
|
@ -1806,7 +1806,7 @@ String *Item_func_rpad::val_str(String *str)
|
|||||||
const char *ptr_pad;
|
const char *ptr_pad;
|
||||||
int32 count= (int32) args[1]->val_int();
|
int32 count= (int32) args[1]->val_int();
|
||||||
String *res =args[0]->val_str(str);
|
String *res =args[0]->val_str(str);
|
||||||
String *rpad = args[2]->val_str(str);
|
String *rpad = args[2]->val_str(&rpad_str);
|
||||||
|
|
||||||
if (!res || args[1]->null_value || !rpad || count < 0)
|
if (!res || args[1]->null_value || !rpad || count < 0)
|
||||||
goto err;
|
goto err;
|
||||||
@ -1866,7 +1866,7 @@ String *Item_func_lpad::val_str(String *str)
|
|||||||
const char *ptr_pad;
|
const char *ptr_pad;
|
||||||
ulong count= (long) args[1]->val_int();
|
ulong count= (long) args[1]->val_int();
|
||||||
String *res= args[0]->val_str(str);
|
String *res= args[0]->val_str(str);
|
||||||
String *lpad= args[2]->val_str(str);
|
String *lpad= args[2]->val_str(&lpad_str);
|
||||||
|
|
||||||
if (!res || args[1]->null_value || !lpad)
|
if (!res || args[1]->null_value || !lpad)
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -436,7 +436,7 @@ public:
|
|||||||
|
|
||||||
class Item_func_rpad :public Item_str_func
|
class Item_func_rpad :public Item_str_func
|
||||||
{
|
{
|
||||||
String tmp_value;
|
String tmp_value, rpad_str;
|
||||||
public:
|
public:
|
||||||
Item_func_rpad(Item *arg1,Item *arg2,Item *arg3)
|
Item_func_rpad(Item *arg1,Item *arg2,Item *arg3)
|
||||||
:Item_str_func(arg1,arg2,arg3) {}
|
:Item_str_func(arg1,arg2,arg3) {}
|
||||||
@ -449,7 +449,7 @@ public:
|
|||||||
|
|
||||||
class Item_func_lpad :public Item_str_func
|
class Item_func_lpad :public Item_str_func
|
||||||
{
|
{
|
||||||
String tmp_value;
|
String tmp_value, lpad_str;
|
||||||
public:
|
public:
|
||||||
Item_func_lpad(Item *arg1,Item *arg2,Item *arg3)
|
Item_func_lpad(Item *arg1,Item *arg2,Item *arg3)
|
||||||
:Item_str_func(arg1,arg2,arg3) {}
|
:Item_str_func(arg1,arg2,arg3) {}
|
||||||
|
Reference in New Issue
Block a user