9 my $schema = DBICTest->init_schema(auto_savepoint => 1);
11 my $ars = $schema->resultset('Artist');
13 # test two-phase commit and inner transaction rollback from nested transactions
15 $ars->create({ name => 'in_outer_transaction' });
17 $ars->create({ name => 'in_inner_transaction' });
19 ok($ars->search({ name => 'in_inner_transaction' })->first,
20 'commit from inner transaction visible in outer transaction');
23 $ars->create({ name => 'in_inner_transaction_rolling_back' });
24 die 'rolling back inner transaction';
26 } qr/rolling back inner transaction/, 'inner transaction rollback executed';
27 $ars->create({ name => 'in_outer_transaction2' });
29 ok($ars->search({ name => 'in_outer_transaction' })->first,
30 'commit from outer transaction');
31 ok($ars->search({ name => 'in_outer_transaction2' })->first,
32 'second commit from outer transaction');
33 ok($ars->search({ name => 'in_inner_transaction' })->first,
34 'commit from inner transaction');
35 is $ars->search({ name => 'in_inner_transaction_rolling_back' })->first,
37 'rollback from inner transaction';