Commit 9d633d9a authored by serg@serg.mysql.com's avatar serg@serg.mysql.com
Browse files

Merge work:/home/bk/mysql into serg.mysql.com:/usr/home/serg/Abk/mysql

parents 5137c07a d5cd5ea4
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -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; }
};

+4 −0
Original line number Diff line number Diff line
@@ -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;
  }
+6 −5
Original line number Diff line number Diff line
@@ -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);
  }