mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug #31758 inet_ntoa, oct crashes server with null+filesort
Item_func_inet_ntoa and Item_func_conv inherit 'maybe_null' flag from an argument, which is wrong. Both can be NULL with notnull arguments, so that's fixed.
This commit is contained in:
@ -711,9 +711,9 @@ Warning 1265 Data truncated for column 'format(130,10)' at row 1
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`bin(130)` char(64) NOT NULL default '',
|
`bin(130)` char(64) default NULL,
|
||||||
`oct(130)` char(64) NOT NULL default '',
|
`oct(130)` char(64) default NULL,
|
||||||
`conv(130,16,10)` char(64) NOT NULL default '',
|
`conv(130,16,10)` char(64) default NULL,
|
||||||
`hex(130)` char(6) NOT NULL default '',
|
`hex(130)` char(6) NOT NULL default '',
|
||||||
`char(130)` char(1) NOT NULL default '',
|
`char(130)` char(1) NOT NULL default '',
|
||||||
`format(130,10)` char(4) NOT NULL default '',
|
`format(130,10)` char(4) NOT NULL default '',
|
||||||
@ -1075,5 +1075,17 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
|
1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select decode(test.t1.f1,'zxcv') AS `enc` from test.t1
|
Note 1003 select decode(test.t1.f1,'zxcv') AS `enc` from test.t1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a bigint not null)engine=myisam;
|
||||||
|
insert into t1 set a = 1024*1024*1024*4;
|
||||||
|
delete from t1 order by (inet_ntoa(a)) desc limit 10;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a char(36) not null)engine=myisam;
|
||||||
|
insert ignore into t1 set a = ' ';
|
||||||
|
insert ignore into t1 set a = ' ';
|
||||||
|
select * from t1 order by (oct(a));
|
||||||
|
a
|
||||||
|
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
|
@ -721,4 +721,17 @@ explain extended select encode(f1,'zxcv') as 'enc' from t1;
|
|||||||
explain extended select decode(f1,'zxcv') as 'enc' from t1;
|
explain extended select decode(f1,'zxcv') as 'enc' from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #31758 inet_ntoa, oct, crashes server with null + filesort
|
||||||
|
#
|
||||||
|
create table t1 (a bigint not null)engine=myisam;
|
||||||
|
insert into t1 set a = 1024*1024*1024*4;
|
||||||
|
delete from t1 order by (inet_ntoa(a)) desc limit 10;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a char(36) not null)engine=myisam;
|
||||||
|
insert ignore into t1 set a = ' ';
|
||||||
|
insert ignore into t1 set a = ' ';
|
||||||
|
select * from t1 order by (oct(a));
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
--echo End of 4.1 tests
|
||||||
|
@ -531,6 +531,7 @@ public:
|
|||||||
{
|
{
|
||||||
collation.set(default_charset());
|
collation.set(default_charset());
|
||||||
decimals=0; max_length=64;
|
decimals=0; max_length=64;
|
||||||
|
maybe_null= 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -623,7 +624,7 @@ public:
|
|||||||
}
|
}
|
||||||
String* val_str(String* str);
|
String* val_str(String* str);
|
||||||
const char *func_name() const { return "inet_ntoa"; }
|
const char *func_name() const { return "inet_ntoa"; }
|
||||||
void fix_length_and_dec() { decimals = 0; max_length=3*8+7; }
|
void fix_length_and_dec() { decimals = 0; max_length=3*8+7; maybe_null=1;}
|
||||||
};
|
};
|
||||||
|
|
||||||
class Item_func_quote :public Item_str_func
|
class Item_func_quote :public Item_str_func
|
||||||
|
Reference in New Issue
Block a user