diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-02-21 16:23:44 +0200 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-02-21 16:23:44 +0200 |
commit | ed47a1da5c7a83183400a331bd9734ed97ea7447 (patch) | |
tree | 2cec6c0e889323c9492ba9b186bc7f14017899a8 /sql | |
parent | 614bc5a186894916a879a4cdfe7e0fb04a7e963f (diff) | |
parent | 5b15b39c8f28db89425386911b97ed0bd49b395c (diff) | |
download | mariadb-git-ed47a1da5c7a83183400a331bd9734ed97ea7447.tar.gz |
Merge sinisa@work.mysql.com:/home/bk/mysql
into sinisa.nasamreza.org:/mnt/work/mysql
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_cmpfunc.h | 18 | ||||
-rw-r--r-- | sql/sql_analyse.cc | 4 | ||||
-rw-r--r-- | sql/sql_analyse.h | 11 | ||||
-rw-r--r-- | sql/sql_class.cc | 2 |
4 files changed, 21 insertions, 14 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 5105eb9279d..c33042e11ab 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -449,17 +449,19 @@ public: void update_used_tables() { if (!args[0]->maybe_null) - used_tables_cache=0; /* is always false */ - else { - args[0]->update_used_tables(); - used_tables_cache=args[0]->used_tables(); + used_tables_cache= 0; /* is always false */ + cached_value= (longlong) 0; } - if (!used_tables_cache) + else { - /* Remember if the value is always NULL or never NULL */ - args[0]->val(); - cached_value= args[0]->null_value ? (longlong) 1 : (longlong) 0; + args[0]->update_used_tables(); + 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; } diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index 457356d4253..6227b1251db 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -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; } @@ -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; } @@ -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; } @@ -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; } diff --git a/sql/sql_analyse.h b/sql/sql_analyse.h index ce5c0af6a96..c826b69e53c 100644 --- a/sql/sql_analyse.h +++ b/sql/sql_analyse.h @@ -288,13 +288,14 @@ protected: 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() - { - for (field_info **f=f_info; f != f_end; f++) - delete (*f); + { + if (f_info) + for (field_info **f=f_info; f != f_end; f++) + delete (*f); } virtual void add() {} virtual bool change_columns(List<Item> &fields); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 319bc87ad8d..316c544ba78 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -156,7 +156,7 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0), */ { pthread_mutex_lock(&LOCK_thread_count); - ulong tmp=(ulong) (rnd(&sql_rand) * ((ulong)~0L)); + ulong tmp=(ulong) (rnd(&sql_rand) * ((ulong)0xffffffff)); randominit(&rand, tmp + (ulong) start_time, tmp + (ulong) thread_id); pthread_mutex_unlock(&LOCK_thread_count); |