Directory
eXtremeDB_rt/samples/transactionsDescription
Demonstrates the different eXtremeDB/rt transaction types (Read-Only / Read-Write).
Used API
mco_trans_start(), mco_trans_rollback(), mco_trans_commit(), mco_trans_checkpoint(), mco_trans_upgrade()
Code snippet
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &t); if ( MCO_S_OK == rc ) { /* A ReadOnly transaction is intended for lookups and data extraction. Mutiple R-O transactions can be started simultaneously with the MURSIW transaction manager. But only one R-O transaction can be started with the EXCLUSIVE transaction manager. */ ... /* Do lookups and data extraction */ /* Commit or rollback - there are no differences for read-only transactions */ mco_trans_rollback( t ); /* or mco_trans_commit( t ); */ .... /* Start read-write transaction */ rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t); if ( MCO_S_OK == rc ) { /* R-W transactions are intended for lookups and data extraction, as well as creation and deletion. Only one R-W transaction at a time can be started with MURSIW and EXCLUSIVE transaction managers. */ .... /* Do lookups, create and destroy objects, modify data */ /* It is possible to force indexes to be updated during the transaction using mco_trans_checkpoint() */ mco_trans_checkpoint( t ); sample_rc_check("\t\tTransaction Checkpoint", rc ); /* Commit to confirm and store changes or rollback to cancel updates made during this transaction */ mco_trans_commit( t ); /* Or mco_trans_rollback( t ); */ .... printf( "\n\n\tTransactions can be upgraded to R-W to update data.\n" ); /* Get transaction type */ mco_trans_type( t, &t_type ); printf( "\n\t\tTransaction type is %s\n", t_type == MCO_READ_ONLY ? "R-O" : "R-W" ); /* Upgrade it to R-W */ rc = mco_trans_upgrade(t); sample_rc_check("\t\tUpgrade transaction", rc );What to expect as an output
A ReadOnly transaction has been successfully started. R-O transactions are intended for lookups and data extraction. Multiple R-O transactions can be started simultaneously with the MURSIW transaction manager. But only one R-O can be started with the EXCLUSIVE transaction manager. A ReadWrite transaction has been successfully started. R-W transactions are intended for lookups and data extraction, as well as data creation and deletion. Only one R-W transaction at a time can be started with the MURSIW and EXCLUSIVE transaction managers. Transaction Checkpoint : Successful Transactions can be upgraded to R-W to update data. Transaction type is R-O Upgrade transaction : Successful Now Transaction type is R-W