mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
@ -865,3 +865,6 @@ abc abc c bc abc
|
|||||||
abcd abcd d cd bcd abcd
|
abcd abcd d cd bcd abcd
|
||||||
abcde abcde e de cde bcde abcde
|
abcde abcde e de cde bcde abcde
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select hex(29223372036854775809), hex(-29223372036854775809);
|
||||||
|
hex(29223372036854775809) hex(-29223372036854775809)
|
||||||
|
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
|
||||||
|
@ -606,3 +606,8 @@ insert t1 values ('ab'), ('abc'), ('abcd'), ('abcde');
|
|||||||
select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1;
|
select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1;
|
||||||
select * from (select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1) t;
|
select * from (select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1) t;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #9854 hex() and out of range handling
|
||||||
|
#
|
||||||
|
select hex(29223372036854775809), hex(-29223372036854775809);
|
||||||
|
@ -2348,9 +2348,21 @@ String *Item_func_hex::val_str(String *str)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
if (args[0]->result_type() != STRING_RESULT)
|
if (args[0]->result_type() != STRING_RESULT)
|
||||||
{
|
{
|
||||||
/* Return hex of unsigned longlong value */
|
ulonglong dec;
|
||||||
longlong dec= args[0]->val_int();
|
|
||||||
char ans[65],*ptr;
|
char ans[65],*ptr;
|
||||||
|
/* Return hex of unsigned longlong value */
|
||||||
|
if (args[0]->result_type() == REAL_RESULT)
|
||||||
|
{
|
||||||
|
double val= args[0]->val();
|
||||||
|
if ((val <= (double) LONGLONG_MIN) ||
|
||||||
|
(val >= (double) (ulonglong) ULONGLONG_MAX))
|
||||||
|
dec= ~(longlong) 0;
|
||||||
|
else
|
||||||
|
dec= (ulonglong) (val + (val > 0 ? 0.5 : -0.5));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dec= (ulonglong) args[0]->val_int();
|
||||||
|
|
||||||
if ((null_value= args[0]->null_value))
|
if ((null_value= args[0]->null_value))
|
||||||
return 0;
|
return 0;
|
||||||
ptr= longlong2str(dec,ans,16);
|
ptr= longlong2str(dec,ans,16);
|
||||||
|
Reference in New Issue
Block a user