diff --git a/sql-common/client.c b/sql-common/client.c index f6325d923ab..6d63c457390 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2459,6 +2459,7 @@ my_bool mysql_reconnect(MYSQL *mysql) } mysql_init(&tmp_mysql); tmp_mysql.options= mysql->options; + tmp_mysql.options.my_cnf_file= tmp_mysql.options.my_cnf_group= 0; tmp_mysql.rpl_pivot= mysql->rpl_pivot; if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd, diff --git a/sql/handler.h b/sql/handler.h index e80b62c1250..4095a2f4cb1 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1130,10 +1130,12 @@ public: int ha_index_init(uint idx, bool sorted) { + int result; DBUG_ENTER("ha_index_init"); DBUG_ASSERT(inited==NONE); - inited=INDEX; - DBUG_RETURN(index_init(idx, sorted)); + if (!(result= index_init(idx, sorted))) + inited=INDEX; + DBUG_RETURN(result); } int ha_index_end() { @@ -1144,10 +1146,11 @@ public: } int ha_rnd_init(bool scan) { + int result; DBUG_ENTER("ha_rnd_init"); DBUG_ASSERT(inited==NONE || (inited==RND && scan)); - inited=RND; - DBUG_RETURN(rnd_init(scan)); + inited= (result= rnd_init(scan)) ? NONE: RND; + DBUG_RETURN(result); } int ha_rnd_end() {