Merge 10.2 into bb-10.2-ext

This commit is contained in:
Marko Mäkelä 2017-09-20 17:47:49 +03:00
commit fc3b1a7d2f
230 changed files with 3605 additions and 2161 deletions

View file

@ -2980,6 +2980,9 @@ int ha_federated::reset(void)
}
reset_dynamic(&results);
if (mysql)
mysql->net.thd= NULL;
return 0;
}
@ -3200,11 +3203,13 @@ int ha_federated::real_query(const char *query, size_t length)
int rc= 0;
DBUG_ENTER("ha_federated::real_query");
if (!query || !length)
goto end;
if (!mysql && (rc= real_connect()))
goto end;
if (!query || !length)
goto end;
mysql->net.thd= table->in_use;
rc= mysql_real_query(mysql, query, (uint) length);
@ -3289,66 +3294,6 @@ int ha_federated::external_lock(THD *thd, int lock_type)
int error= 0;
DBUG_ENTER("ha_federated::external_lock");
/*
Support for transactions disabled until WL#2952 fixes it.
*/
#ifdef XXX_SUPERCEDED_BY_WL2952
if (lock_type != F_UNLCK)
{
ha_federated *trx= (ha_federated *)thd_get_ha_data(thd, ht);
DBUG_PRINT("info",("federated not lock F_UNLCK"));
if (!(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))
{
DBUG_PRINT("info",("federated autocommit"));
/*
This means we are doing an autocommit
*/
error= connection_autocommit(TRUE);
if (error)
{
DBUG_PRINT("info", ("error setting autocommit TRUE: %d", error));
DBUG_RETURN(error);
}
trans_register_ha(thd, FALSE, ht);
}
else
{
DBUG_PRINT("info",("not autocommit"));
if (!trx)
{
/*
This is where a transaction gets its start
*/
error= connection_autocommit(FALSE);
if (error)
{
DBUG_PRINT("info", ("error setting autocommit FALSE: %d", error));
DBUG_RETURN(error);
}
thd_set_ha_data(thd, ht, this);
trans_register_ha(thd, TRUE, ht);
/*
Send a lock table to the remote end.
We do not support this at the moment
*/
if (thd->options & (OPTION_TABLE_LOCK))
{
DBUG_PRINT("info", ("We do not support lock table yet"));
}
}
else
{
ha_federated *ptr;
for (ptr= trx; ptr; ptr= ptr->trx_next)
if (ptr == this)
break;
else if (!ptr->trx_next)
ptr->trx_next= this;
}
}
}
#endif /* XXX_SUPERCEDED_BY_WL2952 */
table_will_be_deleted = FALSE;
DBUG_RETURN(error);
}