summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <jan@hundin.mysql.fi>2005-01-17 09:09:59 +0200
committerunknown <jan@hundin.mysql.fi>2005-01-17 09:09:59 +0200
commite1f13fb2e02949bf8cbf6894581b94b7f850eef7 (patch)
treef3c7a39fbbd795b1af48391166a7c81925857142 /innobase
parenta7401bf7cc1646f76710992cd77c54b97df8d860 (diff)
downloadmariadb-git-e1f13fb2e02949bf8cbf6894581b94b7f850eef7.tar.gz
Required changes to support recovery of X/Open XA in InnoDB.
innobase/lock/lock0lock.c: Add prepared state to concurrency states in lock validate. innobase/trx/trx0trx.c: Prepared transactions are active transactions in file based word. sql/ha_innodb.cc: Add full support of X/Open XA to InnoDB.
Diffstat (limited to 'innobase')
-rw-r--r--innobase/lock/lock0lock.c22
-rw-r--r--innobase/trx/trx0trx.c4
2 files changed, 14 insertions, 12 deletions
diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c
index 70075019389..8995f543c61 100644
--- a/innobase/lock/lock0lock.c
+++ b/innobase/lock/lock0lock.c
@@ -4417,8 +4417,9 @@ lock_table_queue_validate(
lock = UT_LIST_GET_FIRST(table->locks);
while (lock) {
- ut_a(((lock->trx)->conc_state == TRX_ACTIVE)
- || ((lock->trx)->conc_state == TRX_COMMITTED_IN_MEMORY));
+ ut_a((lock->trx)->conc_state == TRX_ACTIVE ||
+ (lock->trx)->conc_state == TRX_PREPARED ||
+ (lock->trx)->conc_state == TRX_COMMITTED_IN_MEMORY);
if (!lock_get_wait(lock)) {
@@ -4464,9 +4465,9 @@ lock_rec_queue_validate(
lock = lock_rec_get_first(rec);
while (lock) {
- ut_a(lock->trx->conc_state == TRX_ACTIVE
- || lock->trx->conc_state
- == TRX_COMMITTED_IN_MEMORY);
+ ut_a(lock->trx->conc_state == TRX_ACTIVE ||
+ lock->trx->conc_state == TRX_PREPARED ||
+ lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
ut_a(trx_in_trx_list(lock->trx));
@@ -4518,8 +4519,10 @@ lock_rec_queue_validate(
lock = lock_rec_get_first(rec);
while (lock) {
- ut_a(lock->trx->conc_state == TRX_ACTIVE
- || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
+ ut_a(lock->trx->conc_state == TRX_ACTIVE ||
+ lock->trx->conc_state == TRX_PREPARED ||
+ lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
+
ut_a(trx_in_trx_list(lock->trx));
if (index) {
@@ -4600,8 +4603,9 @@ loop:
}
ut_a(trx_in_trx_list(lock->trx));
- ut_a(lock->trx->conc_state == TRX_ACTIVE
- || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
+ ut_a(lock->trx->conc_state == TRX_ACTIVE ||
+ lock->trx->conc_state == TRX_PREPARED ||
+ lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
for (i = nth_bit; i < lock_rec_get_n_bits(lock); i++) {
diff --git a/innobase/trx/trx0trx.c b/innobase/trx/trx0trx.c
index 51f0fbd7b93..e468b1c9f13 100644
--- a/innobase/trx/trx0trx.c
+++ b/innobase/trx/trx0trx.c
@@ -1612,12 +1612,10 @@ trx_print(
fputs(", not started", f);
break;
case TRX_ACTIVE:
+ case TRX_PREPARED:
fprintf(f, ", ACTIVE %lu sec",
(ulong)difftime(time(NULL), trx->start_time));
break;
- case TRX_PREPARED:
- fputs(", PREPARED", f);
- break;
case TRX_COMMITTED_IN_MEMORY:
fputs(", COMMITTED IN MEMORY", f);
break;