diff options
author | unknown <serg@serg.mylan> | 2005-09-07 18:03:07 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2005-09-07 18:03:07 +0200 |
commit | a3fbfc037d83a58704684cb9a25606d63acfb773 (patch) | |
tree | 496ee723a85afdb434dc77d953c001c0b18e4830 /sql/handler.cc | |
parent | 180a9ce7ebcc88781541964d37ce759d4ca7bf19 (diff) | |
download | mariadb-git-a3fbfc037d83a58704684cb9a25606d63acfb773.tar.gz |
don't crash when in XA PREPARE not all storage engines are 2pc-capable
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index cf1fbfec465..3acca812a13 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -570,12 +570,20 @@ int ha_prepare(THD *thd) { int err; statistic_increment(thd->status_var.ha_prepare_count,&LOCK_status); - if ((err= (*(*ht)->prepare)(thd, all))) + if ((*ht)->prepare) { - my_error(ER_ERROR_DURING_COMMIT, MYF(0), err); - ha_rollback_trans(thd, all); - error=1; - break; + if ((err= (*(*ht)->prepare)(thd, all))) + { + my_error(ER_ERROR_DURING_COMMIT, MYF(0), err); + ha_rollback_trans(thd, all); + error=1; + break; + } + } + else + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_ILLEGAL_HA, ER(ER_ILLEGAL_HA), (*ht)->name); } } } |