eXtremeDB SQL Transaction Rellease

来源:互联网 发布:数据结构出栈算法 编辑:程序博客网 时间:2024/06/07 07:48

First of all, know that Transaction::release() releases the transaction object and related resources allocated by McoSql, but not by the eXtremeDB runtime. So the Transaction::release() method has to be called after any way to finish the transaction ( commit/release ). For example, see this snippet from our sample: “samples/native/sql/api/sql-03-transactions/mvcc/main.cpp”:

...
void task1( sample_task_t * descriptor )
{
  int rc;
  uint4 i;
  McoSqlSession session( &engine );
  SqlEngineAllocatorContext ctx(&session);
  Transaction* trans = session.database()->beginTransaction(Transaction::ReadWrite, 0, isolation_level);
  try {
      for (i = 0; i < (uint4)n_iterations; i++)
      {
          StructB a;
          char tag[MAX_TAG_LENGTH+1];
          a.tag = tag;
          a.ui4 = i;
          sprintf(a.tag, "\t\tStream 1, rec %u\n", i);
          mem_write(a.tag);
          //rc = pEngine->executeStatement("insert into A %r", a);
          rc = session.executeStatement(trans, "insert into A %r", &a);
          sample_sleep(nap_duration1);
      }
  } catch (McoSqlException &err) {
      mem_write("ERROR: ");
      mem_write(err.getMessage()->cstr());
      trans->rollback();
 
0 0
原创粉丝点击