8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 21:23:04 +01:00

Fixed bug #8056 : "Too many temporary blobs" with blob_append when select a stored procedue using rows-clause

This commit is contained in:
Vlad Khorsun 2024-03-21 12:38:05 +02:00
parent bd00da8262
commit c353de4e0d

View File

@ -677,7 +677,7 @@ void EXE_receive(thread_db* tdbb,
// ASF: temporary blobs returned to the client should not be released // ASF: temporary blobs returned to the client should not be released
// with the request, but in the transaction end. // 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) 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(); 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.locate(id->bid_temp_id()))
{ {
current->bli_request->req_blobs.fastRemove(); current->bli_request->req_blobs.fastRemove();
@ -704,7 +705,7 @@ void EXE_receive(thread_db* tdbb,
current->bli_blob_object->BLB_close(tdbb); current->bli_blob_object->BLB_close(tdbb);
} }
} }
else else if (top_level)
{ {
transaction->checkBlob(tdbb, id, NULL, false); transaction->checkBlob(tdbb, id, NULL, false);
} }