| 4375 | // |
| 4376 | |
| 4377 | static act* act_set_transaction() |
| 4378 | { |
| 4379 | gpre_tra* trans = (gpre_tra*) MSC_alloc(TRA_LEN); |
| 4380 | |
| 4381 | if (MSC_match(KW_NAME)) |
| 4382 | trans->tra_handle = PAR_native_value(false, true); |
| 4383 | |
| 4384 | // Get all the transaction parameters |
| 4385 | |
| 4386 | while (true) |
| 4387 | { |
| 4388 | if (MSC_match(KW_ISOLATION)) |
| 4389 | { |
| 4390 | MSC_match(KW_LEVEL); |
| 4391 | if (!par_transaction_modes(trans, true)) |
| 4392 | CPR_s_error("SNAPSHOT"); |
| 4393 | |
| 4394 | continue; |
| 4395 | } |
| 4396 | |
| 4397 | if (par_transaction_modes(trans, false)) |
| 4398 | continue; |
| 4399 | |
| 4400 | if (MSC_match(KW_NO)) |
| 4401 | { |
| 4402 | if (MSC_match(KW_WAIT)) |
| 4403 | { |
| 4404 | trans->tra_flags |= TRA_nw; |
| 4405 | continue; |
| 4406 | } |
| 4407 | CPR_s_error("WAIT"); |
| 4408 | } |
| 4409 | |
| 4410 | if (MSC_match(KW_WAIT)) |
| 4411 | continue; |
| 4412 | |
| 4413 | #ifdef DEV_BUILD |
| 4414 | if (MSC_match(KW_AUTOCOMMIT)) |
| 4415 | { |
| 4416 | trans->tra_flags |= TRA_autocommit; |
| 4417 | continue; |
| 4418 | } |
| 4419 | #endif |
| 4420 | |
| 4421 | if (MSC_match(KW_NO_AUTO_UNDO)) |
| 4422 | { |
| 4423 | trans->tra_flags |= TRA_no_auto_undo; |
| 4424 | continue; |
| 4425 | } |
| 4426 | |
| 4427 | if (MSC_match(KW_AUTO_RELEASE_TEMP_BLOBID)) |
| 4428 | { |
| 4429 | trans->tra_flags |= TRA_auto_release_temp_blobid; |
| 4430 | continue; |
| 4431 | } |
| 4432 | |
| 4433 | break; |
| 4434 | } |
no test coverage detected