summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2001-07-13 16:06:13 -0600
committerunknown <sasha@mysql.sashanet.com>2001-07-13 16:06:13 -0600
commit90acfb9ff36c796650b40c8b85f2f4042c60d1fc (patch)
treecf3b4cf03afc1b6b8d84a22ddd04f24bb947acc2
parentac25ff766f0fa1e4fa68efbc29e0dada6b3227ec (diff)
parent0251108474303747183409ec40e08301164a66aa (diff)
downloadmariadb-git-90acfb9ff36c796650b40c8b85f2f4042c60d1fc.tar.gz
Merge work:/home/bk/mysql-4.0
into mysql.sashanet.com:/home/sasha/src/bk/mysql-4.0
-rw-r--r--libmysql/libmysql.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index fc39b73ab23..9fe9da416c3 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -1845,6 +1845,23 @@ error:
DBUG_RETURN(0);
}
+/* needed when we move MYSQL structure to a different address */
+static void mysql_fix_pointers(MYSQL* mysql, MYSQL* old_mysql)
+{
+ MYSQL *tmp, *tmp_prev;
+ if (mysql->master == old_mysql)
+ mysql->master = mysql;
+ if (mysql->last_used_con == old_mysql)
+ mysql->last_used_con = mysql;
+ if (mysql->last_used_slave == old_mysql)
+ mysql->last_used_slave = mysql;
+ for (tmp_prev = mysql, tmp = mysql->next_slave;
+ tmp != old_mysql;tmp = tmp->next_slave)
+ {
+ tmp_prev = tmp;
+ }
+ tmp_prev->next_slave = mysql;
+}
static my_bool mysql_reconnect(MYSQL *mysql)
{
@@ -1860,6 +1877,7 @@ static my_bool mysql_reconnect(MYSQL *mysql)
}
mysql_init(&tmp_mysql);
tmp_mysql.options=mysql->options;
+ tmp_mysql.rpl_pivot = mysql->rpl_pivot;
if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd,
mysql->db, mysql->port, mysql->unix_socket,
mysql->client_flag))
@@ -1869,6 +1887,7 @@ static my_bool mysql_reconnect(MYSQL *mysql)
bzero((char*) &mysql->options,sizeof(mysql->options));
mysql_close(mysql);
*mysql=tmp_mysql;
+ mysql_fix_pointers(mysql, &tmp_mysql); /* adjust connection pointers */
net_clear(&mysql->net);
mysql->affected_rows= ~(my_ulonglong) 0;
DBUG_RETURN(0);