MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / execute

Method execute

src/yvalve/why.cpp:4465–4506  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4463}
4464
4465ITransaction* 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
4508IResultSet* YStatement::openCursor(CheckStatusWrapper* status, ITransaction* transaction,
4509 IMessageMetadata* inMetadata, void* inBuffer, IMessageMetadata* outMetadata, unsigned int flags)

Calls 12

translateHandleFunction · 0.85
executeFunction · 0.85
getNextTransactionMethod · 0.80
YTransactionClass · 0.70
getMethod · 0.45
nextMethod · 0.45
addRefMethod · 0.45
releaseMethod · 0.45
stuffExceptionMethod · 0.45
getStateMethod · 0.45
destroyMethod · 0.45
getHandleMethod · 0.45

Tested by

no test coverage detected