Commit d1ed8e22 authored by unknown's avatar unknown
Browse files

Merge neptunus.(none):/home/msvensson/mysql/bug15719/my50-bug15719

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0


sql-common/client.c:
  Auto merged
tests/mysql_client_test.c:
  Merge
parents 462fcf40 f220f892
Loading
Loading
Loading
Loading
+18 −17
Original line number Diff line number Diff line
@@ -1456,6 +1456,24 @@ mysql_init(MYSQL *mysql)

  mysql->options.methods_to_use= MYSQL_OPT_GUESS_CONNECTION;
  mysql->options.report_data_truncation= TRUE;  /* default */

  /*
    By default we don't reconnect because it could silently corrupt data (after
    reconnection you potentially lose table locks, user variables, session
    variables (transactions but they are specifically dealt with in
    mysql_reconnect()).
    This is a change: < 5.0.3 mysql->reconnect was set to 1 by default.
    How this change impacts existing apps:
    - existing apps which relyed on the default will see a behaviour change;
    they will have to set reconnect=1 after mysql_real_connect().
    - existing apps which explicitely asked for reconnection (the only way they
    could do it was by setting mysql.reconnect to 1 after mysql_real_connect())
    will not see a behaviour change.
    - existing apps which explicitely asked for no reconnection
    (mysql.reconnect=0) will not see a behaviour change.
  */
  mysql->reconnect= 0;

  return mysql;
}

@@ -1625,23 +1643,6 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
  if (!unix_socket)
    unix_socket=mysql->options.unix_socket;

  /*
    By default we don't reconnect because it could silently corrupt data (after
    reconnection you potentially lose table locks, user variables, session
    variables (transactions but they are specifically dealt with in
    mysql_reconnect()).
    This is a change: < 5.0.3 mysql->reconnect was set to 1 by default.
    How this change impacts existing apps:
    - existing apps which relyed on the default will see a behaviour change;
    they will have to set reconnect=1 after mysql_real_connect().
    - existing apps which explicitely asked for reconnection (the only way they
    could do it was by setting mysql.reconnect to 1 after mysql_real_connect())
    will not see a behaviour change.
    - existing apps which explicitely asked for no reconnection
    (mysql.reconnect=0) will not see a behaviour change.
  */
  mysql->reconnect= 0;

  mysql->server_status=SERVER_STATUS_AUTOCOMMIT;

  /*
+77 −2
Original line number Diff line number Diff line
@@ -14598,7 +14598,6 @@ static void test_bug14845()
static void test_bug15510()
{
  MYSQL_STMT *stmt;
  MYSQL_RES *res;
  int rc;
  const char *query= "select 1 from dual where 1/0";

@@ -14624,6 +14623,80 @@ static void test_bug15510()
  myquery(rc);
}


/* Test MYSQL_OPT_RECONNECT, Bug#15719 */

static void test_opt_reconnect()
{
  MYSQL *lmysql;
  my_bool my_true= TRUE;

  myheader("test_opt_reconnect");

  if (!(lmysql= mysql_init(NULL)))
  {
    myerror("mysql_init() failed");
    exit(1);
  }

  if (!opt_silent)
    fprintf(stdout, "reconnect before mysql_options: %d\n", lmysql->reconnect);
  DIE_UNLESS(lmysql->reconnect == 0);

  if (mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true))
  {
    myerror("mysql_options failed: unknown option MYSQL_OPT_RECONNECT\n");
    exit(1);
  }

  /* reconnect should be 1 */
  if (!opt_silent)
    fprintf(stdout, "reconnect after mysql_options: %d\n", lmysql->reconnect);
  DIE_UNLESS(lmysql->reconnect == 1);

  if (!(mysql_real_connect(lmysql, opt_host, opt_user,
                           opt_password, current_db, opt_port,
                           opt_unix_socket, 0)))
  {
    myerror("connection failed");
    exit(1);
  }

  /* reconnect should still be 1 */
  if (!opt_silent)
    fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
	    lmysql->reconnect);
  DIE_UNLESS(lmysql->reconnect == 1);

  mysql_close(lmysql);

  if (!(lmysql= mysql_init(NULL)))
  {
    myerror("mysql_init() failed");
    exit(1);
  }

  if (!opt_silent)
    fprintf(stdout, "reconnect before mysql_real_connect: %d\n", lmysql->reconnect);
  DIE_UNLESS(lmysql->reconnect == 0);

  if (!(mysql_real_connect(lmysql, opt_host, opt_user,
                           opt_password, current_db, opt_port,
                           opt_unix_socket, 0)))
  {
    myerror("connection failed");
    exit(1);
  }

  /* reconnect should still be 0 */
  if (!opt_silent)
    fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
	    lmysql->reconnect);
  DIE_UNLESS(lmysql->reconnect == 0);

  mysql_close(lmysql);
}

/* Bug #16144: mysql_stmt_attr_get type error */

static void test_bug16144()
@@ -14965,6 +15038,8 @@ static struct my_tests_st my_tests[]= {
  { "test_bug13524", test_bug13524 },
  { "test_bug14845", test_bug14845 },
  { "test_bug15510", test_bug15510 },
  { "test_opt_reconnect", test_opt_reconnect },

  { "test_bug16144", test_bug16144 },
  { "test_bug15613", test_bug15613 },
  { 0, 0 }