maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #10701
String functions have their item->maybe_null=true unnecessarily, blocking optimizations
Hi Alexander,
I was looking at
https://jira.mariadb.org/browse/MDEV-11893
and found this piece of code:
bool Item_str_func::fix_fields(THD *thd, Item **ref)
{
bool res= Item_func::fix_fields(thd, ref);
/*
In Item_str_func::check_well_formed_result() we may set null_value
flag on the same condition as in test() below.
*/
maybe_null= maybe_null || thd->is_strict_mode();
return res;
}
This has been introduced by this cset:
https://github.com/MariaDB/server/commit/af22eb35e577ef17226faf662f2cffc4705bde26
Which says:
Add Item_str_func::fix_fields() implementation, and set maybe_null to
TRUE if we are in the SQL mode that requires some functions to return
null even if they normally do not.
The patch has only one example of CHAR() function doing that.
At the same time, not having NOT-NULL attribute disallows query opimizations
(see MDEV-11893 for an example).
I think we should have this
maybe_null= maybe_null || thd->is_strict_mode();
logic on a case-by-case basis only. I wanted to check with you - are there any
other known string functions that, as the patch puts it "return null even if they
normally do not"?
BR
Sergei
--
Sergei Petrunia, Software Developer
MariaDB Corporation | Skype: sergefp | Blog: http://s.petrunia.net/blog
Follow ups