| 3420 | } |
| 3421 | |
| 3422 | int ha_release_savepoint(THD *thd, SAVEPOINT *sv) |
| 3423 | { |
| 3424 | int error=0; |
| 3425 | Ha_trx_info *ha_info= sv->ha_list; |
| 3426 | DBUG_ENTER("ha_release_savepoint"); |
| 3427 | |
| 3428 | for (; ha_info; ha_info= ha_info->next()) |
| 3429 | { |
| 3430 | int err; |
| 3431 | transaction_participant *ht= ha_info->ht(); |
| 3432 | /* Savepoint life time is enclosed into transaction life time. */ |
| 3433 | DBUG_ASSERT(ht); |
| 3434 | if (!ht->savepoint_release) |
| 3435 | continue; |
| 3436 | if ((err= ht->savepoint_release(thd, (uchar *)(sv+1) + ht->savepoint_offset))) |
| 3437 | { // cannot happen |
| 3438 | my_error(ER_GET_ERRNO, MYF(0), err, hton_name(ht)->str); |
| 3439 | error=1; |
| 3440 | } |
| 3441 | } |
| 3442 | |
| 3443 | if (thd->m_transaction_psi != NULL) |
| 3444 | MYSQL_INC_TRANSACTION_RELEASE_SAVEPOINT(thd->m_transaction_psi, 1); |
| 3445 | |
| 3446 | DBUG_RETURN(error); |
| 3447 | } |
| 3448 | |
| 3449 | static bool snapshot_handlerton(THD *thd, transaction_participant *hton, void *arg) |
| 3450 | { |
no test coverage detected