Commit fc81fdb4 authored by monty@tik.mysql.fi's avatar monty@tik.mysql.fi
Browse files

Redefinition of myisam_bulk_insert_tree_size

Removed new error message
Fixed test case for varbinary
Threads are again killable in "merge_buffers"
Cleanup of sql_repl.cc
SHOW OPEN TABLES now works when no tables are opened
parent ca771c46
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -22266,11 +22266,11 @@ The buffer that is allocated when sorting the index when doing a
@code{ALTER TABLE}.
@item @code{myisam_bulk_insert_tree_size}
@strong{MySQL} uses special tree-like cache to make bulk inserts (that is,
@code{MyISAM} uses special tree-like cache to make bulk inserts (that is,
@code{INSERT ... SELECT},
@code{INSERT ... VALUES (...), (...), ...}, and
@code{LOAD DATA INFILE}) faster. This variable limits
the size of the cache tree in bytes @strong{per thread, per index}.
the size of the cache tree in bytes @strong{per thread, per table}.
Default value is 8 MB.
@item @code{myisam_max_extra_sort_file_size}.
@@ -23960,7 +23960,7 @@ The following options to @code{mysqld} can be used to change the behavior of
@item @code{--delay-key-write-for-all-tables} @tab Don't flush key buffers between writes for any MyISAM table
@item @code{-O myisam_max_extra_sort_file_size=#} @tab Used to help @strong{MySQL} to decide when to use the slow but safe key cache index create method. @strong{NOTE} that this parameter is given in megabytes!
@item @code{-O myisam_max_sort_file_size=#} @tab Don't use the fast sort index method to created index if the temporary file would get bigger than this. @strong{NOTE} that this paramter is given in megabytes!
@item @code{-O myisam_bulk_insert_tree_size=#} @tab Size of tree cache used in bulk insert optimization. @strong{NOTE} that this is a limit @strong{per index}!
@item @code{-O myisam_bulk_insert_tree_size=#} @tab Size of tree cache used in bulk insert optimization. @strong{NOTE} that this is the total size used for all index in one table.
@end multitable
The automatic recovery is activated if you start @code{mysqld} with
+1 −7
Original line number Diff line number Diff line
@@ -34,19 +34,13 @@ int main(int argc, char **argv)
    exit(1);
  }

  if (!(sock = mysql_connect(&mysql,NULL,0,0)))
  if (!(sock = mysql_real_connect(&mysql,NULL,NULL,NULL,argv[1],0,NULL,0)))
  {
    fprintf(stderr,"Couldn't connect to engine!\n%s\n",mysql_error(&mysql));
    perror("");
    exit(1);
  }

  if (mysql_select_db(sock,argv[1]))
  {
    fprintf(stderr,"Couldn't select database %s!\n%s\n",argv[1],
	    mysql_error(sock));
  }

  num = atoi(argv[2]);
  count = 0;
  while (count < num)
+46 −47
Original line number Diff line number Diff line
@@ -126,24 +126,30 @@ typedef struct st_mysql_data {

struct st_mysql_options {
  unsigned int connect_timeout,client_flag;
  my_bool compress,named_pipe;
  my_bool rpl_probe; /* on connect, find out the replication
				role of the server, and establish connections
				to all the peers */
  my_bool rpl_parse; /* each call to mysql_real_query() will parse
				it to tell if it is a read or a write, and
				direct it to the slave or the master */
  my_bool no_master_reads; /* if set, never read from
				    a master,only from slave, when doing
				 a read that is replication-aware */
  unsigned int port;
  char *host,*init_command,*user,*password,*unix_socket,*db;
  char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name;
  my_bool use_ssl;				/* if to use SSL or not */
  char *ssl_key;				/* PEM key file */
  char *ssl_cert;				/* PEM cert file */
  char *ssl_ca;					/* PEM CA file */
  char *ssl_capath;				/* PEM directory of CA-s? */
  my_bool use_ssl;				/* if to use SSL or not */
  my_bool compress,named_pipe;
 /*
   on connect, find out the replication role of the server, and
   establish connections to all the peers
 */
  my_bool rpl_probe;
 /* 
    each call to mysql_real_query() will parse it to tell if it is a read
    or a write, and direct it to the slave or the master
 */
  my_bool rpl_parse;
 /*
   if set, never read from a master,only from slave, when doing
   a read that is replication-aware
 */
  my_bool no_master_reads;
};

enum mysql_option { MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS,
@@ -154,7 +160,8 @@ enum mysql_option { MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS,
enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,
		    MYSQL_STATUS_USE_RESULT};

/* there are three types of queries - the ones that have to go to
/*
  There are three types of queries - the ones that have to go to
  the master, the ones that go to a slave, and the adminstrative
  type which must happen on the pivot connectioin
*/
@@ -191,15 +198,13 @@ typedef struct st_mysql {
  struct st_mysql* master, *next_slave;
  
  struct st_mysql* last_used_slave; /* needed for round-robin slave pick */
  struct st_mysql* last_used_con; /* needed for send/read/store/use
				      result to work
				      correctly with replication
				   */
  my_bool rpl_pivot; /* set if this is the original connection,
			not a master or a slave we have added though
			mysql_rpl_probe() or mysql_set_master()/
			mysql_add_slave()
 /* needed for send/read/store/use result to work correctly with replication */
  struct st_mysql* last_used_con;
 /*
   Set if this is the original connection, not a master or a slave we have
   added though mysql_rpl_probe() or mysql_set_master()/ mysql_add_slave()
 */
  my_bool rpl_pivot;
} MYSQL;


@@ -246,11 +251,8 @@ int STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
char *		STDCALL mysql_ssl_cipher(MYSQL *mysql);
int		STDCALL mysql_ssl_clear(MYSQL *mysql);
#endif /* HAVE_OPENSSL */
MYSQL *		STDCALL mysql_connect(MYSQL *mysql, const char *host,
				      const char *user, const char *passwd);
my_bool		STDCALL mysql_change_user(MYSQL *mysql, const char *user, 
					  const char *passwd, const char *db);
#if MYSQL_VERSION_ID >= 32200
MYSQL *		STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
					   const char *user,
					   const char *passwd,
@@ -258,14 +260,6 @@ MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
					   unsigned int port,
					   const char *unix_socket,
					   unsigned int clientflag);
#else
MYSQL *		STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
					   const char *user,
					   const char *passwd,
					   unsigned int port,
					   const char *unix_socket,
					   unsigned int clientflag);
#endif
void		STDCALL mysql_close(MYSQL *sock);
int		STDCALL mysql_select_db(MYSQL *mysql, const char *db);
int		STDCALL mysql_query(MYSQL *mysql, const char *q);
@@ -285,8 +279,10 @@ int STDCALL mysql_slave_query(MYSQL *mysql, const char *q,
int		STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q,
					unsigned int length);

/* enable/disable parsing of all queries to decide
   if they go on master or slave */
/*
  enable/disable parsing of all queries to decide if they go on master or
  slave
*/
void            STDCALL mysql_enable_rpl_parse(MYSQL* mysql);
void            STDCALL mysql_disable_rpl_parse(MYSQL* mysql);
/* get the value of the parse flag */  
@@ -313,9 +309,6 @@ int STDCALL mysql_add_slave(MYSQL* mysql, const char* host,
					const char* user,
					const char* passwd);
  
  
int		STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
int		STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
int		STDCALL mysql_shutdown(MYSQL *mysql);
int		STDCALL mysql_dump_debug_info(MYSQL *mysql);
int		STDCALL mysql_refresh(MYSQL *mysql,
@@ -364,9 +357,15 @@ char * STDCALL mysql_odbc_escape_string(MYSQL *mysql,
void 		STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int	STDCALL mysql_thread_safe(void);

  
#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)

#ifndef USE_OLD_FUNCTIONS
MYSQL *		STDCALL mysql_connect(MYSQL *mysql, const char *host,
				      const char *user, const char *passwd);
int		STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
int		STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
#endif

/* new api functions */

#define HAVE_MYSQL_REAL_CONNECT
+2 −3
Original line number Diff line number Diff line
@@ -212,6 +212,5 @@
#define ER_CREATE_DB_WITH_READ_LOCK 1209
#define ER_CONNECT_TO_MASTER 1210
#define ER_QUERY_ON_MASTER 1211
#define ER_SHOW_BINLOG_EVENTS 1212
#define ER_SHOW_NEW_MASTER 1213
#define ER_ERROR_MESSAGES 214
#define ER_ERROR_WHEN_EXECUTING_COMMAND 1212
#define ER_ERROR_MESSAGES 213
+7 −5
Original line number Diff line number Diff line
@@ -770,8 +770,9 @@ int _mi_init_bulk_insert(MI_INFO *info)
  if (info->bulk_insert)
    return 0;
  
  info->bulk_insert=(TREE *)my_malloc(
      (sizeof(TREE)+sizeof(bulk_insert_param))*share->base.keys, MYF(0));
  info->bulk_insert=(TREE *)
    my_malloc((sizeof(TREE)+sizeof(bulk_insert_param))*share->base.keys,
	      MYF(0));

  if (!info->bulk_insert)
    return HA_ERR_OUT_OF_MEM;
@@ -785,7 +786,8 @@ int _mi_init_bulk_insert(MI_INFO *info)
    if (!(key->flag & HA_NOSAME) && share->base.auto_key != i+1
        && test(share->state.key_map & ((ulonglong) 1 << i)))
    {
      init_tree(& info->bulk_insert[i], 0, myisam_bulk_insert_tree_size, 0,
      init_tree(& info->bulk_insert[i], 0, 
		myisam_bulk_insert_tree_size / share->base.keys, 0,
		(qsort_cmp2)keys_compare, 0,
		(tree_element_free) keys_free, (void *)params);
    }
Loading