Commit 7d3b20e3 authored by unknown's avatar unknown
Browse files

Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1

into ice.snake.net:/Volumes/ice2/MySQL/bk/mysql-4.1


sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
parents 17c0da83 8f68a9eb
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -18,20 +18,20 @@
#	i_pfile		include file that contains internal (PUBLIC) prototypes
/PUBLIC:/ {
	sub("^.*PUBLIC:[	 ][	 ]*", "")
	if ($0 ~ "^#if|^#ifdef|^#ifndef|^#else|^#endif") {
	if ($0 ~ /^#(if|ifdef|ifndef|else|endif)/) {
		print $0 >> i_pfile
		print $0 >> i_dfile
		next
	}
	pline = sprintf("%s %s", pline, $0)
	if (pline ~ "));") {
	if (pline ~ /\)\);/) {
		sub("^[	 ]*", "", pline)
		print pline >> i_pfile
		if (pline !~ db_version_unique_name) {
			def = gensub("[	 ][	 ]*__P.*", "", 1, pline)
			sub("^.*[	 ][*]*", "", def)
			sub("[	 ][	 ]*__P.*", "", pline)
			sub("^.*[	 ][*]*", "", pline)
			printf("#define	%s %s@DB_VERSION_UNIQUE_NAME@\n",
			    def, def) >> i_dfile
			    pline, pline) >> i_dfile
		}
		pline = ""
	}
@@ -53,20 +53,20 @@
# functions in libraries built with that configuration option.
/EXTERN:/ {
	sub("^.*EXTERN:[	 ][	 ]*", "")
	if ($0 ~ "^#if|^#ifdef|^#ifndef|^#else|^#endif") {
	if ($0 ~ /^#(if|ifdef|ifndef|else|endif)/) {
		print $0 >> e_pfile
		print $0 >> e_dfile
		next
	}
	eline = sprintf("%s %s", eline, $0)
	if (eline ~ "));") {
	if (eline ~ /\)\);/) {
		sub("^[	 ]*", "", eline)
		print eline >> e_pfile
		if (eline !~ db_version_unique_name && eline !~ "^int txn_") {
			def = gensub("[	 ][	 ]*__P.*", "", 1, eline)
			sub("^.*[	 ][*]*", "", def)
		if (eline !~ db_version_unique_name && eline !~ /^int txn_/) {
			sub("[	 ][	 ]*__P.*", "", eline)
			sub("^.*[	 ][*]*", "", eline)
			printf("#define	%s %s@DB_VERSION_UNIQUE_NAME@\n",
			    def, def) >> e_dfile
			    eline, eline) >> e_dfile
		}
		eline = ""
	}
+1 −0
Original line number Diff line number Diff line
@@ -627,6 +627,7 @@ typedef struct st_mysql_methods
  MYSQL_RES * (*use_result)(MYSQL *mysql);
  void (*fetch_lengths)(unsigned long *to, 
			MYSQL_ROW column, unsigned int field_count);
  void (*flush_use_result)(MYSQL *mysql);
#if !defined(MYSQL_SERVER) || defined(EMBEDDED_LIBRARY)
  MYSQL_FIELD * (*list_fields)(MYSQL *mysql);
  my_bool (*read_prepare_result)(MYSQL *mysql, MYSQL_STMT *stmt);
+0 −1
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ extern "C" {
MYSQL_FIELD *unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
			   my_bool default_value, uint server_capabilities);
void free_rows(MYSQL_DATA *cur);
void flush_use_result(MYSQL *mysql);
my_bool mysql_autenticate(MYSQL *mysql, const char *passwd);
void free_old_query(MYSQL *mysql);
void end_server(MYSQL *mysql);
+2 −2
Original line number Diff line number Diff line
@@ -4392,7 +4392,7 @@ my_bool STDCALL mysql_stmt_free_result(MYSQL_STMT *stmt)
      if (mysql->status != MYSQL_STATUS_READY)
      {
        /* There is a result set and it belongs to this statement */
        flush_use_result(mysql);
        (*mysql->methods->flush_use_result)(mysql);
        mysql->status= MYSQL_STATUS_READY;
      }
    }
@@ -4442,7 +4442,7 @@ my_bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt)
          Flush result set of the connection. If it does not belong
          to this statement, set a warning.
        */
        flush_use_result(mysql);
        (*mysql->methods->flush_use_result)(mysql);
        if (mysql->unbuffered_fetch_owner)
          *mysql->unbuffered_fetch_owner= TRUE;
        mysql->status= MYSQL_STATUS_READY;
+34 −11
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
  thd->clear_error();
  mysql->affected_rows= ~(my_ulonglong) 0;
  mysql->field_count= 0;
  net->last_errno= 0;

  thd->store_globals();				// Fix if more than one connect
  /* 
@@ -107,17 +108,38 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
  if (!skip_check)
    result= thd->net.last_errno ? -1 : 0;

  /*
    If mysql->field_count is set it means the parsing of the query was OK
    and metadata was returned (see Protocol::send_fields).
    In this case we postpone the error to be returned in mysql_stmt_store_result
    (see emb_read_rows) to behave just as standalone server.
  */
  if (!mysql->field_count)
    embedded_get_error(mysql);
  mysql->server_status= thd->server_status;
  mysql->warning_count= ((THD*)mysql->thd)->total_warn_count;
  return result;
}

static void emb_flush_use_result(MYSQL *mysql)
{
  MYSQL_DATA *data= ((THD*)(mysql->thd))->data;

  if (data)
  {
    free_rows(data);
    ((THD*)(mysql->thd))->data= NULL;
  }
}

static MYSQL_DATA *
emb_read_rows(MYSQL *mysql, MYSQL_FIELD *mysql_fields __attribute__((unused)),
	      unsigned int fields __attribute__((unused)))
{
  MYSQL_DATA *result= ((THD*)mysql->thd)->data;
  embedded_get_error(mysql);
  if (mysql->net.last_errno)
    return NULL;
  if (!result)
  {
    if (!(result=(MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
@@ -227,6 +249,9 @@ int emb_read_binary_rows(MYSQL_STMT *stmt)
int emb_unbuffered_fetch(MYSQL *mysql, char **row)
{
  MYSQL_DATA *data= ((THD*)mysql->thd)->data;
  embedded_get_error(mysql);
  if (mysql->net.last_errno)
    return mysql->net.last_errno;
  if (!data || !data->data)
  {
    *row= NULL;
@@ -293,6 +318,7 @@ MYSQL_METHODS embedded_methods=
  emb_read_rows,
  emb_mysql_store_result,
  emb_fetch_lengths, 
  emb_flush_use_result,
  emb_list_fields,
  emb_read_prepare_result,
  emb_stmt_execute,
@@ -442,14 +468,6 @@ int init_embedded_server(int argc, char **argv, char **groups)
    }
  }

  /*
    Update mysqld variables from client variables if set
    The client variables are set also by get_one_option() in mysqld.cc
  */
  if (max_allowed_packet)
    global_system_variables.max_allowed_packet= max_allowed_packet;
  if (net_buffer_length)
    global_system_variables.net_buffer_length= net_buffer_length;
  return 0;
}

@@ -478,18 +496,20 @@ void *create_embedded_thd(int client_flag, char *db)
  if (thd->store_globals())
  {
    fprintf(stderr,"store_globals failed.\n");
    return NULL;
    goto err;
  }

  thd->mysys_var= my_thread_var;
  thd->dbug_thread_id= my_thread_id();
  thd->thread_stack= (char*) &thd;

/* TODO - add init_connect command execution */

  thd->proc_info=0;				// Remove 'login'
  thd->command=COM_SLEEP;
  thd->version=refresh_version;
  thd->set_time();
  init_sql_alloc(&thd->mem_root,8192,8192);
  thd->init_for_queries();
  thd->client_capabilities= client_flag;

  thd->db= db;
@@ -504,6 +524,9 @@ void *create_embedded_thd(int client_flag, char *db)

  thread_count++;
  return thd;
err:
  delete(thd);
  return NULL;
}

#ifdef NO_EMBEDDED_ACCESS_CHECKS
Loading