diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-03-07 12:04:22 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-03-07 12:04:22 +0200 |
commit | 0a0eed80164dac0d3bfb7dcc57eb416cfba89386 (patch) | |
tree | a360df77047ddda92caf226df5fb8dbbafa417d4 | |
parent | 2d34713294d5339d1459911a46fa20395443b3c7 (diff) | |
parent | 8024f8c6b86b204c3475e562587640cf2b141683 (diff) | |
download | mariadb-git-0a0eed80164dac0d3bfb7dcc57eb416cfba89386.tar.gz |
Merge 5.5 into 10.0
-rw-r--r-- | storage/innobase/row/row0mysql.cc | 11 | ||||
-rw-r--r-- | storage/xtradb/row/row0mysql.cc | 11 |
2 files changed, 12 insertions, 10 deletions
diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc index f623845f289..8bfc17194a8 100644 --- a/storage/innobase/row/row0mysql.cc +++ b/storage/innobase/row/row0mysql.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2018, MariaDB Corporation. +Copyright (c) 2017, 2019, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -615,8 +615,7 @@ handle_new_error: switch (err) { case DB_LOCK_WAIT_TIMEOUT: if (row_rollback_on_timeout) { - trx_rollback_to_savepoint(trx, NULL); - break; + goto rollback; } /* fall through */ case DB_DUPLICATE_KEY: @@ -633,6 +632,7 @@ handle_new_error: case DB_FTS_INVALID_DOCID: case DB_INTERRUPTED: case DB_DICT_CHANGED: + rollback_to_savept: if (savept) { /* Roll back the latest, possibly incomplete insertion or update */ @@ -656,6 +656,7 @@ handle_new_error: case DB_DEADLOCK: case DB_LOCK_TABLE_FULL: + rollback: /* Roll back the whole transaction; this resolution was added to version 3.23.43 */ @@ -686,14 +687,14 @@ handle_new_error: "InnoDB: you dump the tables, look at\n" "InnoDB: " REFMAN "forcing-innodb-recovery.html" " for help.\n", stderr); - break; + goto rollback_to_savept; case DB_FOREIGN_EXCEED_MAX_CASCADE: fprintf(stderr, "InnoDB: Cannot delete/update rows with" " cascading foreign key constraints that exceed max" " depth of %lu\n" "Please drop excessive foreign constraints" " and try again\n", (ulong) DICT_FK_MAX_RECURSIVE_LOAD); - break; + goto rollback_to_savept; default: fprintf(stderr, "InnoDB: unknown error code %lu\n", (ulong) err); diff --git a/storage/xtradb/row/row0mysql.cc b/storage/xtradb/row/row0mysql.cc index d51771820a2..3fee70f6cae 100644 --- a/storage/xtradb/row/row0mysql.cc +++ b/storage/xtradb/row/row0mysql.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2018, MariaDB Corporation. +Copyright (c) 2017, 2019, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -613,8 +613,7 @@ handle_new_error: switch (err) { case DB_LOCK_WAIT_TIMEOUT: if (row_rollback_on_timeout) { - trx_rollback_to_savepoint(trx, NULL); - break; + goto rollback; } /* fall through */ case DB_DUPLICATE_KEY: @@ -631,6 +630,7 @@ handle_new_error: case DB_FTS_INVALID_DOCID: case DB_INTERRUPTED: case DB_DICT_CHANGED: + rollback_to_savept: if (savept) { /* Roll back the latest, possibly incomplete insertion or update */ @@ -654,6 +654,7 @@ handle_new_error: case DB_DEADLOCK: case DB_LOCK_TABLE_FULL: + rollback: /* Roll back the whole transaction; this resolution was added to version 3.23.43 */ @@ -684,14 +685,14 @@ handle_new_error: "InnoDB: you dump the tables, look at\n" "InnoDB: " REFMAN "forcing-innodb-recovery.html" " for help.\n", stderr); - break; + goto rollback_to_savept; case DB_FOREIGN_EXCEED_MAX_CASCADE: fprintf(stderr, "InnoDB: Cannot delete/update rows with" " cascading foreign key constraints that exceed max" " depth of %lu\n" "Please drop excessive foreign constraints" " and try again\n", (ulong) DICT_FK_MAX_RECURSIVE_LOAD); - break; + goto rollback_to_savept; default: fprintf(stderr, "InnoDB: unknown error code %lu\n", (ulong) err); |