Commit 5dcc9f9e authored by unknown's avatar unknown
Browse files

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1

into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-single-user

parents 516b8b21 cfdee054
Loading
Loading
Loading
Loading
+25 −9
Original line number Diff line number Diff line
@@ -8553,6 +8553,8 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
  struct timespec abstime;
  List<NDB_SHARE> util_open_tables;
  Thd_ndb *thd_ndb;
  uint share_list_size= 0;
  NDB_SHARE **share_list= NULL;

  my_thread_init();
  DBUG_ENTER("ndb_util_thread");
@@ -8672,7 +8674,22 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
    /* Lock mutex and fill list with pointers to all open tables */
    NDB_SHARE *share;
    pthread_mutex_lock(&ndbcluster_mutex);
    for (uint i= 0; i < ndbcluster_open_tables.records; i++)
    uint i, open_count, record_count= ndbcluster_open_tables.records;
    if (share_list_size < record_count)
    {
      NDB_SHARE ** new_share_list= new NDB_SHARE * [record_count];
      if (!new_share_list)
      {
        sql_print_warning("ndb util thread: malloc failure, "
                          "query cache not maintained properly");
        pthread_mutex_unlock(&ndbcluster_mutex);
        goto next;                               // At least do not crash
      }
      delete [] share_list;
      share_list_size= record_count;
      share_list= new_share_list;
    }
    for (i= 0, open_count= 0; i < record_count; i++)
    {
      share= (NDB_SHARE *)hash_element(&ndbcluster_open_tables, i);
#ifdef HAVE_NDB_BINLOG
@@ -8690,14 +8707,14 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
                  i, share->table_name, share->use_count));

      /* Store pointer to table */
      util_open_tables.push_back(share);
      share_list[open_count++]= share;
    }
    pthread_mutex_unlock(&ndbcluster_mutex);

    /* Iterate through the open files list */
    List_iterator_fast<NDB_SHARE> it(util_open_tables);
    while ((share= it++))
    for (i= 0; i < open_count; i++)
    {
      share= share_list[i];
#ifdef HAVE_NDB_BINLOG
      if ((share->use_count - (int) (share->op != 0) - (int) (share->op != 0))
          <= 1)
@@ -8758,10 +8775,7 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
                               share->key, share->use_count));
      free_share(&share);
    }

    /* Clear the list of open tables */
    util_open_tables.empty();

next:
    /* Calculate new time to wake up */
    int secs= 0;
    int msecs= ndb_cache_check_time;
@@ -8789,6 +8803,8 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
ndb_util_thread_end:
  net_end(&thd->net);
ndb_util_thread_fail:
  if (share_list)
    delete [] share_list;
  thd->cleanup();
  delete thd;
  
+7 −0
Original line number Diff line number Diff line
@@ -484,6 +484,13 @@ Uint32 Dbtup::leafPageRangeFull(Fragrecord* const regFragPtr, PageRangePtr curr
      ptrCheckGuard(parentPageRangePtr, cnoOfPageRangeRec, pageRange);
      if (parentPageRangePtr.p->currentIndexPos < 3) {
        jam();

        if (c_noOfFreePageRanges < tiprNoLevels) 
        {
          jam();
          return RNIL;
        }//if
	
/* ---------------------------------------------------------------- */
/*       WE HAVE FOUND AN EMPTY ENTRY IN A PAGE RANGE RECORD.       */
/*       ALLOCATE A NEW PAGE RANGE RECORD, FILL IN THE START RANGE, */
+1 −1
Original line number Diff line number Diff line
@@ -669,7 +669,7 @@ InitConfigFileParser::store_in_properties(Vector<struct my_option>& options,
      if (options[i].var_type == GET_INT)
	ctx.m_currentSection->put(options[i].name, (Uint32)value_int);
      else
	ctx.m_currentSection->put(options[i].name, value_int);	
	ctx.m_currentSection->put64(options[i].name, value_int);	
    }
  }
  return true;
+5 −4
Original line number Diff line number Diff line
@@ -155,12 +155,13 @@ setup_files(atrt_config& config, int setup, int sshx)
	  const char * val;
	  require(proc.m_options.m_loaded.get("--datadir=", &val));
	  BaseString tmp;
	  tmp.assfmt("%s/bin/mysql_install_db --datadir=%s > /dev/null 2>&1",
		     g_prefix, val);
	  tmp.assfmt("%s/bin/mysql_install_db --defaults-file=%s/my.cnf --datadir=%s > /dev/null 2>&1",
		     g_prefix, g_basedir, val);
	  if (system(tmp.c_str()) != 0)
	  {
	    g_logger.error("Failed to mysql_install_db for %s",
			   proc.m_proc.m_cwd.c_str());
	    g_logger.error("Failed to mysql_install_db for %s, cmd: >%s<",
			   proc.m_proc.m_cwd.c_str(),
			   tmp.c_str());
	  }
	  else
	  {