summaryrefslogtreecommitdiff
path: root/sql/sql_load.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-02-15 11:48:30 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2018-02-15 11:48:30 +0200
commitcc3b5d1fe75cf1d9b83b7918151f8d90e9263d34 (patch)
tree126aa92625cbe953175cefec87dbd92d97ce7a54 /sql/sql_load.cc
parentb006d2ead4640f0ab4e29687fd7d24988b1c98f1 (diff)
parent22770a9f9a7fb4c30dbdc204e5a8f829303b7373 (diff)
downloadmariadb-git-cc3b5d1fe75cf1d9b83b7918151f8d90e9263d34.tar.gz
Merge bb-10.2-ext into 10.3
Diffstat (limited to 'sql/sql_load.cc')
-rw-r--r--sql/sql_load.cc22
1 files changed, 12 insertions, 10 deletions
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 17e2aca79e4..c0ee0057016 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -104,23 +104,25 @@ the transaction after every 10,000 inserted rows. */
static bool wsrep_load_data_split(THD *thd, const TABLE *table,
const COPY_INFO &info)
{
- extern struct handlerton* innodb_hton_ptr;
-
DBUG_ENTER("wsrep_load_data_split");
- if (wsrep_load_data_splitting && wsrep_on(thd)
- && info.records && !(info.records % 10000)
- && thd->transaction.stmt.ha_list
- && thd->transaction.stmt.ha_list->ht() == binlog_hton
- && thd->transaction.stmt.ha_list->next()
- && thd->transaction.stmt.ha_list->next()->ht() == innodb_hton_ptr
- && !thd->transaction.stmt.ha_list->next()->next())
+ if (!wsrep_load_data_splitting || !wsrep_on(thd)
+ || !info.records || (info.records % 10000)
+ || !thd->transaction.stmt.ha_list
+ || thd->transaction.stmt.ha_list->ht() != binlog_hton
+ || !thd->transaction.stmt.ha_list->next()
+ || thd->transaction.stmt.ha_list->next()->next())
+ DBUG_RETURN(false);
+
+ if (handlerton* hton= thd->transaction.stmt.ha_list->next()->ht())
{
+ if (hton->db_type != DB_TYPE_INNODB)
+ DBUG_RETURN(false);
WSREP_DEBUG("intermediate transaction commit in LOAD DATA");
if (wsrep_run_wsrep_commit(thd, true) != WSREP_TRX_OK) DBUG_RETURN(true);
if (binlog_hton->commit(binlog_hton, thd, true)) DBUG_RETURN(true);
wsrep_post_commit(thd, true);
- innodb_hton_ptr->commit(innodb_hton_ptr, thd, true);
+ hton->commit(hton, thd, true);
table->file->extra(HA_EXTRA_FAKE_START_STMT);
}