Commit d6e3a9dd authored by unknown's avatar unknown
Browse files

Merge zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1

into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1-new-maint


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/r/create.result:
  Auto merged
mysql-test/r/ps.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/create.test:
  Auto merged
mysql-test/t/ndb_autodiscover3.test:
  Auto merged
mysql-test/t/ps.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
mysql-test/t/wait_timeout.test:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
parents 9b6a1384 8154ca61
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -163,7 +163,7 @@ extern gptr my_realloc(gptr oldpoint,uint Size,myf MyFlags);
extern void my_no_flags_free(gptr ptr);
extern gptr my_memdup(const byte *from,uint length,myf MyFlags);
extern char *my_strdup(const char *from,myf MyFlags);
extern char *my_strndup(const byte *from, uint length,
extern char *my_strndup(const char *from, uint length,
				   myf MyFlags);
/* we do use FG (as a no-op) in below so that a typo on FG is caught */
#define my_free(PTR,FG) ((void)FG,my_no_flags_free(PTR))
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ extern const char *not_error_sqlstate;
extern "C" {
#endif

extern CHARSET_INFO *default_client_charset_info;
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);
+7 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ extern "C"
int check_user(THD *thd, enum enum_server_command command, 
	       const char *passwd, uint passwd_len, const char *db,
	       bool check_count);
void thd_init_client_charset(THD *thd, uint cs_number);

C_MODE_START

#include <mysql.h>
@@ -604,11 +606,14 @@ void *create_embedded_thd(int client_flag, char *db)
  return NULL;
}


#ifdef NO_EMBEDDED_ACCESS_CHECKS
int check_embedded_connection(MYSQL *mysql)
{
  int result;
  THD *thd= (THD*)mysql->thd;
  thd_init_client_charset(thd, mysql->charset->number);
  thd->update_charset();
  Security_context *sctx= thd->security_ctx;
  sctx->host_or_ip= sctx->host= (char*) my_localhost;
  strmake(sctx->priv_host, (char*) my_localhost,  MAX_HOSTNAME-1);
@@ -627,6 +632,8 @@ int check_embedded_connection(MYSQL *mysql)
  char scramble_buff[SCRAMBLE_LENGTH];
  int passwd_len;

  thd_init_client_charset(thd, mysql->charset->number);
  thd->update_charset();
  if (mysql->options.client_ip)
  {
    sctx->host= my_strdup(mysql->options.client_ip, MYF(0));
+3 −45
Original line number Diff line number Diff line
@@ -90,49 +90,7 @@ static void end_server(MYSQL *mysql)
}


static int mysql_init_charset(MYSQL *mysql)
{
  char charset_name_buff[16], *charset_name;

  if ((charset_name=mysql->options.charset_name))
  {
    const char *save=charsets_dir;
    if (mysql->options.charset_dir)
      charsets_dir=mysql->options.charset_dir;
    mysql->charset=get_charset_by_name(mysql->options.charset_name,
                                       MYF(MY_WME));
    charsets_dir=save;
  }
  else if (mysql->server_language)
  {
    charset_name=charset_name_buff;
    sprintf(charset_name,"%d",mysql->server_language);	/* In case of errors */
    mysql->charset=get_charset((uint8) mysql->server_language, MYF(MY_WME));
  }
  else
    mysql->charset=default_charset_info;

  if (!mysql->charset)
  {
    mysql->net.last_errno=CR_CANT_READ_CHARSET;
    strmov(mysql->net.sqlstate, "HY0000");
    if (mysql->options.charset_dir)
      sprintf(mysql->net.last_error,ER(mysql->net.last_errno),
              charset_name ? charset_name : "unknown",
              mysql->options.charset_dir);
    else
    {
      char cs_dir_name[FN_REFLEN];
      get_charsets_dir(cs_dir_name);
      sprintf(mysql->net.last_error,ER(mysql->net.last_errno),
              charset_name ? charset_name : "unknown",
              cs_dir_name);
    }
    return mysql->net.last_errno;
  }
  return 0;
}

int mysql_init_character_set(MYSQL *mysql);

MYSQL * STDCALL
mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
@@ -222,10 +180,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,

  init_embedded_mysql(mysql, client_flag, db_name);

  if (check_embedded_connection(mysql))
  if (mysql_init_character_set(mysql))
    goto error;

  if (mysql_init_charset(mysql))
  if (check_embedded_connection(mysql))
    goto error;

  mysql->server_status= SERVER_STATUS_AUTOCOMMIT;
+1 −1
Original line number Diff line number Diff line
-- require r/ndb_default_cluster.require
disable_query_log;
show status like "Ndb_connected_host";
show status like "Ndb_config_from_host";
enable_query_log;
Loading