Commit 03787cce authored by unknown's avatar unknown
Browse files

Merge mysql.com:/usr/local/bk/mysql-5.0

into mysql.com:/home/pem/work/mysql-5.0


sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
parents 6a7dedf2 0d8dce03
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2321,7 +2321,7 @@ Item_cond::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
  */
  and_tables_cache= ~(table_map) 0;

  if (check_stack_overrun(thd, buff))
  if (check_stack_overrun(thd, STACK_MIN_SIZE))
    return TRUE;				// Fatal error flag is set!
  /*
    The following optimization reduces the depth of an AND-OR tree.
+2 −8
Original line number Diff line number Diff line
@@ -293,14 +293,11 @@ Item_func::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
{
  DBUG_ASSERT(fixed == 0);
  Item **arg,**arg_end;
#ifndef EMBEDDED_LIBRARY			// Avoid compiler warning
  char buff[STACK_BUFF_ALLOC];			// Max argument in function
#endif

  used_tables_cache= not_null_tables_cache= 0;
  const_item_cache=1;

  if (check_stack_overrun(thd, buff))
  if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC))
    return TRUE;				// Fatal error if flag is set!
  if (arg_count)
  {						// Print purify happy
@@ -2567,12 +2564,9 @@ bool
udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func,
			uint arg_count, Item **arguments)
{
#ifndef EMBEDDED_LIBRARY			// Avoid compiler warning
  char buff[STACK_BUFF_ALLOC];			// Max argument in function
#endif
  DBUG_ENTER("Item_udf_func::fix_fields");

  if (check_stack_overrun(thd, buff))
  if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC))
    DBUG_RETURN(TRUE);				// Fatal error flag is set!

  udf_func *tmp_udf=find_udf(u_d->name.str,(uint) u_d->name.length,1);
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ bool Item_subselect::fix_fields(THD *thd_param, TABLE_LIST *tables, Item **ref)
  DBUG_ASSERT(fixed == 0);
  engine->set_thd((thd= thd_param));

  if (check_stack_overrun(thd, (gptr)&res))
  if (check_stack_overrun(thd, STACK_MIN_SIZE))
    return TRUE;

  res= engine->prepare();
+2 −2
Original line number Diff line number Diff line
@@ -1077,7 +1077,7 @@ extern ulong max_connections,max_connect_errors, connect_timeout;
extern ulong slave_net_timeout, slave_trans_retries;
extern uint max_user_connections;
extern ulong what_to_log,flush_time;
extern ulong query_buff_size, thread_stack,thread_stack_min;
extern ulong query_buff_size, thread_stack;
extern ulong binlog_cache_size, max_binlog_cache_size, open_files_limit;
extern ulong max_binlog_size, max_relay_log_size;
extern ulong rpl_recovery_rank, thread_cache_size;
@@ -1429,7 +1429,7 @@ inline int hexchar_to_int(char c)
#ifndef EMBEDDED_LIBRARY
extern "C" void unireg_abort(int exit_code);
void kill_delayed_threads(void);
bool check_stack_overrun(THD *thd,char *dummy);
bool check_stack_overrun(THD *thd, long margin);
#else
#define unireg_abort(exit_code) DBUG_RETURN(exit_code)
inline void kill_delayed_threads(void) {}
+21 −3
Original line number Diff line number Diff line
@@ -348,7 +348,7 @@ uint tc_heuristic_recover= 0;
uint volatile thread_count, thread_running;
ulong back_log, connect_timeout, concurrency;
ulong server_id, thd_startup_options;
ulong table_cache_size, thread_stack, thread_stack_min, what_to_log;
ulong table_cache_size, thread_stack, what_to_log;
ulong query_buff_size, slow_launch_time, slave_open_temp_tables;
ulong open_files_limit, max_binlog_size, max_relay_log_size;
ulong slave_net_timeout, slave_trans_retries;
@@ -2089,7 +2089,13 @@ static void start_signal_handler(void)
  (void) pthread_attr_setdetachstate(&thr_attr,PTHREAD_CREATE_DETACHED);
  if (!(opt_specialflag & SPECIAL_NO_PRIOR))
    my_pthread_attr_setprio(&thr_attr,INTERRUPT_PRIOR);
#if defined(__ia64__) || defined(__ia64)
  /* Peculiar things with ia64 platforms - it seems we only have half the
     stack size in reality, so we have to double it here */
  pthread_attr_setstacksize(&thr_attr,thread_stack*2);
#else
  pthread_attr_setstacksize(&thr_attr,thread_stack);
#endif
#endif

  (void) pthread_mutex_lock(&LOCK_thread_count);
@@ -3010,23 +3016,35 @@ int main(int argc, char **argv)
  init_signals();
  if (!(opt_specialflag & SPECIAL_NO_PRIOR))
    my_pthread_setprio(pthread_self(),CONNECT_PRIOR);
#if defined(__ia64__) || defined(__ia64)
  /* Peculiar things with ia64 platforms - it seems we only have half the
     stack size in reality, so we have to double it here */
  pthread_attr_setstacksize(&connection_attrib,thread_stack*2);
#else
  pthread_attr_setstacksize(&connection_attrib,thread_stack);
#endif
#ifdef HAVE_PTHREAD_ATTR_GETSTACKSIZE
  {
    /* Retrieve used stack size;  Needed for checking stack overflows */
    size_t stack_size= 0;
    pthread_attr_getstacksize(&connection_attrib, &stack_size);
#if defined(__ia64__) || defined(__ia64)
    stack_size/= 2;
#endif
    /* We must check if stack_size = 0 as Solaris 2.9 can return 0 here */
    if (stack_size && stack_size < thread_stack)
    {
      if (global_system_variables.log_warnings)
	sql_print_warning("Asked for %ld thread stack, but got %ld",
			  thread_stack, stack_size);
#if defined(__ia64__) || defined(__ia64)
      thread_stack= stack_size*2;
#else
      thread_stack= stack_size;
#endif
    }
  }
#endif
  thread_stack_min=thread_stack - STACK_MIN_SIZE;

  (void) thr_setconcurrency(concurrency);	// 10 by default

Loading