Commit df280335 authored by monty@donna.mysql.com's avatar monty@donna.mysql.com
Browse files

Fix for SAFE_MUTEX + MERGE tables

parent 80d200e1
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -40860,6 +40860,9 @@ Fixed @code{DISTINCT} with calculated columns.
@itemize @bullet
@item
@code{mysqldump} on a @code{MERGE} table doesn't include the current
mapped tables.
@item
For the moment @code{MATCH} only works with @code{SELECT} statements.
@item
You cannot build in another directory when using
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ typedef int pthread_mutexattr_t;
#define pthread_handler_decl(A,B) unsigned __cdecl A(void *B)
typedef unsigned (__cdecl *pthread_handler)(void *);

void win_pthread_init(void);
int win_pthread_setspecific(void *A,void *B,uint length);
int pthread_create(pthread_t *,pthread_attr_t *,pthread_handler,void *);
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ typedef struct st_myrg_info
  ulonglong records;			/* records in tables */
  ulonglong del;			/* Removed records */
  ulonglong data_file_length;
  uint	 tables,options,reclength;
  uint	 tables,options,reclength,keys;
  my_bool cache_in_use;
  LIST	open_list;
  QUEUE     by_key;
+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ void ft_free_stopwords()
  if (stopwords3)
  {
    delete_tree(stopwords3); /* purecov: inspected */    
    my_free((char*) stopwords3,MYF(0));
    stopwords3=0;
  }
}
+10 −4
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ int handle_locking;
  *m_info=info;
  m_info->open_tables=(MYRG_TABLE *) (m_info+1);
  m_info->tables=files;
  errpos=2;
 
  for (i=files ; i-- > 0 ; )
  {
@@ -104,16 +105,21 @@ int handle_locking;
    m_info->open_tables[i].file_offset=(my_off_t) file_offset;
    file_offset+=m_info->open_tables[i].table->state->data_file_length;
  }
  errpos=2;
  if (sizeof(my_off_t) == 4 && file_offset > (ulonglong) (ulong) ~0L)
  {
    my_errno=HA_ERR_RECORD_FILE_FULL;
    goto err;
  }
  /* Allocate memory for queue */
  if (m_info->open_tables->table->s->base.keys &&
  m_info->keys=0;
  if (files)
  {
    if ((m_info->keys=m_info->open_tables->table->s->base.keys) &&
	_myrg_init_queue(m_info,0,HA_READ_KEY_EXACT))
      goto err;
  }
  else
    bzero((char*) &m_info->by_key,sizeof(m_info->by_key));

  m_info->end_table=m_info->open_tables+files;
  m_info->last_used_table=m_info->open_tables;
Loading