From c353de4e0da6678288f577f653f3c8ec28dec710 Mon Sep 17 00:00:00 2001 From: Vlad Khorsun Date: Thu, 21 Mar 2024 12:38:05 +0200 Subject: [PATCH] Fixed bug #8056 : "Too many temporary blobs" with blob_append when select a stored procedue using rows-clause --- src/jrd/exe.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/jrd/exe.cpp b/src/jrd/exe.cpp index e2bc658639..f30be3c66f 100644 --- a/src/jrd/exe.cpp +++ b/src/jrd/exe.cpp @@ -677,7 +677,7 @@ void EXE_receive(thread_db* tdbb, // ASF: temporary blobs returned to the client should not be released // with the request, but in the transaction end. - if (top_level) + if (top_level || transaction->tra_temp_blobs_count) { for (int i = 0; i < format->fmt_count; ++i) { @@ -691,7 +691,8 @@ void EXE_receive(thread_db* tdbb, { BlobIndex* current = &transaction->tra_blobs->current(); - if (current->bli_request && + if (top_level && + current->bli_request && current->bli_request->req_blobs.locate(id->bid_temp_id())) { current->bli_request->req_blobs.fastRemove(); @@ -704,7 +705,7 @@ void EXE_receive(thread_db* tdbb, current->bli_blob_object->BLB_close(tdbb); } } - else + else if (top_level) { transaction->checkBlob(tdbb, id, NULL, false); }