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);
|
select hex(29223372036854775809), hex(-29223372036854775809);
|
||||||
hex(29223372036854775809) hex(-29223372036854775809)
|
hex(29223372036854775809) hex(-29223372036854775809)
|
||||||
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
|
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
|
# Bug #9854 hex() and out of range handling
|
||||||
#
|
#
|
||||||
select hex(29223372036854775809), hex(-29223372036854775809);
|
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() *
|
ulonglong length= ((ulonglong) args[1]->val_int() *
|
||||||
collation.collation->mbmaxlen);
|
collation.collation->mbmaxlen);
|
||||||
length= max((ulonglong) args[0]->max_length, length);
|
|
||||||
if (length >= MAX_BLOB_WIDTH)
|
if (length >= MAX_BLOB_WIDTH)
|
||||||
{
|
{
|
||||||
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() *
|
ulonglong length= ((ulonglong) args[1]->val_int() *
|
||||||
collation.collation->mbmaxlen);
|
collation.collation->mbmaxlen);
|
||||||
length= max((ulonglong) args[0]->max_length, length);
|
|
||||||
if (length >= MAX_BLOB_WIDTH)
|
if (length >= MAX_BLOB_WIDTH)
|
||||||
{
|
{
|
||||||
length= MAX_BLOB_WIDTH;
|
length= MAX_BLOB_WIDTH;
|
||||||
|
Reference in New Issue
Block a user