summaryrefslogtreecommitdiff
path: root/storage/federated
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-09-20 17:47:49 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2017-09-20 17:47:49 +0300
commitfc3b1a7d2fcc45c05aa19ea35e1d7978b4f90670 (patch)
treed3f4f28b6bb2ffa6e6c4b19e6c03f2e209590171 /storage/federated
parent4cfef2a5a4157269244923637032c21ff67b0161 (diff)
parent96f06f952d087bd47225cc2784edbb0510fad818 (diff)
downloadmariadb-git-fc3b1a7d2fcc45c05aa19ea35e1d7978b4f90670.tar.gz
Merge 10.2 into bb-10.2-ext
Diffstat (limited to 'storage/federated')
-rw-r--r--storage/federated/ha_federated.cc69
1 files changed, 7 insertions, 62 deletions
diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc
index e35da50ba96..059113e2fa5 100644
--- a/storage/federated/ha_federated.cc
+++ b/storage/federated/ha_federated.cc
@@ -2980,6 +2980,9 @@ int ha_federated::reset(void)
}
reset_dynamic(&results);
+ if (mysql)
+ mysql->net.thd= NULL;
+
return 0;
}
@@ -3200,12 +3203,14 @@ int ha_federated::real_query(const char *query, size_t length)
int rc= 0;
DBUG_ENTER("ha_federated::real_query");
- if (!mysql && (rc= real_connect()))
+ if (!query || !length)
goto end;
- if (!query || !length)
+ if (!mysql && (rc= real_connect()))
goto end;
+ mysql->net.thd= table->in_use;
+
rc= mysql_real_query(mysql, query, (uint) length);
end:
@@ -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);
}