| 4463 | } |
| 4464 | |
| 4465 | ITransaction* YStatement::execute(CheckStatusWrapper* status, ITransaction* transaction, |
| 4466 | IMessageMetadata* inMetadata, void* inBuffer, IMessageMetadata* outMetadata, void* outBuffer) |
| 4467 | { |
| 4468 | try |
| 4469 | { |
| 4470 | YEntry<YStatement> entry(status, this); |
| 4471 | |
| 4472 | NextTransaction trans; |
| 4473 | if (transaction) |
| 4474 | attachment.get()->getNextTransaction(status, transaction, trans); |
| 4475 | |
| 4476 | ITransaction* newTrans = entry.next()->execute(status, trans, inMetadata, inBuffer, |
| 4477 | outMetadata, outBuffer); |
| 4478 | |
| 4479 | if (newTrans == trans) |
| 4480 | newTrans = transaction; |
| 4481 | else |
| 4482 | { |
| 4483 | if (transaction) |
| 4484 | { |
| 4485 | if (trans) |
| 4486 | trans->addRef(); // Will be decremented by release on next line |
| 4487 | transaction->release(); |
| 4488 | transaction = NULL; // Get ready for correct return in OOM case |
| 4489 | } |
| 4490 | |
| 4491 | if (newTrans) |
| 4492 | { |
| 4493 | newTrans = FB_NEW YTransaction(attachment.get(), newTrans); |
| 4494 | newTrans->addRef(); |
| 4495 | } |
| 4496 | } |
| 4497 | |
| 4498 | return newTrans; |
| 4499 | } |
| 4500 | catch (const Exception& e) |
| 4501 | { |
| 4502 | e.stuffException(status); |
| 4503 | } |
| 4504 | |
| 4505 | return transaction; |
| 4506 | } |
| 4507 | |
| 4508 | IResultSet* YStatement::openCursor(CheckStatusWrapper* status, ITransaction* transaction, |
| 4509 | IMessageMetadata* inMetadata, void* inBuffer, IMessageMetadata* outMetadata, unsigned int flags) |
no test coverage detected