Item_param::set_value(THD *thd, sp_rcontext *ctx, Item **it)
{
  Item *arg= *it;
  struct st_value tmp;
  /*
    The OUT parameter is bound to some data type.
    It's important not to touch m_type_handler,
    to make sure the next mysql_stmt_execute()
    correctly fetches the value from the client-server protocol,
    using set_param_func().
  */
  if (arg->save_in_value(&tmp) ||
      set_value(thd, arg, &tmp, arg->type_handler()))
  {
    set_null();
    return false;
  }
  /* It is wrapper => other set_* shoud set null_value */
  DBUG_ASSERT(null_value == false);
  return false;
}
Item_param::set_value(THD *thd, sp_rcontext *ctx, Item **it)
{
  Item *arg= *it;
  struct st_value tmp;
   
  if (arg->save_in_value(&tmp) ||
      set_value(thd, arg, &tmp, arg->type_handler()))
  {
    set_null();
    return false;
  }
   
  DBUG_ASSERT(null_value == false);
  return false;
}