diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2018-02-01 14:09:48 +0200 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2018-02-01 14:09:48 +0200 |
commit | c7e5feb2596e2a032207191320dbf1387d440959 (patch) | |
tree | b4a5f850c3ab553a9a3c6b1b58bc5280ed42a861 /sql/sql_class.h | |
parent | 08b2c516da4df91082ae9fbe5e060959c4bb5faa (diff) | |
parent | d01dbe66a8bf9cb6031f95159c49100f9299a768 (diff) | |
download | mariadb-git-c7e5feb2596e2a032207191320dbf1387d440959.tar.gz |
Merge tag 'mariadb-10.0.34' into 10.0-galeramariadb-galera-10.0.34
Conflicts:
storage/innobase/lock/lock0lock.cc
storage/xtradb/lock/lock0lock.cc
storage/xtradb/lock/lock0wait.cc
support-files/mysql.server.sh
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index 1968b45c1ee..0721252193d 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1118,6 +1118,30 @@ typedef struct st_xid_state { bool in_thd; /* Error reported by the Resource Manager (RM) to the Transaction Manager. */ uint rm_error; + + /** + Check that XA transaction has an uncommitted work. Report an error + to the user in case when there is an uncommitted work for XA transaction. + + @return result of check + @retval false XA transaction is NOT in state IDLE, PREPARED + or ROLLBACK_ONLY. + @retval true XA transaction is in state IDLE or PREPARED + or ROLLBACK_ONLY. + */ + + bool check_has_uncommitted_xa() const + { + if (xa_state == XA_IDLE || + xa_state == XA_PREPARED || + xa_state == XA_ROLLBACK_ONLY) + { + my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[xa_state]); + return true; + } + return false; + } + } XID_STATE; extern mysql_mutex_t LOCK_xid_cache; @@ -3267,10 +3291,14 @@ public: void change_item_tree(Item **place, Item *new_value) { + DBUG_ENTER("THD::change_item_tree"); + DBUG_PRINT("enter", ("Register: %p (%p) <- %p", + *place, place, new_value)); /* TODO: check for OOM condition here */ if (!stmt_arena->is_conventional()) nocheck_register_item_tree_change(place, *place, mem_root); *place= new_value; + DBUG_VOID_RETURN; } /** Make change in item tree after checking whether it needs registering |