Skip to content

Commit c8da582

Browse files
committed
Fix for ESQL execute procedure
1 parent 04e1c3e commit c8da582

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/jrd/jrd.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4823,6 +4823,7 @@ void JAttachment::transactRequest(CheckStatusWrapper* user_status, ITransaction*
48234823
JTransaction* const jt = getTransactionInterface(user_status, tra);
48244824
EngineContextHolder tdbb(user_status, this, FB_FUNCTION);
48254825

4826+
Request* request = nullptr;
48264827
jrd_tra* transaction = jt->getHandle();
48274828
validateHandle(tdbb, transaction);
48284829
check_database(tdbb);
@@ -4834,7 +4835,6 @@ void JAttachment::transactRequest(CheckStatusWrapper* user_status, ITransaction*
48344835
const MessageNode* inMessage = NULL;
48354836
const MessageNode* outMessage = NULL;
48364837

4837-
Request* request = NULL;
48384838
MemoryPool* new_pool = att->createPool();
48394839

48404840
try
@@ -4860,9 +4860,7 @@ void JAttachment::transactRequest(CheckStatusWrapper* user_status, ITransaction*
48604860
}
48614861
catch (const Exception&)
48624862
{
4863-
if (request)
4864-
CMP_release(tdbb, request);
4865-
else
4863+
if (!request)
48664864
att->deletePool(new_pool);
48674865

48684866
throw;
@@ -4895,6 +4893,15 @@ void JAttachment::transactRequest(CheckStatusWrapper* user_status, ITransaction*
48954893

48964894
if (out_msg_length)
48974895
{
4896+
// Workaround for GPRE that generated unneeded blr_send
4897+
if ((request->req_flags & req_active)
4898+
&& request->req_operation == Request::req_send)
4899+
{
4900+
request->req_flags &= ~req_stall;
4901+
request->req_operation = Request::req_proceed;
4902+
EXE_looper(tdbb, request, request->req_next);
4903+
}
4904+
48984905
memcpy(out_msg, outMessage->getBuffer(request), out_msg_length);
48994906
}
49004907

@@ -4904,6 +4911,9 @@ void JAttachment::transactRequest(CheckStatusWrapper* user_status, ITransaction*
49044911
}
49054912
catch (const Exception& ex)
49064913
{
4914+
if (request)
4915+
CMP_release(tdbb, request);
4916+
49074917
transliterateException(tdbb, ex, user_status, "JAttachment::transactRequest");
49084918
return;
49094919
}

0 commit comments

Comments
 (0)