Loading sql/item_cmpfunc.h +10 −8 Original line number Diff line number Diff line Loading @@ -449,19 +449,21 @@ class Item_func_isnull :public Item_bool_func void update_used_tables() { if (!args[0]->maybe_null) { used_tables_cache= 0; /* is always false */ cached_value= (longlong) 0; } else { args[0]->update_used_tables(); used_tables_cache=args[0]->used_tables(); } if (!used_tables_cache) if (!(used_tables_cache=args[0]->used_tables())) { /* Remember if the value is always NULL or never NULL */ args[0]->val(); cached_value= args[0]->null_value ? (longlong) 1 : (longlong) 0; } } } optimize_type select_optimize() const { return OPTIMIZE_NULL; } }; Loading sql/sql_analyse.cc +4 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading @@ -65,6 +66,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, param = param->next; if (param->next) // no third parameter possible { delete pc; net_printf(&thd->net, ER_WRONG_PARAMCOUNT_TO_PROCEDURE, proc_name); return 0; } Loading @@ -72,6 +74,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading @@ -80,6 +83,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, else if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading sql/sql_analyse.h +6 −5 Original line number Diff line number Diff line Loading @@ -288,11 +288,12 @@ class analyse: public Procedure public: uint max_tree_elements, max_treemem; analyse(select_result *res) :Procedure(res, PROC_NO_SORT), rows(0), output_str_length(0) {} analyse(select_result *res) :Procedure(res, PROC_NO_SORT), f_info(0), rows(0), output_str_length(0) {} ~analyse() { if (f_info) for (field_info **f=f_info; f != f_end; f++) delete (*f); } Loading Loading
sql/item_cmpfunc.h +10 −8 Original line number Diff line number Diff line Loading @@ -449,19 +449,21 @@ class Item_func_isnull :public Item_bool_func void update_used_tables() { if (!args[0]->maybe_null) { used_tables_cache= 0; /* is always false */ cached_value= (longlong) 0; } else { args[0]->update_used_tables(); used_tables_cache=args[0]->used_tables(); } if (!used_tables_cache) if (!(used_tables_cache=args[0]->used_tables())) { /* Remember if the value is always NULL or never NULL */ args[0]->val(); cached_value= args[0]->null_value ? (longlong) 1 : (longlong) 0; } } } optimize_type select_optimize() const { return OPTIMIZE_NULL; } }; Loading
sql/sql_analyse.cc +4 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading @@ -65,6 +66,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, param = param->next; if (param->next) // no third parameter possible { delete pc; net_printf(&thd->net, ER_WRONG_PARAMCOUNT_TO_PROCEDURE, proc_name); return 0; } Loading @@ -72,6 +74,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading @@ -80,6 +83,7 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result, else if ((*param->item)->type() != Item::INT_ITEM || (*param->item)->val() < 0) { delete pc; net_printf(&thd->net, ER_WRONG_PARAMETERS_TO_PROCEDURE, proc_name); return 0; } Loading
sql/sql_analyse.h +6 −5 Original line number Diff line number Diff line Loading @@ -288,11 +288,12 @@ class analyse: public Procedure public: uint max_tree_elements, max_treemem; analyse(select_result *res) :Procedure(res, PROC_NO_SORT), rows(0), output_str_length(0) {} analyse(select_result *res) :Procedure(res, PROC_NO_SORT), f_info(0), rows(0), output_str_length(0) {} ~analyse() { if (f_info) for (field_info **f=f_info; f != f_end; f++) delete (*f); } Loading