diff options
Diffstat (limited to 'storage/spider/spd_trx.cc')
| -rw-r--r-- | storage/spider/spd_trx.cc | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/storage/spider/spd_trx.cc b/storage/spider/spd_trx.cc index b47b75a93cf..4f8296f1d01 100644 --- a/storage/spider/spd_trx.cc +++ b/storage/spider/spd_trx.cc @@ -2228,7 +2228,10 @@ int spider_internal_xa_commit( spider_close_sys_table(thd, table_xa, &open_tables_backup, TRUE); table_xa_opened = FALSE; } - spider_xa_unlock(&trx->internal_xid_state); + if (trx->internal_xa) + { + spider_xa_unlock(&trx->internal_xid_state); + } DBUG_RETURN(0); error: @@ -2238,7 +2241,10 @@ error: spider_close_sys_table(thd, table_xa_member, &open_tables_backup, TRUE); error_in_commit: error_open_table: - spider_xa_unlock(&trx->internal_xid_state); + if (trx->internal_xa) + { + spider_xa_unlock(&trx->internal_xid_state); + } DBUG_RETURN(error_num); } @@ -2464,7 +2470,10 @@ int spider_internal_xa_rollback( spider_close_sys_table(thd, table_xa, &open_tables_backup, TRUE); table_xa_opened = FALSE; } - spider_xa_unlock(&trx->internal_xid_state); + if (trx->internal_xa) + { + spider_xa_unlock(&trx->internal_xid_state); + } DBUG_RETURN(0); error: @@ -2474,7 +2483,10 @@ error: spider_close_sys_table(thd, table_xa_member, &open_tables_backup, TRUE); error_in_rollback: error_open_table: - spider_xa_unlock(&trx->internal_xid_state); + if (trx->internal_xa) + { + spider_xa_unlock(&trx->internal_xid_state); + } DBUG_RETURN(error_num); } |
