mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 16:03:02 +01:00
Fixed bug CORE-1649 : AV when recursive query used MERGE JOIN in execution plan
This commit is contained in:
parent
1f8bcc8d87
commit
d3c2482800
@ -3678,16 +3678,12 @@ bool RSBRecurse::get(thread_db* tdbb, RecordSource* rsb, irsb_recurse* irsb)
|
|||||||
irsb->irsb_data = FB_NEW(*request->req_pool) char[record->rec_length];
|
irsb->irsb_data = FB_NEW(*request->req_pool) char[record->rec_length];
|
||||||
memcpy(irsb->irsb_data, record->rec_data, record->rec_length);
|
memcpy(irsb->irsb_data, record->rec_data, record->rec_length);
|
||||||
|
|
||||||
// (Re-)Open a new child stream & reset record number
|
|
||||||
rsb_ptr = &rsb->rsb_arg[2];
|
|
||||||
if (irsb->irsb_level > 1) {
|
|
||||||
RSE_close(tdbb, *rsb_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
irsb_recurse r = *irsb;
|
irsb_recurse r = *irsb;
|
||||||
memset(irsb, 0, inner_size);
|
memset(irsb, 0, inner_size);
|
||||||
*irsb = r;
|
*irsb = r;
|
||||||
|
|
||||||
|
// (Re-)Open a new child stream & reset record number
|
||||||
|
rsb_ptr = &rsb->rsb_arg[2];
|
||||||
RSE_open(tdbb, *rsb_ptr);
|
RSE_open(tdbb, *rsb_ptr);
|
||||||
|
|
||||||
irsb->irsb_level++;
|
irsb->irsb_level++;
|
||||||
|
Loading…
Reference in New Issue
Block a user