mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix calculation for length of LPAD() and RPAD() reported to
client via mysql_fetch_fields(). (Bug #11311)
This commit is contained in:
@ -868,3 +868,18 @@ drop table t1;
|
||||
select hex(29223372036854775809), hex(-29223372036854775809);
|
||||
hex(29223372036854775809) hex(-29223372036854775809)
|
||||
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
|
||||
create table t1 (i int);
|
||||
insert into t1 values (1000000000),(1);
|
||||
select lpad(i, 7, ' ') as t from t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def t 253 7 7 Y 128 31 63
|
||||
t
|
||||
1000000
|
||||
1
|
||||
select rpad(i, 7, ' ') as t from t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def t 253 7 7 Y 128 31 63
|
||||
t
|
||||
1000000
|
||||
1
|
||||
drop table t1;
|
||||
|
@ -611,3 +611,14 @@ drop table t1;
|
||||
# Bug #9854 hex() and out of range handling
|
||||
#
|
||||
select hex(29223372036854775809), hex(-29223372036854775809);
|
||||
|
||||
#
|
||||
# Bug #11311: Incorrect length returned from LPAD() and RPAD()
|
||||
#
|
||||
create table t1 (i int);
|
||||
insert into t1 values (1000000000),(1);
|
||||
--enable_metadata
|
||||
select lpad(i, 7, ' ') as t from t1;
|
||||
select rpad(i, 7, ' ') as t from t1;
|
||||
--disable_metadata
|
||||
drop table t1;
|
||||
|
@ -2042,7 +2042,6 @@ void Item_func_rpad::fix_length_and_dec()
|
||||
{
|
||||
ulonglong length= ((ulonglong) args[1]->val_int() *
|
||||
collation.collation->mbmaxlen);
|
||||
length= max((ulonglong) args[0]->max_length, length);
|
||||
if (length >= MAX_BLOB_WIDTH)
|
||||
{
|
||||
length= MAX_BLOB_WIDTH;
|
||||
@ -2130,7 +2129,6 @@ void Item_func_lpad::fix_length_and_dec()
|
||||
{
|
||||
ulonglong length= ((ulonglong) args[1]->val_int() *
|
||||
collation.collation->mbmaxlen);
|
||||
length= max((ulonglong) args[0]->max_length, length);
|
||||
if (length >= MAX_BLOB_WIDTH)
|
||||
{
|
||||
length= MAX_BLOB_WIDTH;
|
||||
|
Reference in New Issue
Block a user